{"action":"created","issue":{"url":"https://api.github.com/repos/nunit/nunit/issues/1941","repository_url":"https://api.github.com/repos/nunit/nunit","labels_url":"https://api.github.com/repos/nunit/nunit/issues/1941/labels{/name}","comments_url":"https://api.github.com/repos/nunit/nunit/issues/1941/comments","events_url":"https://api.github.com/repos/nunit/nunit/issues/1941/events","html_url":"https://github.com/nunit/nunit/issues/1941","id":197922173,"number":1941,"title":"Use dictionary-based property for test run parameters","user":{"login":"jnm2","id":8040367,"avatar_url":"https://avatars.githubusercontent.com/u/8040367?v=3","gravatar_id":"","url":"https://api.github.com/users/jnm2","html_url":"https://github.com/jnm2","followers_url":"https://api.github.com/users/jnm2/followers","following_url":"https://api.github.com/users/jnm2/following{/other_user}","gists_url":"https://api.github.com/users/jnm2/gists{/gist_id}","starred_url":"https://api.github.com/users/jnm2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jnm2/subscriptions","organizations_url":"https://api.github.com/users/jnm2/orgs","repos_url":"https://api.github.com/users/jnm2/repos","events_url":"https://api.github.com/users/jnm2/events{/privacy}","received_events_url":"https://api.github.com/users/jnm2/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":15,"created_at":"2016-12-28T21:58:37Z","updated_at":"2016-12-29T18:04:22Z","closed_at":null,"body":"This issue tracks the orchestration of the work assigned to me by @CharliePoole in https://github.com/nunit/nunit/issues/1885#issuecomment-268872044.\r\n\r\n * ~~Superseding~~ Supplementing the string-based test parameters property with a dictionary-based one. Decouples parsing test parameters between the various runners, from each other and from the framework which test assemblies happen to be built against.\r\n * Providing backward compatibility for both old runners with new framework and old framework with new runners.\r\n\r\n- [x] Framework: https://github.com/nunit/nunit/pull/1942, commit https://github.com/nunit/nunit/pull/1942/commits/e68a0e1959c35d5aaa131097e160a96cf91db468\r\n- [x] NUnitLite: https://github.com/nunit/nunit/pull/1942, commit https://github.com/nunit/nunit/pull/1942/commits/0426e4c30290d270918fe952a49bf509ff923025\r\n- [x] nunit3-vs-adapter: https://github.com/nunit/nunit3-vs-adapter/pull/289\r\n- [x] nunit-console: https://github.com/nunit/nunit-console/pull/155\r\n- [x] dotnet-test-nunit: https://github.com/nunit/dotnet-test-nunit/pull/96\r\n     - [x] nunit.portable.agent: https://github.com/nunit/nunit.portable.agent/pull/20\r\n- [ ] <s>nunit-gui</s> Does not seem to have a concept of test parameters?\r\n- [ ] Any others?\r\n\r\nDue to the two-way backwards compatibility guarantee, each of these top-level tasks is completely  independent of the others."},"comment":{"url":"https://api.github.com/repos/nunit/nunit/issues/comments/269668722","html_url":"https://github.com/nunit/nunit/issues/1941#issuecomment-269668722","issue_url":"https://api.github.com/repos/nunit/nunit/issues/1941","id":269668722,"user":{"login":"jnm2","id":8040367,"avatar_url":"https://avatars.githubusercontent.com/u/8040367?v=3","gravatar_id":"","url":"https://api.github.com/users/jnm2","html_url":"https://github.com/jnm2","followers_url":"https://api.github.com/users/jnm2/followers","following_url":"https://api.github.com/users/jnm2/following{/other_user}","gists_url":"https://api.github.com/users/jnm2/gists{/gist_id}","starred_url":"https://api.github.com/users/jnm2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jnm2/subscriptions","organizations_url":"https://api.github.com/users/jnm2/orgs","repos_url":"https://api.github.com/users/jnm2/repos","events_url":"https://api.github.com/users/jnm2/events{/privacy}","received_events_url":"https://api.github.com/users/jnm2/received_events","type":"User","site_admin":false},"created_at":"2016-12-29T18:04:22Z","updated_at":"2016-12-29T18:04:22Z","body":"@CharliePoole I appreciate the explanation. I am open to any process that I can understand.\r\n\r\nHere's why I thought two PRs would be helpful:\r\n\r\n * I wasn't sure that I would be the one to implement the escaping\r\n * I was pretty sure the escaping conversation would either take a long time or come to the conclusion that there is no bidirectionally backward compatible way to touch it\r\n * Even if the parsing move ships before the semicolon escaping ships, delivered value by solving a blocking issue for the VS test adapter.\r\n\r\nBut that's just one guy's perspective. Would you like me to try to wait these PRs until the semicolon discussion is finished and implemented? That's fine with me.\r\n\r\n> We are not taking parameter-parsing out of the framework. It remains for use with the old property and will even be added to when we do escaping.\r\n\r\nI still protest that it should not be added to. I do not see a way to touch the framework parameter parsing without breaking old-new or new-old. I think it should be frozen and treated as opaque, a compatibility implementation detail behind setting the dictionary.\r\nIf you decide that this back-compat framework parsing should be changed, you cause breaks. If you cause breaks, I'm going to rewind to the part of the conversation where I think it's worlds better to cause a complete break than an infrequent or subtle one. I'd petition to implement the complete break by reusing the `\"TestParameters\"` key for the dictionary.\r\n\r\nWhat *can* be added to is what this PR provides, a way to change the parsing in the runners instead and retaining compatibility.\r\n\r\n\r\n\r\n"}}
{"actor":{"display_login":"jnm2"}}