1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

pkgng: fix check_mode for annotate

Actions specified in the `annotate` parameter would
always be performed, even if `check_mode=yes`.

This commit fixes `check_mode` for the annotation
functions and adds integration tests to ensure that
check mode is honored in the future.
This commit is contained in:
Ross Williams 2021-10-12 18:37:39 +00:00
parent 8f013549fd
commit 4c5239e82f
3 changed files with 45 additions and 20 deletions

View file

@ -3,3 +3,4 @@ bugfixes:
- 'pkgng - PR #3393 (https://github.com/ansible-collections/community.general/pull/3393) broke `check_mode` so that the module always reports `not changed`; fix regression so module reports number of upgrade or install actions that would be performed' - 'pkgng - PR #3393 (https://github.com/ansible-collections/community.general/pull/3393) broke `check_mode` so that the module always reports `not changed`; fix regression so module reports number of upgrade or install actions that would be performed'
- 'pkgng - The module will now convert a single space- or comma-separated name parameter to a list. The documentation had given wrong examples in which multiple space- or comma-separated packages were specified in the `name` parameter, rather than using correct YAML list syntax. `pkgng` module documentation has also been updated' - 'pkgng - The module will now convert a single space- or comma-separated name parameter to a list. The documentation had given wrong examples in which multiple space- or comma-separated packages were specified in the `name` parameter, rather than using correct YAML list syntax. `pkgng` module documentation has also been updated'
- 'pkgng - `annotation` functionality was broken; uncovered by new integration tests. Small/typo fixes have restored the functionality.' - 'pkgng - `annotation` functionality was broken; uncovered by new integration tests. Small/typo fixes have restored the functionality.'
- 'pkgng - annotation actions performed even if `check_mode=yes`'

View file

@ -333,6 +333,7 @@ def annotation_add(module, pkgng_path, package, tag, value, dir_arg):
_value = annotation_query(module, pkgng_path, package, tag, dir_arg) _value = annotation_query(module, pkgng_path, package, tag, dir_arg)
if not _value: if not _value:
# Annotation does not exist, add it. # Annotation does not exist, add it.
if not module.check_mode:
rc, out, err = module.run_command('%s %s annotate -y -A %s %s "%s"' rc, out, err = module.run_command('%s %s annotate -y -A %s %s "%s"'
% (pkgng_path, dir_arg, package, tag, value)) % (pkgng_path, dir_arg, package, tag, value))
if rc != 0: if rc != 0:
@ -353,6 +354,7 @@ def annotation_add(module, pkgng_path, package, tag, value, dir_arg):
def annotation_delete(module, pkgng_path, package, tag, value, dir_arg): def annotation_delete(module, pkgng_path, package, tag, value, dir_arg):
_value = annotation_query(module, pkgng_path, package, tag, dir_arg) _value = annotation_query(module, pkgng_path, package, tag, dir_arg)
if _value: if _value:
if not module.check_mode:
rc, out, err = module.run_command('%s %s annotate -y -D %s %s' rc, out, err = module.run_command('%s %s annotate -y -D %s %s'
% (pkgng_path, dir_arg, package, tag)) % (pkgng_path, dir_arg, package, tag))
if rc != 0: if rc != 0:
@ -372,6 +374,7 @@ def annotation_modify(module, pkgng_path, package, tag, value, dir_arg):
# No change in value # No change in value
return False return False
else: else:
if not module.check_mode:
rc, out, err = module.run_command('%s %s annotate -y -M %s %s "%s"' rc, out, err = module.run_command('%s %s annotate -y -M %s %s "%s"'
% (pkgng_path, dir_arg, package, tag, value)) % (pkgng_path, dir_arg, package, tag, value))

View file

@ -314,6 +314,24 @@
command: 'pkg annotate -q -S {{ pkgng_test_pkg_name }} ansibletest_example8' command: 'pkg annotate -q -S {{ pkgng_test_pkg_name }} ansibletest_example8'
register: pkgng_example8_add_annotation_verify register: pkgng_example8_add_annotation_verify
- name: Install and annotate single package (checkmode, not changed)
pkgng:
name: '{{ pkgng_test_pkg_name }}'
annotation: '+ansibletest_example8=added'
check_mode: yes
register: pkgng_example8_add_annotation_checkmode_nochange
- name: Install and annotate single package (checkmode, changed)
pkgng:
name: '{{ pkgng_test_pkg_name }}'
annotation: '+ansibletest_example8_checkmode=added'
check_mode: yes
register: pkgng_example8_add_annotation_checkmode_change
- name: Verify check_mode did not add an annotation
command: 'pkg annotate -q -S {{ pkgng_test_pkg_name }} ansibletest_example8_checkmode'
register: pkgng_example8_add_annotation_checkmode_change_verify
- name: Modify annotation on single package - name: Modify annotation on single package
pkgng: pkgng:
name: '{{ pkgng_test_pkg_name }}' name: '{{ pkgng_test_pkg_name }}'
@ -346,6 +364,9 @@
that: that:
- pkgng_example8_add_annotation.changed - pkgng_example8_add_annotation.changed
- pkgng_example8_add_annotation_failure.failed - pkgng_example8_add_annotation_failure.failed
- pkgng_example8_add_annotation_checkmode_nochange is not changed
- pkgng_example8_add_annotation_checkmode_change is changed
- 'pkgng_example8_add_annotation_checkmode_change_verify.stdout_lines | count == 0'
- 'pkgng_example8_add_annotation_verify.stdout_lines | first == "added"' - 'pkgng_example8_add_annotation_verify.stdout_lines | first == "added"'
- pkgng_example8_modify_annotation.changed - pkgng_example8_modify_annotation.changed
- pkgng_example8_modify_annotation_failure.failed - pkgng_example8_modify_annotation_failure.failed