mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-25 03:41:25 -07:00
basic: allow one or more when param list having choices (#34537)
* basic: allow one or more when param list having choices * add unit tests * optimize a bit * re-add get_exception import * a number of existing modules expect to be able to get it from basic.py
This commit is contained in:
parent
82c1456781
commit
2f36b9e5ce
2 changed files with 31 additions and 2 deletions
|
@ -71,6 +71,7 @@ def complex_argspec():
|
|||
baz=dict(fallback=(basic.env_fallback, ['BAZ'])),
|
||||
bar1=dict(type='bool'),
|
||||
zardoz=dict(choices=['one', 'two']),
|
||||
zardoz2=dict(type='list', choices=['one', 'two', 'three']),
|
||||
)
|
||||
mut_ex = (('bar', 'bam'),)
|
||||
req_to = (('bam', 'baz'),)
|
||||
|
@ -254,6 +255,25 @@ class TestComplexArgSpecs:
|
|||
assert results['failed']
|
||||
assert results['msg'] == "parameters are required together: bam, baz"
|
||||
|
||||
@pytest.mark.parametrize('stdin', [{'foo': 'hello', 'zardoz2': ['one', 'four', 'five']}], indirect=['stdin'])
|
||||
def test_fail_list_with_choices(self, capfd, mocker, stdin, complex_argspec):
|
||||
"""Fail because one of the items is not in the choice"""
|
||||
with pytest.raises(SystemExit):
|
||||
basic.AnsibleModule(**complex_argspec)
|
||||
|
||||
out, err = capfd.readouterr()
|
||||
results = json.loads(out)
|
||||
|
||||
assert results['failed']
|
||||
assert results['msg'] == "value of zardoz2 must be one or more of: one, two, three. Got no match for: four, five"
|
||||
|
||||
@pytest.mark.parametrize('stdin', [{'foo': 'hello', 'zardoz2': ['one', 'three']}], indirect=['stdin'])
|
||||
def test_list_with_choices(self, capfd, mocker, stdin, complex_argspec):
|
||||
"""Test choices with list"""
|
||||
am = basic.AnsibleModule(**complex_argspec)
|
||||
assert isinstance(am.params['zardoz2'], list)
|
||||
assert am.params['zardoz2'] == ['one', 'three']
|
||||
|
||||
|
||||
class TestComplexOptions:
|
||||
"""Test arg spec options"""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue