def make_crate(crate_dir, target_owner, planemo_version): wf_id = get_wf_id(crate_dir) planemo_id, planemo_source = get_planemo_id(crate_dir, wf_id) crate = ROCrate(gen_preview=False) wf_source = Path(crate_dir) / wf_id with open(wf_source) as f: code = json.load(f) workflow = crate.add_workflow(wf_source, wf_id, main=True, lang="galaxy", gen_cwl=False) handle_creator(code, crate, workflow) workflow["name"] = crate.root_dataset["name"] = get_workflow_name( crate_dir) try: workflow["version"] = code["release"] except KeyError: pass wf_url = f"https://github.com/{target_owner}/{crate_dir.name}" workflow["url"] = crate.root_dataset["isBasedOn"] = wf_url try: crate.root_dataset["license"] = code["license"] except KeyError: pass readme_source = Path(crate_dir) / "README.md" if readme_source.is_file(): crate.add_file(readme_source, "README.md") suite = crate.add_test_suite(identifier="#test1") resource = f"repos/{target_owner}/{crate_dir.name}/actions/workflows/{CI_WORKFLOW.name}" crate.add_test_instance(suite, GH_API_URL, resource=resource, service="github", identifier="test1_1") crate.add_test_definition(suite, source=planemo_source, dest_path=planemo_id, engine="planemo", engine_version=planemo_version) crate.metadata.write(crate_dir)
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