Skip to content

Commit ae59253

Browse files
committed
100% coverage of parameters.py
1 parent 3db10a3 commit ae59253

File tree

3 files changed

+27
-9
lines changed

3 files changed

+27
-9
lines changed

paths_cli/cli.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ def _list_plugins(self):
4242
commands.append(command[:-3])
4343
return files, commands
4444

45-
4645
def list_commands(self, ctx):
4746
return list(self._get_command.keys())
4847

paths_cli/parameters.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,15 @@ def __init__(self, *args, **kwargs):
1111
def clicked(self, required=False):
1212
raise NotImplementedError()
1313

14+
# we'll use tests of the -h option in the .travis.yml to ensure that the
15+
# .clicked methods work
16+
1417
class Option(AbstractParameter):
15-
def clicked(self, required=False):
18+
def clicked(self, required=False): # no-cov
1619
return click.option(*self.args, **self.kwargs, required=required)
1720

1821
class Argument(AbstractParameter):
19-
def clicked(self, required=False):
22+
def clicked(self, required=False): # no-cov
2023
return click.argument(*self.args, **self.kwargs, required=required)
2124

2225

@@ -25,11 +28,11 @@ def __init__(self, param):
2528
self.param = param
2629

2730
@property
28-
def clicked(self):
31+
def clicked(self): # no-cov
2932
return self.param.clicked
3033

3134
def get(self, *args, **kwargs):
32-
return NotImplementedError()
35+
raise NotImplementedError()
3336

3437

3538
class StorageLoader(AbstractLoader):
@@ -83,17 +86,16 @@ def get(self, storage, name):
8386
if result is not None:
8487
return result
8588

86-
8789
# if only one is named, take it
88-
if self.store != 'tags':
90+
if self.store != 'tags' and name is None:
8991
# if there's only one of them, take that
9092
if len(store) == 1:
9193
return store[0]
9294
named_things = [o for o in store if o.is_named]
9395
if len(named_things) == 1:
9496
return named_things[0]
9597

96-
if len(num_store) == 1:
98+
if len(num_store) == 1 and name is None:
9799
return num_store[0]
98100

99101
if self.fallback:

paths_cli/tests/test_parameters.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,14 +119,21 @@ class TestSCHEME(ParamInstanceTest):
119119
def setup(self):
120120
super(TestSCHEME, self).setup()
121121
self.get_arg = {'name': 'scheme', 'number': 0, 'only': None,
122-
'only-named': None}
122+
'only-named': None, 'bad-name': 'foo'}
123123
self.obj = self.scheme
124124

125125
@pytest.mark.parametrize("getter", ['name', 'number', 'only',
126126
'only-named'])
127127
def test_get(self, getter):
128128
self._getter_test(getter)
129129

130+
def test_bad_get(self):
131+
# NOTE: This is where we test the failure of get; don't need to do
132+
# it in every parameter
133+
with pytest.raises(RuntimeError):
134+
obj = self._getter_test('bad-name')
135+
136+
130137

131138
class TestINIT_CONDS(ParamInstanceTest):
132139
PARAMETER = INIT_CONDS
@@ -269,3 +276,13 @@ def test_get_other(self, getter):
269276
self.get_arg = {'name': ['B'], 'number': [1]}
270277
self.obj = self.state_B
271278
self._getter_test(getter)
279+
280+
def test_OUTPUT_FILE():
281+
tempdir = tempfile.mkdtemp()
282+
filename = os.path.join(tempdir, "test_output_file.nc")
283+
assert not os.path.exists(filename)
284+
storage = OUTPUT_FILE.get(filename)
285+
assert os.path.exists(filename)
286+
os.remove(filename)
287+
os.rmdir(tempdir)
288+

0 commit comments

Comments
 (0)