Skip to content

Commit 732d8bc

Browse files
committed
Add tests
1 parent 17f9f82 commit 732d8bc

File tree

3 files changed

+63
-3
lines changed

3 files changed

+63
-3
lines changed

api/jobs/gears.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,10 +129,15 @@ def fill_gear_default_values(gear, config_):
129129
Given a gear and a config map, fill any missing keys using defaults from the gear's config
130130
"""
131131

132-
for k,v in gear['gear'].get('config', {}).itervalues:
132+
if config_ is None:
133+
config_ = {}
134+
135+
for k,v in gear['gear'].get('config', {}).iteritems():
133136
if 'default' in v:
134137
config_.setdefault(k, v['default'])
135138

139+
return config_
140+
136141

137142
def insert_gear(doc):
138143
gear_tools.validate_manifest(doc['gear'])

api/jobs/queue.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,7 @@ def enqueue_job(job_map, origin, perm_check_uid=None):
156156
if gear.get('gear', {}).get('custom', {}).get('flywheel', {}).get('invalid', False):
157157
raise InputValidationException('Gear marked as invalid, will not run!')
158158

159-
config_ = job_map.get('config', {})
160-
fill_gear_default_values(gear, config_)
159+
config_ = fill_gear_default_values(gear, job_map.get('config', {}))
161160
validate_gear_config(gear, config_)
162161

163162
# Translate maps to FileReferences
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
2+
import copy
3+
from api.jobs import gears
4+
5+
# DISCUSS: this basically asserts that the log helper doesn't throw, which is of non-zero but questionable value.
6+
# Could instead be marked for pytest et. al to ignore coverage? Desirability? Compatibility?
7+
def test_fill_defaults():
8+
9+
gear_config = {
10+
'key_one': {'default': 1},
11+
'key_two': {'default': 2},
12+
'key_three': {'default': 3},
13+
'key_no_de': {}
14+
}
15+
16+
gear = {
17+
'gear': {
18+
'config': gear_config
19+
}
20+
}
21+
22+
# test sending in complete config does not change
23+
config = {
24+
'key_one': 4,
25+
'key_two': 5,
26+
'key_three': 6
27+
}
28+
29+
result = gears.fill_gear_default_values(gear, config)
30+
assert result['key_one'] == 4
31+
assert result['key_two'] == 5
32+
assert result['key_three'] == 6
33+
34+
# test sending in empty config
35+
result = gears.fill_gear_default_values(gear, {})
36+
assert result['key_one'] == 1
37+
assert result['key_two'] == 2
38+
assert result['key_three'] == 3
39+
40+
# test sending in None config
41+
result = gears.fill_gear_default_values(gear, None)
42+
assert result['key_one'] == 1
43+
assert result['key_two'] == 2
44+
assert result['key_three'] == 3
45+
46+
# test sending in semi-complete config
47+
config = {
48+
'key_one': None,
49+
'key_two': []
50+
#'key_three': 6 # missing
51+
}
52+
53+
result = gears.fill_gear_default_values(gear, config)
54+
assert result['key_one'] == None
55+
assert result['key_two'] == []
56+
assert result['key_three'] == 3

0 commit comments

Comments
 (0)