def test_test_suites_prop(test_data_dir): top_dir = test_data_dir / "ro-crate-galaxy-sortchangecase" wf_path = top_dir / "sort-and-change-case.ga" crate = ROCrate() wf = crate.add(ComputationalWorkflow(crate, str(wf_path), wf_path.name)) crate.mainEntity = wf suites = set() assert not crate.test_suites s1 = crate.add(TestSuite(crate, "s1")) suites.add(s1) crate.root_dataset["mentions"] = [s1] assert suites == set(crate.test_suites) s2 = crate.add(TestSuite(crate, "s2")) crate.root_dataset["about"] = [s2] suites.add(s2) assert suites == set(crate.test_suites) test_dir = crate.add_directory(dest_path="test") assert crate.test_dir is test_dir assert suites == set(crate.test_suites) # no "about" yet s3 = crate.add(TestSuite(crate, "s3")) suites.add(s3) test_dir["about"] = [s3] assert suites == set(crate.test_suites) # check for duplicates crate.root_dataset["about"] = [s1, s2] assert sum(_ is s1 for _ in crate.test_suites) == 1
def test_add_test_suite(test_data_dir): top_dir = test_data_dir / "ro-crate-galaxy-sortchangecase" wf_path = top_dir / "sort-and-change-case.ga" crate = ROCrate() wf = crate.add(ComputationalWorkflow(crate, str(wf_path), wf_path.name)) crate.mainEntity = wf suites = set() assert not crate.test_suites s1 = crate.add_test_suite() assert s1["mainEntity"] is wf suites.add(s1) assert suites == set(crate.test_suites) s2 = crate.add_test_suite(identifier="test1") assert s2["mainEntity"] is wf assert s2.id == "#test1" suites.add(s2) assert suites == set(crate.test_suites) s3 = crate.add_test_suite(identifier="test2", name="Test 2") assert s3["mainEntity"] is wf assert s3.id == "#test2" assert s3.name == "Test 2" suites.add(s3) assert suites == set(crate.test_suites) wf2_path = top_dir / "README.md" wf2 = crate.add(ComputationalWorkflow(crate, wf2_path, wf2_path.name)) s4 = crate.add_test_suite(identifier="test3", name="Foo", main_entity=wf2) assert s4["mainEntity"] is wf2 assert s4.id == "#test3" assert s4.name == "Foo" suites.add(s4) assert suites == set(crate.test_suites) # check filtering in test_suites property crate.root_dataset["mentions"] += [wf] assert set(crate.root_dataset["mentions"]) > suites assert suites == set(crate.test_suites)
def test_add_test_instance(test_data_dir): top_dir = test_data_dir / "ro-crate-galaxy-sortchangecase" wf_path = top_dir / "sort-and-change-case.ga" crate = ROCrate() wf = crate.add(ComputationalWorkflow(crate, str(wf_path), wf_path.name)) crate.mainEntity = wf suite = crate.add_test_suite() instances = set() assert crate.dereference(JENKINS) is None assert crate.dereference(TRAVIS) is None i1 = crate.add_test_instance(suite, "http://example.com") assert crate.dereference(JENKINS) is i1.service assert crate.dereference(TRAVIS) is None assert i1.url == "http://example.com" instances.add(i1) assert instances == set(suite.instance) i2 = crate.add_test_instance(suite.id, "http://example.com") assert i2.url == "http://example.com" instances.add(i2) assert instances == set(suite.instance) i3 = crate.add_test_instance(suite, "http://example.com", resource="jobs") assert i3.url == "http://example.com" assert i3.resource == "jobs" instances.add(i3) assert instances == set(suite.instance) i4 = crate.add_test_instance(suite, "http://example.com", service="travis") assert i4.url == "http://example.com" assert i4.service.id == TRAVIS assert i4.service is crate.dereference(TRAVIS) instances.add(i4) assert instances == set(suite.instance) i5 = crate.add_test_instance(suite, "http://example.com", identifier="test_1_1") assert i5.url == "http://example.com" assert i5.id == "#test_1_1" instances.add(i5) assert instances == set(suite.instance) i6 = crate.add_test_instance(suite, "http://example.com", name="Test 1 Instance 1") assert i6.url == "http://example.com" assert i6.name == "Test 1 Instance 1" instances.add(i6) assert instances == set(suite.instance)
def test_add_test_definition(test_data_dir, engine, engine_version): top_dir = test_data_dir / "ro-crate-galaxy-sortchangecase" wf_path = top_dir / "sort-and-change-case.ga" def_path = top_dir / "test" / "test1" / "sort-and-change-case-test.yml" crate = ROCrate() wf = crate.add(ComputationalWorkflow(crate, str(wf_path), wf_path.name)) crate.mainEntity = wf suite = crate.add_test_suite() assert crate.dereference(PLANEMO) is None kwargs = {"source": def_path} if engine: kwargs["engine"] = engine if engine_version: kwargs["engine_version"] = engine_version d = crate.add_test_definition(suite, **kwargs) assert crate.dereference(PLANEMO) is d.engine if engine_version: assert d.engineVersion == engine_version