-
Notifications
You must be signed in to change notification settings - Fork 85
/
cmd_shed_test.py
56 lines (48 loc) · 1.49 KB
/
cmd_shed_test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
"""
"""
import socket
import sys
import click
from planemo.cli import pass_context
from planemo import options
from planemo.galaxy.serve import shed_serve
from planemo import shed
from planemo.galaxy.test import run_in_config
@click.command("shed_test")
@options.shed_read_options()
@options.galaxy_target_options()
@options.test_options()
@click.option(
"--skip_dependencies",
is_flag=True,
help="Do not install shed dependencies as part of repository installation."
)
@pass_context
def cli(ctx, paths, **kwds):
""" Run tests of published shed artifacts.
This command will start a Galaxy instance configured to target the
specified shed, find published artifacts (tools and dependencies)
corresponding to command-line arguments and ``.shed.yml`` file(s),
install these artifacts, and run the tool tests for these commands.
This command requires the target to be version 15.07 or newer.
"""
install_args_list = shed.install_arg_lists(ctx, paths, **kwds)
port = get_free_port()
kwds["port"] = port
return_code = 1
with shed_serve(ctx, install_args_list, **kwds) as config:
config.kill()
return_code = run_in_config(
ctx,
config,
installed=True,
**kwds
)
if return_code:
sys.exit(return_code)
def get_free_port():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('localhost', 0))
port = sock.getsockname()[1]
sock.close()
return port