diff planemo/lib/python3.7/site-packages/galaxy/tool_util/verify/script.py @ 1:56ad4e20f292 draft

"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author guerler
date Fri, 31 Jul 2020 00:32:28 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/planemo/lib/python3.7/site-packages/galaxy/tool_util/verify/script.py	Fri Jul 31 00:32:28 2020 -0400
@@ -0,0 +1,111 @@
+#!/usr/bin/env python
+from __future__ import print_function
+
+import argparse
+import json
+import sys
+
+from .interactor import (
+    GalaxyInteractorApi,
+    verify_tool,
+)
+
+DESCRIPTION = """Script to quickly run a tool test against a running Galaxy instance."""
+ALL_TESTS = "*all_tests*"
+
+
+def main(argv=None):
+    if argv is None:
+        argv = sys.argv[1:]
+
+    args = _arg_parser().parse_args(argv)
+    galaxy_interactor_kwds = {
+        "galaxy_url": args.galaxy_url,
+        "master_api_key": args.admin_key,
+        "api_key": args.key,
+        "keep_outputs_dir": args.output,
+    }
+    tool_id = args.tool_id
+    tool_version = args.tool_version
+
+    galaxy_interactor = GalaxyInteractorApi(**galaxy_interactor_kwds)
+    raw_test_index = args.test_index
+    if raw_test_index == ALL_TESTS:
+        tool_test_dicts = galaxy_interactor.get_tool_tests(tool_id, tool_version=tool_version)
+        test_indices = list(range(len(tool_test_dicts)))
+    else:
+        test_indices = [int(raw_test_index)]
+
+    test_results = []
+
+    if args.append:
+        with open(args.output_json, "r") as f:
+            previous_results = json.load(f)
+            test_results = previous_results["tests"]
+
+    exceptions = []
+    verbose = args.verbose
+    for test_index in test_indices:
+        if tool_version:
+            tool_id_and_version = "%s/%s" % (tool_id, tool_version)
+        else:
+            tool_id_and_version = tool_id
+
+        test_identifier = "tool %s test # %d" % (tool_id_and_version, test_index)
+
+        def register(job_data):
+            test_results.append({
+                'id': tool_id + "-" + str(test_index),
+                'has_data': True,
+                'data': job_data,
+            })
+
+        try:
+            verify_tool(
+                tool_id, galaxy_interactor, test_index=test_index, tool_version=tool_version,
+                register_job_data=register, quiet=not verbose, force_path_paste=args.force_path_paste
+            )
+
+            if verbose:
+                print("%s passed" % test_identifier)
+
+        except Exception as e:
+            if verbose:
+                print("%s failed, %s" % (test_identifier, e))
+            exceptions.append(e)
+
+    report_obj = {
+        'version': '0.1',
+        'tests': test_results,
+    }
+    output_json = args.output_json
+    if output_json:
+        if args.output_json == "-":
+            assert not args.append
+            print(json.dumps(report_obj))
+        else:
+            with open(args.output_json, "w") as f:
+                json.dump(report_obj, f)
+
+    if exceptions:
+        raise exceptions[0]
+
+
+def _arg_parser():
+    parser = argparse.ArgumentParser(description=DESCRIPTION)
+    parser.add_argument('-u', '--galaxy-url', default="http://localhost:8080", help='Galaxy URL')
+    parser.add_argument('-k', '--key', default=None, help='Galaxy User API Key')
+    parser.add_argument('-a', '--admin-key', default=None, help='Galaxy Admin API Key')
+    parser.add_argument('--force_path_paste', default=False, action="store_true", help='This requires Galaxy-side config option "allow_path_paste" enabled. Allows for fetching test data locally. Only for admins.')
+    parser.add_argument('-t', '--tool-id', default=None, help='Tool ID')
+    parser.add_argument('--tool-version', default=None, help='Tool Version')
+    parser.add_argument('-i', '--test-index', default=ALL_TESTS, help='Tool Test Index (starting at 0) - by default all tests will run.')
+    parser.add_argument('-o', '--output', default=None, help='directory to dump outputs to')
+    parser.add_argument('--append', default=False, action="store_true", help="Extend a test record json (created with --output-json) with additional tests.")
+    parser.add_argument('-j', '--output-json', default=None, help='output metadata json')
+    parser.add_argument('--verbose', default=False, action="store_true", help="Verbose logging.")
+    return parser
+
+
+if __name__ == "__main__":
+    main()