{"action":"created","issue":{"url":"https://api.github.com/repos/TestAnything/Specification/issues/15","labels_url":"https://api.github.com/repos/TestAnything/Specification/issues/15/labels{/name}","comments_url":"https://api.github.com/repos/TestAnything/Specification/issues/15/comments","events_url":"https://api.github.com/repos/TestAnything/Specification/issues/15/events","html_url":"https://github.com/TestAnything/Specification/issues/15","id":56931229,"number":15,"title":"Concurrency should be supported.","user":{"login":"exodist","id":73914,"avatar_url":"https://avatars.githubusercontent.com/u/73914?v=3","gravatar_id":"","url":"https://api.github.com/users/exodist","html_url":"https://github.com/exodist","followers_url":"https://api.github.com/users/exodist/followers","following_url":"https://api.github.com/users/exodist/following{/other_user}","gists_url":"https://api.github.com/users/exodist/gists{/gist_id}","starred_url":"https://api.github.com/users/exodist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/exodist/subscriptions","organizations_url":"https://api.github.com/users/exodist/orgs","repos_url":"https://api.github.com/users/exodist/repos","events_url":"https://api.github.com/users/exodist/events{/privacy}","received_events_url":"https://api.github.com/users/exodist/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-02-07T23:48:03Z","updated_at":"2015-02-08T05:52:43Z","closed_at":null,"body":"The new TAP should have explicit concurrency support, that is where TAP can be generated via multiple threads.\r\n\r\nNote: For most things there is no guarantee of atomic writes, but that is not TAP's problem, so lets skip over that and assume that the generator will only let 1 child write at a time, but allow children to write lines inter-weaved.\r\n\r\nOne simple thing to do is #14 which simply makes test order unimportant so long as no numbers are completely missing. This solves the problem for basic ok's. This can also solve the problem for #2 if we use the 1.2.3 syntax. However if we do not have numbers enabled we loose the gains as subtest results are no longer easily linked to their subtest in a concurrent producer.\r\n\r\nIn #2 I suggested the ability to prefix any line of output with a test number followed by a colon... but this fails to solve the concurrency problem when test numbers are turned off.\r\n\r\nI got a suggestion from someone that we use thread/proc ids. So here is a proposal:\r\n\r\n```\r\n1..10\r\nok - first, in parent\r\nok - second in parent\r\nt1001 ok - first in thread\r\nt1001 s1..2\r\nt1001 ok . - subtest result 1\r\nt1001 ok . - subtest result 2\r\nt1001 # This is a diag in the child thread\r\nt1001 ok\r\n```\r\n\r\nEssentially the proposal is this: ANY line of output can be prefixed by a sequence starting with a single letter, followed by only digits then ended with whitespace. All lines with the same prefix are associated.  No prefix is the default prefix, and all lines with no prefix are grouped.\r\n\r\nAnother thing I added here is the subtest plan prefixed with an 's'. I will mention this possibility in #2 shortly."},"comment":{"url":"https://api.github.com/repos/TestAnything/Specification/issues/comments/73398323","html_url":"https://github.com/TestAnything/Specification/issues/15#issuecomment-73398323","issue_url":"https://api.github.com/repos/TestAnything/Specification/issues/15","id":73398323,"user":{"login":"jonathanKingston","id":338988,"avatar_url":"https://avatars.githubusercontent.com/u/338988?v=3","gravatar_id":"","url":"https://api.github.com/users/jonathanKingston","html_url":"https://github.com/jonathanKingston","followers_url":"https://api.github.com/users/jonathanKingston/followers","following_url":"https://api.github.com/users/jonathanKingston/following{/other_user}","gists_url":"https://api.github.com/users/jonathanKingston/gists{/gist_id}","starred_url":"https://api.github.com/users/jonathanKingston/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonathanKingston/subscriptions","organizations_url":"https://api.github.com/users/jonathanKingston/orgs","repos_url":"https://api.github.com/users/jonathanKingston/repos","events_url":"https://api.github.com/users/jonathanKingston/events{/privacy}","received_events_url":"https://api.github.com/users/jonathanKingston/received_events","type":"User","site_admin":false},"created_at":"2015-02-08T05:52:43Z","updated_at":"2015-02-08T05:52:43Z","body":"Not a fan of this syntax really, I think it adds more complexity to a simple problem. #14 keeps things much simpler and retaining subtest nesting can be achieved in other ways (for example 1.x.x).\r\nProc id's also don't really hold any value once produced and to match the tests up.\r\n\r\nI'm also not entirely sure how it would help with subtest matching, assuming you had lots of processes and sub processes parsing each test the proc id wouldn't help unless you provided which processes spawned other processes.\r\nProcess id's would show the relationship between child and parent tests but if the process wasn't responsible for the whole arm of the tree from 1 -> 1.4.3.45 for example, then the consumer will struggle to work out the relationships of the tests. \r\n\r\nIt also runs against what TAP is about, human readable test output."}}