varnames: add tests, fix exception grammar (#70573)

Change:
- Add integration tests for various cases
- Fix wrong use of "its" in an exception thrown in varnames when it
  throws an AnsibleError, given a term of the wrong type.

Test Plan:
- new tests, CI

Tickets:
- Fixes #70546

Signed-off-by: Rick Elrod <rick@elrod.me>
This commit is contained in:
Rick Elrod 2020-07-10 21:04:02 -05:00 committed by GitHub
parent df45dcdae0
commit d5480572c8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 43 additions and 1 deletions

View file

@ -0,0 +1,2 @@
minor_changes:
- varnames lookup plugin - Fixed grammar error in exception message when the plugin is given a non-string term.

View file

@ -66,7 +66,7 @@ class LookupModule(LookupBase):
for term in terms:
if not isinstance(term, string_types):
raise AnsibleError('Invalid setting identifier, "%s" is not a string, its a %s' % (term, type(term)))
raise AnsibleError('Invalid setting identifier, "%s" is not a string, it is a %s' % (term, type(term)))
try:
name = re.compile(term)

View file

@ -0,0 +1,2 @@
shippable/posix/group2
skip/python2.6 # lookups are controller only, and we no longer support Python 2.6 on the controller

View file

@ -0,0 +1,38 @@
# Example copied from docs
- name: Set some variables
set_fact:
qz_1: hello
qz_2: world
qa_1: "I won't show"
qz_: "I won't show either"
- name: Try various regexes and make sure they work
assert:
that:
- lookup('varnames', '^qz_.+', wantlist=True) == ['qz_1', 'qz_2']
- lookup('varnames', '^qz_.+', '^qa.*', wantlist=True) == ['qz_1', 'qz_2', 'qa_1']
- "'ansible_python_interpreter' in lookup('varnames', '^ansible_.*', wantlist=True)"
- lookup('varnames', '^doesnotexist.*', wantlist=True) == []
- lookup('varnames', '^doesnotexist.*', '.*python_inter.*', wantlist=True) == ['ansible_python_interpreter']
- lookup('varnames', '^q.*_\d', wantlist=True) == ['qz_1', 'qz_2', 'qa_1']
- lookup('varnames', '^q.*_\d') == 'qz_1,qz_2,qa_1'
- name: Make sure it fails successfully
set_fact:
fail1: "{{ lookup('varnames', True, wantlist=True) }}"
register: fail1res
ignore_errors: yes
- name: Make sure it fails successfully
set_fact:
fail2: "{{ lookup('varnames', '*', wantlist=True) }}"
register: fail2res
ignore_errors: yes
- assert:
that:
- fail1res is failed
- "'Invalid setting identifier' in fail1res.msg"
- fail2res is failed
- "'Unable to use' in fail2res.msg"
- "'nothing to repeat' in fail2res.msg"