galaxyproject / ephemeris

Library for managing Galaxy plugins - tools, index data, and workflows.
https://ephemeris.readthedocs.org/
Other
28 stars 38 forks source link

get all tools when searching for tool ids for testing (get_tools instead of get_tool_panel) #159

Closed cat-bro closed 4 years ago

cat-bro commented 4 years ago

When shed-tools looks for tests, it looks for tool ids within the output of get_tool_panel. There is generally only one version of a tool in the panel but there could be several versions of the tool installed. I'd like to be able to run tests for older revisions of tools. Currently if the --revisions arg does not correspond to the version in the panel, no tests are run.

My proposed change is to look in the output of get_tools instead of get_tool_panel if the revision is provided.

I'm not sure what should happen when there is no changeset revision - I've defaulted using get_tool_panel in this case to look for what is usually the most recent version, but I could change this so that it runs tests from all versions.

Catherine, Galaxy Australia

mvdbeek commented 4 years ago

Thanks, this looks good, but could you you make this a non-default option please ?

cat-bro commented 4 years ago

Hi @mvdbeek, thanks for reviewing. What is meant by 'make this a non-default option'? That instead of tools_for_repository having the extra argument all_tools, it should be calling get_tools instead of get_tool_panel as standard behaviour?

mvdbeek commented 4 years ago

Yes, if you can add something like --all_versions in https://github.com/galaxyproject/ephemeris/blob/69c053742bf54201edef039c02299fa6ef1bd41b/src/ephemeris/shed_tools_args.py#L204

cat-bro commented 4 years ago

Hi @mvdbeek, I've added this as boolean --test_all_versions (default False)

The expected behaviour is that if the user has specified the revisions that they want to test, the --revisions argument outranks --test_all_versions and only the specified revisions are tested. If no revisions are specified, using --test_all_versions will mean that all versions are tested.

For example, if the tool has two revisions, old_revision_hash and new_revision_hash and only the new one is in the tool panel:

shed-tools test --name abc --owner def --test_all_versions # test both versions

shed-tools test --name abc --owner def # test latest version

shed-tools test --name abc --owner def --revisions old_revision_hash # test old version

shed-tools test --name abc --owner def --revisions old_revision_hash --test_all_versions  # test old version

shed-tools test --name abc --owner def --revisions new_revision_hash old_revision_hash # test both versions