Skip to content

Commit

Permalink
Add more tests, make error messages more specific
Browse files Browse the repository at this point in the history
Three new tests were added to ensure that errors are thrown if a
destination is used as a straight string value (without a priority)
and that destination does not exist in the job_conf.xml

Also updated a few error messages to explicitely mention that the
destination is not in job_conf.xml, hopefully ensuring users
who get the message know what to do to fix the error.
  • Loading branch information
Matthew Spelchak committed Feb 6, 2018
1 parent ad5933f commit 4f47980
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 7 deletions.
11 changes: 6 additions & 5 deletions lib/galaxy/jobs/dynamic_tool_destination.py
Original file line number Diff line number Diff line change
Expand Up @@ -793,8 +793,9 @@ def infinite_defaultdict():
if obj['default_destination'] in destination_list:
new_config["default_destination"] = obj['default_destination']
else:
error = ("Invalid default destination '" +
obj['default_destination'] + "'.")
error = ("default destination '" +
obj['default_destination'] +
"' does not appear in the job configuration.")
if verbose:
log.debug(error)
valid_config = False
Expand All @@ -814,7 +815,7 @@ def infinite_defaultdict():
new_config['default_destination']['priority'][priority] = obj[
'default_destination']['priority'][priority]
else:
error = ("destination '" +
error = ("default destination '" +
obj['default_destination']['priority'][priority] +
"' does not appear in the job configuration.")
if verbose:
Expand Down Expand Up @@ -934,8 +935,8 @@ def infinite_defaultdict():
else:
error = ("default destination for '" +
str(tool) + "': '" +
str(destination) +
"' does not exist.")
destination + "' does not appear " +
"in the job configuration.")
if verbose:
log.debug(error)
valid_config = False
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -690,7 +690,7 @@ def test_tool_default_destination_not_in_job_conf(self, l):
dt.parse_yaml(path=yt.ivYMLTest151, test=True)
l.check(
('galaxy.jobs.dynamic_tool_destination', 'DEBUG', 'Running config validation...'),
('galaxy.jobs.dynamic_tool_destination', 'DEBUG', "default destination for 'blah': 'not_true_destination' does not exist."),
('galaxy.jobs.dynamic_tool_destination', 'DEBUG', "default destination for 'blah': 'not_true_destination' does not appear in the job configuration."),
('galaxy.jobs.dynamic_tool_destination', 'DEBUG', 'Finished config validation.')
)

Expand All @@ -699,7 +699,34 @@ def test_default_destination_not_in_job_conf(self, l):
dt.parse_yaml(path=yt.ivYMLTest152, test=True)
l.check(
('galaxy.jobs.dynamic_tool_destination', 'DEBUG', 'Running config validation...'),
('galaxy.jobs.dynamic_tool_destination', 'DEBUG', "destination 'no_such_dest' does not appear in the job configuration."),
('galaxy.jobs.dynamic_tool_destination', 'DEBUG', "default destination 'no_such_dest' does not appear in the job configuration."),
('galaxy.jobs.dynamic_tool_destination', 'DEBUG', 'Finished config validation.')
)

@log_capture()
def test_rule_destination_without_priority_not_in_job_conf(self, l):
dt.parse_yaml(path=yt.ivYMLTest153, test=True)
l.check(
('galaxy.jobs.dynamic_tool_destination', 'DEBUG', 'Running config validation...'),
('galaxy.jobs.dynamic_tool_destination', 'DEBUG', "destination for 'blegh', rule 1: 'fake_destination' does not exist in job configuration. Ignoring..."),
('galaxy.jobs.dynamic_tool_destination', 'DEBUG', 'Finished config validation.')
)

@log_capture()
def test_tool_default_destination_without_priority_not_in_job_conf(self, l):
dt.parse_yaml(path=yt.ivYMLTest154, test=True)
l.check(
('galaxy.jobs.dynamic_tool_destination', 'DEBUG', 'Running config validation...'),
('galaxy.jobs.dynamic_tool_destination', 'DEBUG', "default destination for 'blah': 'not_true_destination' does not appear in the job configuration."),
('galaxy.jobs.dynamic_tool_destination', 'DEBUG', 'Finished config validation.')
)

@log_capture()
def test_default_destination_without_priority_not_in_job_conf(self, l):
dt.parse_yaml(path=yt.ivYMLTest155, test=True)
l.check(
('galaxy.jobs.dynamic_tool_destination', 'DEBUG', 'Running config validation...'),
('galaxy.jobs.dynamic_tool_destination', 'DEBUG', "default destination 'no_such_dest' does not appear in the job configuration."),
('galaxy.jobs.dynamic_tool_destination', 'DEBUG', 'Finished config validation.')
)

Expand Down
44 changes: 44 additions & 0 deletions test/unit/jobs/dynamic_tool_destination/ymltests.py
Original file line number Diff line number Diff line change
Expand Up @@ -1019,3 +1019,47 @@
priority: med
verbose: True
'''

# rule destination not in job config (without priority dict)
ivYMLTest153 = '''
default_destination:
priority:
med: waffles_low
high: waffles_default
tools:
blegh:
rules:
- rule_type: num_input_datasets
nice_value: 0
lower_bound: 0
upper_bound: Infinity
destination: fake_destination
verbose: True
'''

# tool default destination not in job config (without priority dict)
ivYMLTest154 = '''
default_destination:
priority:
med: waffles_low
high: waffles_default
tools:
blah:
rules:
- rule_type: num_input_datasets
nice_value: 0
lower_bound: 0
upper_bound: Infinity
destination:
priority:
med: waffles_default
high: waffles_default
default_destination: not_true_destination
verbose: True
'''

# default destination not in job config (without priority dict)
ivYMLTest155 = '''
default_destination: no_such_dest
verbose: True
'''

0 comments on commit 4f47980

Please sign in to comment.