Fix completions for FlagList
This commit is contained in:
parent
54c417391d
commit
3be7299cb4
@ -510,7 +510,7 @@ class FlagList(List):
|
|||||||
# Single value completions
|
# Single value completions
|
||||||
for value in valid_values:
|
for value in valid_values:
|
||||||
desc = valid_values.descriptions.get(value, "")
|
desc = valid_values.descriptions.get(value, "")
|
||||||
out.append((value, desc))
|
out.append((json.dumps([value]), desc))
|
||||||
|
|
||||||
combinables = self.combinable_values
|
combinables = self.combinable_values
|
||||||
if combinables is None:
|
if combinables is None:
|
||||||
@ -518,7 +518,7 @@ class FlagList(List):
|
|||||||
# Generate combinations of each possible value combination
|
# Generate combinations of each possible value combination
|
||||||
for size in range(2, len(combinables) + 1):
|
for size in range(2, len(combinables) + 1):
|
||||||
for combination in itertools.combinations(combinables, size):
|
for combination in itertools.combinations(combinables, size):
|
||||||
out.append((','.join(combination), ''))
|
out.append((json.dumps(combination), ''))
|
||||||
return out
|
return out
|
||||||
|
|
||||||
|
|
||||||
|
@ -278,6 +278,14 @@ class TestAll:
|
|||||||
with pytest.raises(configexc.ValidationError):
|
with pytest.raises(configexc.ValidationError):
|
||||||
klass().to_py(object())
|
klass().to_py(object())
|
||||||
|
|
||||||
|
def test_completion_validity(self, klass):
|
||||||
|
"""Make sure all completions are actually valid values."""
|
||||||
|
typ = klass()
|
||||||
|
completions = typ.complete()
|
||||||
|
if completions is not None:
|
||||||
|
for value, _desc in completions:
|
||||||
|
typ.from_str(value)
|
||||||
|
|
||||||
|
|
||||||
class TestBaseType:
|
class TestBaseType:
|
||||||
|
|
||||||
@ -640,24 +648,24 @@ class TestFlagList:
|
|||||||
def test_complete(self, klass):
|
def test_complete(self, klass):
|
||||||
"""Test completing by doing some samples."""
|
"""Test completing by doing some samples."""
|
||||||
typ = klass(set_valid_values=True)
|
typ = klass(set_valid_values=True)
|
||||||
completions = [e[0] for e in typ.complete()]
|
completions = [json.loads(e[0]) for e in typ.complete()]
|
||||||
assert 'foo' in completions
|
assert ['foo'] in completions
|
||||||
assert 'bar' in completions
|
assert ['bar'] in completions
|
||||||
assert 'baz' in completions
|
assert ['baz'] in completions
|
||||||
assert 'foo,bar' in completions
|
assert ['foo', 'bar'] in completions
|
||||||
for val in completions:
|
for val in completions:
|
||||||
assert 'baz,' not in val
|
if len(val) > 1:
|
||||||
assert ',baz' not in val
|
assert 'baz' not in val
|
||||||
|
|
||||||
def test_complete_all_valid_values(self, klass):
|
def test_complete_all_valid_values(self, klass):
|
||||||
typ = klass(set_valid_values=True)
|
typ = klass(set_valid_values=True)
|
||||||
typ.combinable_values = None
|
typ.combinable_values = None
|
||||||
completions = [e[0] for e in typ.complete()]
|
completions = [json.loads(e[0]) for e in typ.complete()]
|
||||||
assert 'foo' in completions
|
assert ['foo'] in completions
|
||||||
assert 'bar' in completions
|
assert ['bar'] in completions
|
||||||
assert 'baz' in completions
|
assert ['baz'] in completions
|
||||||
assert 'foo,bar' in completions
|
assert ['foo', 'bar'] in completions
|
||||||
assert 'foo,baz' in completions
|
assert ['foo', 'baz'] in completions
|
||||||
|
|
||||||
def test_complete_no_valid_values(self, klass):
|
def test_complete_no_valid_values(self, klass):
|
||||||
assert klass().complete() is None
|
assert klass().complete() is None
|
||||||
@ -1910,18 +1918,6 @@ class TestConfirmQuit:
|
|||||||
with pytest.raises(configexc.ValidationError):
|
with pytest.raises(configexc.ValidationError):
|
||||||
klass().to_py(val)
|
klass().to_py(val)
|
||||||
|
|
||||||
def test_complete(self, klass):
|
|
||||||
"""Test completing by doing some samples."""
|
|
||||||
completions = [e[0] for e in klass().complete()]
|
|
||||||
assert 'always' in completions
|
|
||||||
assert 'never' in completions
|
|
||||||
assert 'multiple-tabs,downloads' in completions
|
|
||||||
for val in completions:
|
|
||||||
assert 'always,' not in val
|
|
||||||
assert ',always' not in val
|
|
||||||
assert 'never,' not in val
|
|
||||||
assert ',never' not in val
|
|
||||||
|
|
||||||
|
|
||||||
class TestTimestampTemplate:
|
class TestTimestampTemplate:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user