{"action":"created","comment":{"url":"https://api.github.com/repos/EBIvariation/vcf-validator/pulls/comments/76760502","id":76760502,"diff_hunk":"@@ -52,79 +52,124 @@ namespace ebi\n       return validator.is_valid();\n   }\n \n-  TEST_CASE(\"Integration test: Fixing a VCF with duplicates\", \"[debugulator]\")\n+  std::tuple<bool, bool, std::string, long> fix_file(boost::filesystem::path path, vcf::Version version)\n   {\n-      auto path = boost::filesystem::path(\"test/input_files/v4.1/failed/failed_body_duplicated_000.vcf\");\n-      SECTION(path.string())\n-      {\n-          std::ifstream file{path.c_str()};\n-          if (not file) {\n-              throw std::runtime_error{\"test file not found: \" + path.string()};\n+      std::ifstream file{path.c_str()};\n+      if (not file) {\n+          throw std::runtime_error{\"test file not found: \" + path.string()};\n+      }\n+\n+      auto validator = ebi::vcf::build_parser(path.string(), ebi::vcf::ValidationLevel::warning, version);\n+\n+      // here we check that the file is not valid:\n+      // file: ifstream from test files\n+      // reports: ReportWriters (one OdbReportRW writing to database \"errors_before\")\n+      auto db_path = boost::filesystem::path{\"/tmp/\"} / path.filename();\n+      db_path += \".debugulator_test.errors_before.db\";\n+      boost::filesystem::remove(db_path);   // make sure the dbs doesn't exist from previous runs\n+      auto report = new ebi::vcf::OdbReportRW{db_path.string()};\n+      std::vector<std::unique_ptr<ebi::vcf::ReportWriter>> reports;\n+      reports.emplace_back(report);\n+      bool first_validation = is_valid_vcf_file(file, *validator, reports);\n+\n+\n+      // now we fix the file\n+      // file: rewind the same ifstream as before\n+      // report: SqliteReportRW to read the errors. it must be flushed before this\n+      // fixed_vcf: writing result vcf to a stringstream in memory\n+      file.clear();\n+      file.seekg(0);\n+      report->flush();\n+      std::stringstream fixed_vcf;\n+      vcf::debugulator::fix_vcf_file(file, *report, fixed_vcf);\n+      file.close();\n+      long fixed_vcf_lines = count_lines(fixed_vcf);\n+\n+\n+      // here we check that the fixed file is valid:\n+      // fixed_vcf: stringstream the debugulator::fix_vcf_file wrote\n+      // reports: ReportWriters (one OdbReportRW writing to database \"errors_after\")\n+      fixed_vcf.seekg(0);\n+      auto validator2 = ebi::vcf::build_parser(path.string(), ebi::vcf::ValidationLevel::warning, version);\n+      auto db_path_after = boost::filesystem::path{\"/tmp/\"} / path.filename();\n+      db_path_after += \".debugulator_test.errors_after.db\";\n+      boost::filesystem::remove(db_path_after);   // make sure the dbs doesn't exist from previous runs\n+      auto output_after = new ebi::vcf::OdbReportRW{db_path_after.string()};\n+      reports.clear();\n+      reports.emplace_back(output_after);\n+      bool successfully_fixed = is_valid_vcf_file(fixed_vcf, *validator2, reports);\n+\n+      auto fixed_vcf_path = boost::filesystem::path{\"/tmp/\"} / path.filename();\n+      fixed_vcf_path += \".debugulator_test.fixed.vcf\";\n+      boost::filesystem::remove(fixed_vcf_path);\n+      std::stringstream debug_message;\n+      if (not successfully_fixed) {\n+          // dump fixed file to manually inspect\n+          std::ofstream fixed_file{fixed_vcf_path.string()};\n+          fixed_file << fixed_vcf.str();\n+          fixed_file.close();\n+          debug_message << \"This test failed, you can see the related data at: \\n\" << db_path_after.string() << \"\\n\";\n+          debug_message << db_path.string() << \"\\n\" << fixed_vcf_path.string() << std::endl;\n+      } else {\n+          // clean report dbs\n+          boost::filesystem::remove(db_path);\n+          boost::filesystem::remove(db_path_after);\n+      }\n+      return std::tuple<bool, bool, std::string, long>{first_validation,\n+                                                       successfully_fixed,\n+                                                       debug_message.str(),\n+                                                       fixed_vcf_lines};\n+  }\n+\n+  TEST_CASE(\"Fixing a VCF with duplicates\", \"[debugulator]\")\n+  {\n+      ebi::vcf::Version version = ebi::vcf::Version::v41;\n+      bool first_validation, validation_after_fixing;\n+      std::string debug_message;\n+      long lines;\n+      for (size_t i = 1; i <= 3; ++i) {\n+          auto path = boost::filesystem::path(\"test/input_files/v4.\" + std::to_string(i) + \"/failed/failed_body_duplicated_001.vcf\");\n+          SECTION(path.string()) {\n+              std::tie(first_validation, validation_after_fixing, debug_message, lines) = fix_file(path, version);\n+              CHECK_FALSE(first_validation);\n+              INFO(debug_message);\n+              CHECK(validation_after_fixing);\n+              CHECK(lines == 6);\n+          }\n+          version = static_cast<ebi::vcf::Version>(i);\n+      }\n+  }\n+\n+  TEST_CASE(\"Fixing a VCF with wrong INFO fields\", \"[debugulator]\")\n+  {\n+      boost::filesystem::path path;\n+      ebi::vcf::Version version = ebi::vcf::Version::v41;\n+      bool first_validation, validation_after_fixing;\n+      std::string debug_message;\n+      long lines;\n+\n+      for (size_t i = 1; i <= 3; ++i) {\n+          // syntax error, AC must be a positive integer\n+          path = boost::filesystem::path(\"test/input_files/v4.\" + std::to_string(i) + \"/failed/failed_body_info_038.vcf\");\n+          SECTION(path.string()) {\n+              std::tie(first_validation, validation_after_fixing, debug_message, lines) = fix_file(path, version);\n+              CHECK_FALSE(first_validation);\n+              INFO(debug_message);\n+              CHECK(validation_after_fixing);\n+              CHECK(lines == 11);\n           }\n \n-          auto source = ebi::vcf::Source{path.string(), ebi::vcf::InputFormat::VCF_FILE_VCF, ebi::vcf::Version::v41};\n-          auto records = std::vector<ebi::vcf::Record>{};\n-\n-          auto validator = ebi::vcf::FullValidator_v41{\n-                  std::make_shared<ebi::vcf::Source>(source),\n-                  std::make_shared<std::vector<ebi::vcf::Record>>(records)};\n-\n-          // here we check that the file is not valid:\n-          // file: ifstream from test files\n-          // reports: ReportWriters (one SqliteReportRW writing to database \"errors_before\")\n-          auto db_path = boost::filesystem::path{\"/tmp/\"} / path.filename();\n-          db_path += \".debugulator_test.errors_before.db\";\n-          boost::filesystem::remove(db_path);   // make sure the dbs doesn't exist from previous runs\n-          auto report = new ebi::vcf::SqliteReportRW{db_path.string()};\n-          std::vector<std::unique_ptr<ebi::vcf::ReportWriter>> reports;\n-          reports.emplace_back(report);\n-          CHECK_FALSE(is_valid_vcf_file(file, validator, reports));\n-\n-\n-          // now we fix the file\n-          // file: rewind the same ifstream as before\n-          // report: SqliteReportRW to read the errors. it must be flushed before this\n-          // fixed_vcf: writing result vcf to a stringstream in memory\n-          file.clear();\n-          file.seekg(0);\n-          report->flush();\n-          std::stringstream fixed_vcf;\n-          vcf::debugulator::fix_vcf_file(file, *report, fixed_vcf);\n-          file.close();\n-\n-          // here we check that the fixed file is valid:\n-          // fixed_vcf: stringstream the debugulator::fix_vcf_file wrote\n-          // reports: ReportWriters (one SqliteReportRW writing to database \"errors_after\")\n-          fixed_vcf.seekg(0);\n-          auto validator2 = ebi::vcf::FullValidator_v41{\n-                  std::make_shared<ebi::vcf::Source>(source),\n-                  std::make_shared<std::vector<ebi::vcf::Record>>(records)};\n-          auto db_path_after = boost::filesystem::path{\"/tmp/\"} / path.filename();\n-          db_path_after += \".debugulator_test.errors_after.db\";\n-          boost::filesystem::remove(db_path_after);   // make sure the dbs doesn't exist from previous runs\n-          auto output_after = new ebi::vcf::SqliteReportRW{db_path_after.string()};\n-          reports.clear();\n-          reports.emplace_back(output_after);\n-          bool successfully_fixed = is_valid_vcf_file(fixed_vcf, validator2, reports);\n-\n-          CHECK(successfully_fixed);\n-\n-          auto fixed_vcf_path = boost::filesystem::path{\"/tmp/\"} / path.filename();\n-          fixed_vcf_path += \".debugulator_test.fixed.vcf\";\n-          boost::filesystem::remove(fixed_vcf_path);\n-          if (not successfully_fixed) {\n-              // dump fixed file to manually inspect\n-              std::ofstream fixed_file{fixed_vcf_path.string()};\n-              fixed_file << fixed_vcf.str();\n-              fixed_file.close();\n-              std::cout << \"This test failed, you can see the related data at: \" << db_path_after.string() << \", \";\n-              std::cout << db_path.string() << \" and \" << fixed_vcf_path.string() << std::endl;\n-          } else {\n-              // clean report dbs\n-              boost::filesystem::remove(db_path);\n-              boost::filesystem::remove(db_path_after);\n+          // semantic error, the number of values doesn't match the description in the meta section\n+          path = boost::filesystem::path(\"test/input_files/v4.\" + std::to_string(i) + \"/failed/failed_body_info_034.vcf\");\n+          SECTION(path.string())\n+          {\n+              std::tie(first_validation, validation_after_fixing, debug_message, lines) = fix_file(path, version);\n+              CHECK_FALSE(first_validation);\n+              INFO(debug_message);\n+              CHECK(validation_after_fixing);\n+              CHECK(lines == 5);\n           }\n+          version = static_cast<ebi::vcf::Version>(i);\n       }\n   }\n }\n-","path":"test/vcf/debugulator_integration_test.cpp","position":205,"original_position":205,"commit_id":"7224fef4b0bcac507599bc14c10c845f8db413cc","original_commit_id":"7224fef4b0bcac507599bc14c10c845f8db413cc","user":{"login":"cyenyxe","id":1433407,"avatar_url":"https://avatars.githubusercontent.com/u/1433407?v=3","gravatar_id":"","url":"https://api.github.com/users/cyenyxe","html_url":"https://github.com/cyenyxe","followers_url":"https://api.github.com/users/cyenyxe/followers","following_url":"https://api.github.com/users/cyenyxe/following{/other_user}","gists_url":"https://api.github.com/users/cyenyxe/gists{/gist_id}","starred_url":"https://api.github.com/users/cyenyxe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cyenyxe/subscriptions","organizations_url":"https://api.github.com/users/cyenyxe/orgs","repos_url":"https://api.github.com/users/cyenyxe/repos","events_url":"https://api.github.com/users/cyenyxe/events{/privacy}","received_events_url":"https://api.github.com/users/cyenyxe/received_events","type":"User","site_admin":false},"body":"A test for files that don't require fixing would be also interesting: the debugulator should work fine under those circumstances too.","created_at":"2016-08-30T09:26:57Z","updated_at":"2016-08-30T09:26:57Z","html_url":"https://github.com/EBIvariation/vcf-validator/pull/43#discussion_r76760502","pull_request_url":"https://api.github.com/repos/EBIvariation/vcf-validator/pulls/43","_links":{"self":{"href":"https://api.github.com/repos/EBIvariation/vcf-validator/pulls/comments/76760502"},"html":{"href":"https://github.com/EBIvariation/vcf-validator/pull/43#discussion_r76760502"},"pull_request":{"href":"https://api.github.com/repos/EBIvariation/vcf-validator/pulls/43"}}},"pull_request":{"url":"https://api.github.com/repos/EBIvariation/vcf-validator/pulls/43","id":82868862,"html_url":"https://github.com/EBIvariation/vcf-validator/pull/43","diff_url":"https://github.com/EBIvariation/vcf-validator/pull/43.diff","patch_url":"https://github.com/EBIvariation/vcf-validator/pull/43.patch","issue_url":"https://api.github.com/repos/EBIvariation/vcf-validator/issues/43","number":43,"state":"open","locked":false,"title":"EVA-343 adding fix for invalid INFO fields","user":{"login":"jmmut","id":4750555,"avatar_url":"https://avatars.githubusercontent.com/u/4750555?v=3","gravatar_id":"","url":"https://api.github.com/users/jmmut","html_url":"https://github.com/jmmut","followers_url":"https://api.github.com/users/jmmut/followers","following_url":"https://api.github.com/users/jmmut/following{/other_user}","gists_url":"https://api.github.com/users/jmmut/gists{/gist_id}","starred_url":"https://api.github.com/users/jmmut/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmmut/subscriptions","organizations_url":"https://api.github.com/users/jmmut/orgs","repos_url":"https://api.github.com/users/jmmut/repos","events_url":"https://api.github.com/users/jmmut/events{/privacy}","received_events_url":"https://api.github.com/users/jmmut/received_events","type":"User","site_admin":false},"body":"The first type of fix is just removing the wrong field.\r\n\r\nIf it was the only field in the INFO column, a \".\" is placed.\r\n\r\nAn INFO field qualifies as wrong if it has any syntax error (detected by the ragel part) or any semantic error (detected in record.cpp, as wrong cardinality or wrong type according to its definition in the meta section).","created_at":"2016-08-26T10:52:57Z","updated_at":"2016-08-30T09:26:57Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a356973b446e7e8b05cf979106030395a017f783","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/EBIvariation/vcf-validator/pulls/43/commits","review_comments_url":"https://api.github.com/repos/EBIvariation/vcf-validator/pulls/43/comments","review_comment_url":"https://api.github.com/repos/EBIvariation/vcf-validator/pulls/comments{/number}","comments_url":"https://api.github.com/repos/EBIvariation/vcf-validator/issues/43/comments","statuses_url":"https://api.github.com/repos/EBIvariation/vcf-validator/statuses/7224fef4b0bcac507599bc14c10c845f8db413cc","head":{"label":"jmmut:feature/debugulator-info","ref":"feature/debugulator-info","sha":"7224fef4b0bcac507599bc14c10c845f8db413cc","user":{"login":"jmmut","id":4750555,"avatar_url":"https://avatars.githubusercontent.com/u/4750555?v=3","gravatar_id":"","url":"https://api.github.com/users/jmmut","html_url":"https://github.com/jmmut","followers_url":"https://api.github.com/users/jmmut/followers","following_url":"https://api.github.com/users/jmmut/following{/other_user}","gists_url":"https://api.github.com/users/jmmut/gists{/gist_id}","starred_url":"https://api.github.com/users/jmmut/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmmut/subscriptions","organizations_url":"https://api.github.com/users/jmmut/orgs","repos_url":"https://api.github.com/users/jmmut/repos","events_url":"https://api.github.com/users/jmmut/events{/privacy}","received_events_url":"https://api.github.com/users/jmmut/received_events","type":"User","site_admin":false},"repo":{"id":57974971,"name":"vcf-validator","full_name":"jmmut/vcf-validator","owner":{"login":"jmmut","id":4750555,"avatar_url":"https://avatars.githubusercontent.com/u/4750555?v=3","gravatar_id":"","url":"https://api.github.com/users/jmmut","html_url":"https://github.com/jmmut","followers_url":"https://api.github.com/users/jmmut/followers","following_url":"https://api.github.com/users/jmmut/following{/other_user}","gists_url":"https://api.github.com/users/jmmut/gists{/gist_id}","starred_url":"https://api.github.com/users/jmmut/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmmut/subscriptions","organizations_url":"https://api.github.com/users/jmmut/orgs","repos_url":"https://api.github.com/users/jmmut/repos","events_url":"https://api.github.com/users/jmmut/events{/privacy}","received_events_url":"https://api.github.com/users/jmmut/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jmmut/vcf-validator","description":"Validator for VCF implemented using C++11","fork":true,"url":"https://api.github.com/repos/jmmut/vcf-validator","forks_url":"https://api.github.com/repos/jmmut/vcf-validator/forks","keys_url":"https://api.github.com/repos/jmmut/vcf-validator/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jmmut/vcf-validator/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jmmut/vcf-validator/teams","hooks_url":"https://api.github.com/repos/jmmut/vcf-validator/hooks","issue_events_url":"https://api.github.com/repos/jmmut/vcf-validator/issues/events{/number}","events_url":"https://api.github.com/repos/jmmut/vcf-validator/events","assignees_url":"https://api.github.com/repos/jmmut/vcf-validator/assignees{/user}","branches_url":"https://api.github.com/repos/jmmut/vcf-validator/branches{/branch}","tags_url":"https://api.github.com/repos/jmmut/vcf-validator/tags","blobs_url":"https://api.github.com/repos/jmmut/vcf-validator/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jmmut/vcf-validator/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jmmut/vcf-validator/git/refs{/sha}","trees_url":"https://api.github.com/repos/jmmut/vcf-validator/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jmmut/vcf-validator/statuses/{sha}","languages_url":"https://api.github.com/repos/jmmut/vcf-validator/languages","stargazers_url":"https://api.github.com/repos/jmmut/vcf-validator/stargazers","contributors_url":"https://api.github.com/repos/jmmut/vcf-validator/contributors","subscribers_url":"https://api.github.com/repos/jmmut/vcf-validator/subscribers","subscription_url":"https://api.github.com/repos/jmmut/vcf-validator/subscription","commits_url":"https://api.github.com/repos/jmmut/vcf-validator/commits{/sha}","git_commits_url":"https://api.github.com/repos/jmmut/vcf-validator/git/commits{/sha}","comments_url":"https://api.github.com/repos/jmmut/vcf-validator/comments{/number}","issue_comment_url":"https://api.github.com/repos/jmmut/vcf-validator/issues/comments{/number}","contents_url":"https://api.github.com/repos/jmmut/vcf-validator/contents/{+path}","compare_url":"https://api.github.com/repos/jmmut/vcf-validator/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jmmut/vcf-validator/merges","archive_url":"https://api.github.com/repos/jmmut/vcf-validator/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jmmut/vcf-validator/downloads","issues_url":"https://api.github.com/repos/jmmut/vcf-validator/issues{/number}","pulls_url":"https://api.github.com/repos/jmmut/vcf-validator/pulls{/number}","milestones_url":"https://api.github.com/repos/jmmut/vcf-validator/milestones{/number}","notifications_url":"https://api.github.com/repos/jmmut/vcf-validator/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jmmut/vcf-validator/labels{/name}","releases_url":"https://api.github.com/repos/jmmut/vcf-validator/releases{/id}","deployments_url":"https://api.github.com/repos/jmmut/vcf-validator/deployments","created_at":"2016-05-03T14:20:13Z","updated_at":"2016-06-07T10:15:15Z","pushed_at":"2016-08-26T14:28:12Z","git_url":"git://github.com/jmmut/vcf-validator.git","ssh_url":"git@github.com:jmmut/vcf-validator.git","clone_url":"https://github.com/jmmut/vcf-validator.git","svn_url":"https://github.com/jmmut/vcf-validator","homepage":null,"size":4720,"stargazers_count":0,"watchers_count":0,"language":"C","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":"develop"}},"base":{"label":"EBIvariation:develop","ref":"develop","sha":"529fce2fc0eb1b1af531727d78ca97dd975d1d5f","user":{"login":"EBIvariation","id":6419333,"avatar_url":"https://avatars.githubusercontent.com/u/6419333?v=3","gravatar_id":"","url":"https://api.github.com/users/EBIvariation","html_url":"https://github.com/EBIvariation","followers_url":"https://api.github.com/users/EBIvariation/followers","following_url":"https://api.github.com/users/EBIvariation/following{/other_user}","gists_url":"https://api.github.com/users/EBIvariation/gists{/gist_id}","starred_url":"https://api.github.com/users/EBIvariation/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EBIvariation/subscriptions","organizations_url":"https://api.github.com/users/EBIvariation/orgs","repos_url":"https://api.github.com/users/EBIvariation/repos","events_url":"https://api.github.com/users/EBIvariation/events{/privacy}","received_events_url":"https://api.github.com/users/EBIvariation/received_events","type":"Organization","site_admin":false},"repo":{"id":36810447,"name":"vcf-validator","full_name":"EBIvariation/vcf-validator","owner":{"login":"EBIvariation","id":6419333,"avatar_url":"https://avatars.githubusercontent.com/u/6419333?v=3","gravatar_id":"","url":"https://api.github.com/users/EBIvariation","html_url":"https://github.com/EBIvariation","followers_url":"https://api.github.com/users/EBIvariation/followers","following_url":"https://api.github.com/users/EBIvariation/following{/other_user}","gists_url":"https://api.github.com/users/EBIvariation/gists{/gist_id}","starred_url":"https://api.github.com/users/EBIvariation/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EBIvariation/subscriptions","organizations_url":"https://api.github.com/users/EBIvariation/orgs","repos_url":"https://api.github.com/users/EBIvariation/repos","events_url":"https://api.github.com/users/EBIvariation/events{/privacy}","received_events_url":"https://api.github.com/users/EBIvariation/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/EBIvariation/vcf-validator","description":"Validator for VCF implemented using C++11","fork":false,"url":"https://api.github.com/repos/EBIvariation/vcf-validator","forks_url":"https://api.github.com/repos/EBIvariation/vcf-validator/forks","keys_url":"https://api.github.com/repos/EBIvariation/vcf-validator/keys{/key_id}","collaborators_url":"https://api.github.com/repos/EBIvariation/vcf-validator/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/EBIvariation/vcf-validator/teams","hooks_url":"https://api.github.com/repos/EBIvariation/vcf-validator/hooks","issue_events_url":"https://api.github.com/repos/EBIvariation/vcf-validator/issues/events{/number}","events_url":"https://api.github.com/repos/EBIvariation/vcf-validator/events","assignees_url":"https://api.github.com/repos/EBIvariation/vcf-validator/assignees{/user}","branches_url":"https://api.github.com/repos/EBIvariation/vcf-validator/branches{/branch}","tags_url":"https://api.github.com/repos/EBIvariation/vcf-validator/tags","blobs_url":"https://api.github.com/repos/EBIvariation/vcf-validator/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/EBIvariation/vcf-validator/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/EBIvariation/vcf-validator/git/refs{/sha}","trees_url":"https://api.github.com/repos/EBIvariation/vcf-validator/git/trees{/sha}","statuses_url":"https://api.github.com/repos/EBIvariation/vcf-validator/statuses/{sha}","languages_url":"https://api.github.com/repos/EBIvariation/vcf-validator/languages","stargazers_url":"https://api.github.com/repos/EBIvariation/vcf-validator/stargazers","contributors_url":"https://api.github.com/repos/EBIvariation/vcf-validator/contributors","subscribers_url":"https://api.github.com/repos/EBIvariation/vcf-validator/subscribers","subscription_url":"https://api.github.com/repos/EBIvariation/vcf-validator/subscription","commits_url":"https://api.github.com/repos/EBIvariation/vcf-validator/commits{/sha}","git_commits_url":"https://api.github.com/repos/EBIvariation/vcf-validator/git/commits{/sha}","comments_url":"https://api.github.com/repos/EBIvariation/vcf-validator/comments{/number}","issue_comment_url":"https://api.github.com/repos/EBIvariation/vcf-validator/issues/comments{/number}","contents_url":"https://api.github.com/repos/EBIvariation/vcf-validator/contents/{+path}","compare_url":"https://api.github.com/repos/EBIvariation/vcf-validator/compare/{base}...{head}","merges_url":"https://api.github.com/repos/EBIvariation/vcf-validator/merges","archive_url":"https://api.github.com/repos/EBIvariation/vcf-validator/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/EBIvariation/vcf-validator/downloads","issues_url":"https://api.github.com/repos/EBIvariation/vcf-validator/issues{/number}","pulls_url":"https://api.github.com/repos/EBIvariation/vcf-validator/pulls{/number}","milestones_url":"https://api.github.com/repos/EBIvariation/vcf-validator/milestones{/number}","notifications_url":"https://api.github.com/repos/EBIvariation/vcf-validator/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/EBIvariation/vcf-validator/labels{/name}","releases_url":"https://api.github.com/repos/EBIvariation/vcf-validator/releases{/id}","deployments_url":"https://api.github.com/repos/EBIvariation/vcf-validator/deployments","created_at":"2015-06-03T14:51:49Z","updated_at":"2016-06-07T10:03:56Z","pushed_at":"2016-08-26T14:19:19Z","git_url":"git://github.com/EBIvariation/vcf-validator.git","ssh_url":"git@github.com:EBIvariation/vcf-validator.git","clone_url":"https://github.com/EBIvariation/vcf-validator.git","svn_url":"https://github.com/EBIvariation/vcf-validator","homepage":null,"size":4800,"stargazers_count":16,"watchers_count":16,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":12,"forks":5,"open_issues":12,"watchers":16,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/EBIvariation/vcf-validator/pulls/43"},"html":{"href":"https://github.com/EBIvariation/vcf-validator/pull/43"},"issue":{"href":"https://api.github.com/repos/EBIvariation/vcf-validator/issues/43"},"comments":{"href":"https://api.github.com/repos/EBIvariation/vcf-validator/issues/43/comments"},"review_comments":{"href":"https://api.github.com/repos/EBIvariation/vcf-validator/pulls/43/comments"},"review_comment":{"href":"https://api.github.com/repos/EBIvariation/vcf-validator/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/EBIvariation/vcf-validator/pulls/43/commits"},"statuses":{"href":"https://api.github.com/repos/EBIvariation/vcf-validator/statuses/7224fef4b0bcac507599bc14c10c845f8db413cc"}}}}
{"actor":{"display_login":"cyenyxe"}}