{"action":"created","comment":{"url":"https://api.github.com/repos/qiime2/qiime2/pulls/comments/71387640","id":71387640,"diff_hunk":"@@ -374,6 +376,93 @@ def test_async(self):\n             self.assertEqual(result.view(list),\n                              [10, 20, 0, 42, 43, 99, -22, 55, 1])\n \n+    def test_markdown_input_section_validation(self):\n+        temp_dir = tempfile.TemporaryDirectory(prefix=\"qiime2-test-temp-\")\n+        root_dir = temp_dir.name\n+        fp = os.path.join(root_dir, \"bad_markdown.md\")\n+\n+        with open(fp, mode=\"w\") as fh:\n+            fh.write(\"\"\"---\n+name: Bad markdown","path":"qiime/sdk/tests/test_method.py","position":20,"original_position":20,"commit_id":"2f3795e324e3074455a6c6d6b1aa4e9ea19d0622","original_commit_id":"2f3795e324e3074455a6c6d6b1aa4e9ea19d0622","user":{"login":"jairideout","id":1847232,"avatar_url":"https://avatars.githubusercontent.com/u/1847232?v=3","gravatar_id":"","url":"https://api.github.com/users/jairideout","html_url":"https://github.com/jairideout","followers_url":"https://api.github.com/users/jairideout/followers","following_url":"https://api.github.com/users/jairideout/following{/other_user}","gists_url":"https://api.github.com/users/jairideout/gists{/gist_id}","starred_url":"https://api.github.com/users/jairideout/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jairideout/subscriptions","organizations_url":"https://api.github.com/users/jairideout/orgs","repos_url":"https://api.github.com/users/jairideout/repos","events_url":"https://api.github.com/users/jairideout/events{/privacy}","received_events_url":"https://api.github.com/users/jairideout/received_events","type":"User","site_admin":false},"body":"Can you put each of the invalid markdown strings into files under `qiime/sdk/tests/data/`? You can then access those files in your tests using:\r\n\r\n```python\r\nfp = pkg_resources.resource_filename('qiime.sdk.tests', 'data/my-markdown-file.md')\r\n```\r\n\r\nSee [this test case](https://github.com/qiime2/qiime2/blob/master/qiime/sdk/tests/test_artifact.py#L256-L257) for an example.","created_at":"2016-07-19T17:45:52Z","updated_at":"2016-07-19T17:45:52Z","html_url":"https://github.com/qiime2/qiime2/pull/96#discussion_r71387640","pull_request_url":"https://api.github.com/repos/qiime2/qiime2/pulls/96","_links":{"self":{"href":"https://api.github.com/repos/qiime2/qiime2/pulls/comments/71387640"},"html":{"href":"https://github.com/qiime2/qiime2/pull/96#discussion_r71387640"},"pull_request":{"href":"https://api.github.com/repos/qiime2/qiime2/pulls/96"}}},"pull_request":{"url":"https://api.github.com/repos/qiime2/qiime2/pulls/96","id":77896358,"html_url":"https://github.com/qiime2/qiime2/pull/96","diff_url":"https://github.com/qiime2/qiime2/pull/96.diff","patch_url":"https://github.com/qiime2/qiime2/pull/96.patch","issue_url":"https://api.github.com/repos/qiime2/qiime2/issues/96","number":96,"state":"open","locked":false,"title":"ENH: Method, validate markdown","user":{"login":"thermokarst","id":274668,"avatar_url":"https://avatars.githubusercontent.com/u/274668?v=3","gravatar_id":"","url":"https://api.github.com/users/thermokarst","html_url":"https://github.com/thermokarst","followers_url":"https://api.github.com/users/thermokarst/followers","following_url":"https://api.github.com/users/thermokarst/following{/other_user}","gists_url":"https://api.github.com/users/thermokarst/gists{/gist_id}","starred_url":"https://api.github.com/users/thermokarst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thermokarst/subscriptions","organizations_url":"https://api.github.com/users/thermokarst/orgs","repos_url":"https://api.github.com/users/thermokarst/repos","events_url":"https://api.github.com/users/thermokarst/events{/privacy}","received_events_url":"https://api.github.com/users/thermokarst/received_events","type":"User","site_admin":false},"body":"Adds basic checks for length of `type_tuple`, raises an exception if value is not two items long.\r\n\r\nQuestions:\r\n- Do we need to raise separate errors for each metadata section? Or, could this be collapsed down into exception handling in `_split_type_tuple()`?\r\n- If we are keeping the handling as-is, I imagine the error text could use a tune-up. Thoughts?\r\n- Instead of saving temp MD files in the tests, should I be building this up as a permanent bad example in `qiime.core.testing`?\r\n\r\nThanks!","created_at":"2016-07-18T23:29:06Z","updated_at":"2016-07-19T17:45:52Z","closed_at":null,"merged_at":null,"merge_commit_sha":"be45ed7072f81c4c8bf8caaad6cb1989e79433eb","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/qiime2/qiime2/pulls/96/commits","review_comments_url":"https://api.github.com/repos/qiime2/qiime2/pulls/96/comments","review_comment_url":"https://api.github.com/repos/qiime2/qiime2/pulls/comments{/number}","comments_url":"https://api.github.com/repos/qiime2/qiime2/issues/96/comments","statuses_url":"https://api.github.com/repos/qiime2/qiime2/statuses/2f3795e324e3074455a6c6d6b1aa4e9ea19d0622","head":{"label":"thermokarst:validate-markdown","ref":"validate-markdown","sha":"2f3795e324e3074455a6c6d6b1aa4e9ea19d0622","user":{"login":"thermokarst","id":274668,"avatar_url":"https://avatars.githubusercontent.com/u/274668?v=3","gravatar_id":"","url":"https://api.github.com/users/thermokarst","html_url":"https://github.com/thermokarst","followers_url":"https://api.github.com/users/thermokarst/followers","following_url":"https://api.github.com/users/thermokarst/following{/other_user}","gists_url":"https://api.github.com/users/thermokarst/gists{/gist_id}","starred_url":"https://api.github.com/users/thermokarst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thermokarst/subscriptions","organizations_url":"https://api.github.com/users/thermokarst/orgs","repos_url":"https://api.github.com/users/thermokarst/repos","events_url":"https://api.github.com/users/thermokarst/events{/privacy}","received_events_url":"https://api.github.com/users/thermokarst/received_events","type":"User","site_admin":false},"repo":{"id":63639009,"name":"qiime2","full_name":"thermokarst/qiime2","owner":{"login":"thermokarst","id":274668,"avatar_url":"https://avatars.githubusercontent.com/u/274668?v=3","gravatar_id":"","url":"https://api.github.com/users/thermokarst","html_url":"https://github.com/thermokarst","followers_url":"https://api.github.com/users/thermokarst/followers","following_url":"https://api.github.com/users/thermokarst/following{/other_user}","gists_url":"https://api.github.com/users/thermokarst/gists{/gist_id}","starred_url":"https://api.github.com/users/thermokarst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thermokarst/subscriptions","organizations_url":"https://api.github.com/users/thermokarst/orgs","repos_url":"https://api.github.com/users/thermokarst/repos","events_url":"https://api.github.com/users/thermokarst/events{/privacy}","received_events_url":"https://api.github.com/users/thermokarst/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/thermokarst/qiime2","description":"Official repository for the QIIME 2 framework","fork":true,"url":"https://api.github.com/repos/thermokarst/qiime2","forks_url":"https://api.github.com/repos/thermokarst/qiime2/forks","keys_url":"https://api.github.com/repos/thermokarst/qiime2/keys{/key_id}","collaborators_url":"https://api.github.com/repos/thermokarst/qiime2/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/thermokarst/qiime2/teams","hooks_url":"https://api.github.com/repos/thermokarst/qiime2/hooks","issue_events_url":"https://api.github.com/repos/thermokarst/qiime2/issues/events{/number}","events_url":"https://api.github.com/repos/thermokarst/qiime2/events","assignees_url":"https://api.github.com/repos/thermokarst/qiime2/assignees{/user}","branches_url":"https://api.github.com/repos/thermokarst/qiime2/branches{/branch}","tags_url":"https://api.github.com/repos/thermokarst/qiime2/tags","blobs_url":"https://api.github.com/repos/thermokarst/qiime2/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/thermokarst/qiime2/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/thermokarst/qiime2/git/refs{/sha}","trees_url":"https://api.github.com/repos/thermokarst/qiime2/git/trees{/sha}","statuses_url":"https://api.github.com/repos/thermokarst/qiime2/statuses/{sha}","languages_url":"https://api.github.com/repos/thermokarst/qiime2/languages","stargazers_url":"https://api.github.com/repos/thermokarst/qiime2/stargazers","contributors_url":"https://api.github.com/repos/thermokarst/qiime2/contributors","subscribers_url":"https://api.github.com/repos/thermokarst/qiime2/subscribers","subscription_url":"https://api.github.com/repos/thermokarst/qiime2/subscription","commits_url":"https://api.github.com/repos/thermokarst/qiime2/commits{/sha}","git_commits_url":"https://api.github.com/repos/thermokarst/qiime2/git/commits{/sha}","comments_url":"https://api.github.com/repos/thermokarst/qiime2/comments{/number}","issue_comment_url":"https://api.github.com/repos/thermokarst/qiime2/issues/comments{/number}","contents_url":"https://api.github.com/repos/thermokarst/qiime2/contents/{+path}","compare_url":"https://api.github.com/repos/thermokarst/qiime2/compare/{base}...{head}","merges_url":"https://api.github.com/repos/thermokarst/qiime2/merges","archive_url":"https://api.github.com/repos/thermokarst/qiime2/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/thermokarst/qiime2/downloads","issues_url":"https://api.github.com/repos/thermokarst/qiime2/issues{/number}","pulls_url":"https://api.github.com/repos/thermokarst/qiime2/pulls{/number}","milestones_url":"https://api.github.com/repos/thermokarst/qiime2/milestones{/number}","notifications_url":"https://api.github.com/repos/thermokarst/qiime2/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/thermokarst/qiime2/labels{/name}","releases_url":"https://api.github.com/repos/thermokarst/qiime2/releases{/id}","deployments_url":"https://api.github.com/repos/thermokarst/qiime2/deployments","created_at":"2016-07-18T21:41:24Z","updated_at":"2016-07-18T21:41:25Z","pushed_at":"2016-07-19T13:45:00Z","git_url":"git://github.com/thermokarst/qiime2.git","ssh_url":"git@github.com:thermokarst/qiime2.git","clone_url":"https://github.com/thermokarst/qiime2.git","svn_url":"https://github.com/thermokarst/qiime2","homepage":"http://2.qiime.org","size":203,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"qiime2:master","ref":"master","sha":"c031af4e82fe7a966d6799a7f96208ac1c8699e7","user":{"login":"qiime2","id":18176583,"avatar_url":"https://avatars.githubusercontent.com/u/18176583?v=3","gravatar_id":"","url":"https://api.github.com/users/qiime2","html_url":"https://github.com/qiime2","followers_url":"https://api.github.com/users/qiime2/followers","following_url":"https://api.github.com/users/qiime2/following{/other_user}","gists_url":"https://api.github.com/users/qiime2/gists{/gist_id}","starred_url":"https://api.github.com/users/qiime2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qiime2/subscriptions","organizations_url":"https://api.github.com/users/qiime2/orgs","repos_url":"https://api.github.com/users/qiime2/repos","events_url":"https://api.github.com/users/qiime2/events{/privacy}","received_events_url":"https://api.github.com/users/qiime2/received_events","type":"Organization","site_admin":false},"repo":{"id":50697819,"name":"qiime2","full_name":"qiime2/qiime2","owner":{"login":"qiime2","id":18176583,"avatar_url":"https://avatars.githubusercontent.com/u/18176583?v=3","gravatar_id":"","url":"https://api.github.com/users/qiime2","html_url":"https://github.com/qiime2","followers_url":"https://api.github.com/users/qiime2/followers","following_url":"https://api.github.com/users/qiime2/following{/other_user}","gists_url":"https://api.github.com/users/qiime2/gists{/gist_id}","starred_url":"https://api.github.com/users/qiime2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qiime2/subscriptions","organizations_url":"https://api.github.com/users/qiime2/orgs","repos_url":"https://api.github.com/users/qiime2/repos","events_url":"https://api.github.com/users/qiime2/events{/privacy}","received_events_url":"https://api.github.com/users/qiime2/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/qiime2/qiime2","description":"Official repository for the QIIME 2 framework","fork":false,"url":"https://api.github.com/repos/qiime2/qiime2","forks_url":"https://api.github.com/repos/qiime2/qiime2/forks","keys_url":"https://api.github.com/repos/qiime2/qiime2/keys{/key_id}","collaborators_url":"https://api.github.com/repos/qiime2/qiime2/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/qiime2/qiime2/teams","hooks_url":"https://api.github.com/repos/qiime2/qiime2/hooks","issue_events_url":"https://api.github.com/repos/qiime2/qiime2/issues/events{/number}","events_url":"https://api.github.com/repos/qiime2/qiime2/events","assignees_url":"https://api.github.com/repos/qiime2/qiime2/assignees{/user}","branches_url":"https://api.github.com/repos/qiime2/qiime2/branches{/branch}","tags_url":"https://api.github.com/repos/qiime2/qiime2/tags","blobs_url":"https://api.github.com/repos/qiime2/qiime2/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/qiime2/qiime2/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/qiime2/qiime2/git/refs{/sha}","trees_url":"https://api.github.com/repos/qiime2/qiime2/git/trees{/sha}","statuses_url":"https://api.github.com/repos/qiime2/qiime2/statuses/{sha}","languages_url":"https://api.github.com/repos/qiime2/qiime2/languages","stargazers_url":"https://api.github.com/repos/qiime2/qiime2/stargazers","contributors_url":"https://api.github.com/repos/qiime2/qiime2/contributors","subscribers_url":"https://api.github.com/repos/qiime2/qiime2/subscribers","subscription_url":"https://api.github.com/repos/qiime2/qiime2/subscription","commits_url":"https://api.github.com/repos/qiime2/qiime2/commits{/sha}","git_commits_url":"https://api.github.com/repos/qiime2/qiime2/git/commits{/sha}","comments_url":"https://api.github.com/repos/qiime2/qiime2/comments{/number}","issue_comment_url":"https://api.github.com/repos/qiime2/qiime2/issues/comments{/number}","contents_url":"https://api.github.com/repos/qiime2/qiime2/contents/{+path}","compare_url":"https://api.github.com/repos/qiime2/qiime2/compare/{base}...{head}","merges_url":"https://api.github.com/repos/qiime2/qiime2/merges","archive_url":"https://api.github.com/repos/qiime2/qiime2/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/qiime2/qiime2/downloads","issues_url":"https://api.github.com/repos/qiime2/qiime2/issues{/number}","pulls_url":"https://api.github.com/repos/qiime2/qiime2/pulls{/number}","milestones_url":"https://api.github.com/repos/qiime2/qiime2/milestones{/number}","notifications_url":"https://api.github.com/repos/qiime2/qiime2/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/qiime2/qiime2/labels{/name}","releases_url":"https://api.github.com/repos/qiime2/qiime2/releases{/id}","deployments_url":"https://api.github.com/repos/qiime2/qiime2/deployments","created_at":"2016-01-29T23:15:03Z","updated_at":"2016-07-19T00:07:48Z","pushed_at":"2016-07-19T13:49:01Z","git_url":"git://github.com/qiime2/qiime2.git","ssh_url":"git@github.com:qiime2/qiime2.git","clone_url":"https://github.com/qiime2/qiime2.git","svn_url":"https://github.com/qiime2/qiime2","homepage":"http://2.qiime.org","size":312,"stargazers_count":16,"watchers_count":16,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":14,"mirror_url":null,"open_issues_count":27,"forks":14,"open_issues":27,"watchers":16,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/qiime2/qiime2/pulls/96"},"html":{"href":"https://github.com/qiime2/qiime2/pull/96"},"issue":{"href":"https://api.github.com/repos/qiime2/qiime2/issues/96"},"comments":{"href":"https://api.github.com/repos/qiime2/qiime2/issues/96/comments"},"review_comments":{"href":"https://api.github.com/repos/qiime2/qiime2/pulls/96/comments"},"review_comment":{"href":"https://api.github.com/repos/qiime2/qiime2/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/qiime2/qiime2/pulls/96/commits"},"statuses":{"href":"https://api.github.com/repos/qiime2/qiime2/statuses/2f3795e324e3074455a6c6d6b1aa4e9ea19d0622"}}}}
{"actor":{"display_login":"jairideout"}}