pkgng: refactor tests for task reuse

Several tests need to install an out-of-date package
to test whether upgrades occur successfully, so this
commit refactors out the generation of the test package.

Also, factor out things like the name and path of the
test package so that is more maintainable should the
target test package (currently `zsh`) ever need to
change.
This commit is contained in:
Ross Williams 2021-10-11 16:52:08 +00:00
commit 8805f408d6
3 changed files with 79 additions and 55 deletions

View file

@ -0,0 +1,34 @@
---
- name: Check if out-of-date test package has already been created
stat:
path: '{{ pkgng_test_outofdate_pkg_path }}'
register: pkgng_test_outofdate_pkg_stat
- name: Create out-of-date test package
when: not pkgng_test_outofdate_pkg_stat.stat.exists
block:
- set_fact:
pkgng_test_outofdate_pkg_tempdir: '{{ pkgng_test_outofdate_pkg_path }}__tempdir'
- name: Create temporary directory to assemble test package
file:
state: directory
path: '{{ pkgng_test_outofdate_pkg_tempdir }}'
- name: Copy intentionally out-of-date package manifests to testhost
copy:
src: zsh_test_package_manifests/{{ item }}
# Plus-sign must be added at the destination
# CI doesn't like files with '+' in them in the repository
dest: '{{ pkgng_test_outofdate_pkg_tempdir }}/+{{ item }}'
loop:
- COMPACT_MANIFEST
- MANIFEST
- name: Create out-of-date test package file
command: 'tar -C {{ pkgng_test_outofdate_pkg_tempdir }} -cJf {{ pkgng_test_outofdate_pkg_path }} +COMPACT_MANIFEST +MANIFEST'
- name: Remove temporary directory
file:
state: absent
path: '{{ pkgng_test_outofdate_pkg_tempdir }}'

View file

@ -2,35 +2,35 @@
## ##
## pkgng - example - state=present for single package ## pkgng - example - state=present for single package
## ##
- name: Verify zsh binary is not present - name: Verify package sentinel file is not present
stat: stat:
path: /usr/local/bin/zsh path: '{{ pkgng_test_pkg_sentinelfile_path }}'
get_attributes: no get_attributes: no
get_checksum: no get_checksum: no
get_mime: no get_mime: no
register: pkgng_example1_stat_before register: pkgng_example1_stat_before
- name: Install zsh - name: Install package
pkgng: pkgng:
name: zsh name: '{{ pkgng_test_pkg_name }}'
register: pkgng_example1 register: pkgng_example1
- name: Remove zsh (checkmode) - name: Remove package (checkmode)
pkgng: pkgng:
name: zsh name: '{{ pkgng_test_pkg_name }}'
state: absent state: absent
check_mode: yes check_mode: yes
register: pkgng_example1_checkmode register: pkgng_example1_checkmode
- name: Install zsh (idempotent, cached) - name: Install package (idempotent, cached)
pkgng: pkgng:
name: zsh name: '{{ pkgng_test_pkg_name }}'
cached: yes cached: yes
register: pkgng_example1_idempotent_cached register: pkgng_example1_idempotent_cached
- name: Verify zsh binary is present - name: Verify package sentinel file is present
stat: stat:
path: /usr/local/bin/zsh path: '{{ pkgng_test_pkg_sentinelfile_path }}'
get_attributes: no get_attributes: no
get_checksum: no get_checksum: no
get_mime: no get_mime: no
@ -50,9 +50,9 @@
## ##
## pkgng - example - state=latest for already up-to-date package ## pkgng - example - state=latest for already up-to-date package
## ##
- name: Upgrade zsh (idempotent) - name: Upgrade package (idempotent)
pkgng: pkgng:
name: zsh name: '{{ pkgng_test_pkg_name }}'
state: latest state: latest
register: pkgng_example2 register: pkgng_example2
@ -61,37 +61,38 @@
that: that:
- not pkgng_example2.changed - not pkgng_example2.changed
##
## pkgng - example - state=absent for single package ## pkgng - example - state=absent for single package
## ##
- name: Verify zsh binary is present - name: Verify package sentinel file is present
stat: stat:
path: /usr/local/bin/zsh path: '{{ pkgng_test_pkg_sentinelfile_path }}'
get_attributes: no get_attributes: no
get_checksum: no get_checksum: no
get_mime: no get_mime: no
register: pkgng_example3_stat_before register: pkgng_example3_stat_before
- name: Install zsh (checkmode) - name: Install package (checkmode)
pkgng: pkgng:
name: zsh name: '{{ pkgng_test_pkg_name }}'
check_mode: yes check_mode: yes
register: pkgng_example3_checkmode register: pkgng_example3_checkmode
- name: Remove zsh - name: Remove package
pkgng: pkgng:
name: zsh name: '{{ pkgng_test_pkg_name }}'
state: absent state: absent
register: pkgng_example3 register: pkgng_example3
- name: Remove zsh (idempotent) - name: Remove package (idempotent)
pkgng: pkgng:
name: zsh name: '{{ pkgng_test_pkg_name }}'
state: absent state: absent
register: pkgng_example3_idempotent register: pkgng_example3_idempotent
- name: Verify zsh binary is not present - name: Verify package sentinel file is not present
stat: stat:
path: /usr/local/bin/zsh path: '{{ pkgng_test_pkg_sentinelfile_path }}'
get_attributes: no get_attributes: no
get_checksum: no get_checksum: no
get_mime: no get_mime: no
@ -113,7 +114,7 @@
- name: Install intentionally out-of-date package and upgrade it - name: Install intentionally out-of-date package and upgrade it
# #
# NOTE: The out-of-date package provided is a minimal, # NOTE: The out-of-date package provided is a minimal,
# no-contents test package that declares zsh with # no-contents test package that declares {{ pkgng_test_pkg_name }} with
# a version of 0, so it should always be upgraded. # a version of 0, so it should always be upgraded.
# #
# This test might fail at some point in the # This test might fail at some point in the
@ -122,26 +123,11 @@
# older package formats. # older package formats.
# #
block: block:
- name: Create temporary directory to assemble test package
file:
state: directory
path: /tmp/zsh_test_package
- name: Copy intentionally out-of-date package manifests to testhost
copy:
src: zsh_test_package_manifests/{{ item }}
# Plus-sign must be added at the destination
# CI doesn't like files with '+' in them in the repository
dest: /tmp/zsh_test_package/+{{ item }}
loop:
- COMPACT_MANIFEST
- MANIFEST
- name: Create out-of-date test package - name: Create out-of-date test package
command: tar -C /tmp/zsh_test_package -cJf /tmp/zsh-0__test.pkg +COMPACT_MANIFEST +MANIFEST import_tasks: create-outofdate-pkg.yml
- name: Install out-of-date test package - name: Install out-of-date test package
command: pkg add /tmp/zsh-0__test.pkg command: 'pkg add {{ pkgng_test_outofdate_pkg_path }}'
register: pkgng_example4_prepare register: pkgng_example4_prepare
- name: Check for any available package upgrades (checkmode) - name: Check for any available package upgrades (checkmode)
@ -153,26 +139,26 @@
- name: Check for available package upgrade (checkmode) - name: Check for available package upgrade (checkmode)
pkgng: pkgng:
name: zsh name: '{{ pkgng_test_pkg_name }}'
state: latest state: latest
check_mode: yes check_mode: yes
register: pkgng_example4_checkmode register: pkgng_example4_checkmode
- name: Upgrade out-of-date package - name: Upgrade out-of-date package
pkgng: pkgng:
name: zsh name: '{{ pkgng_test_pkg_name }}'
state: latest state: latest
register: pkgng_example4 register: pkgng_example4
- name: Upgrade out-of-date package (idempotent) - name: Upgrade out-of-date package (idempotent)
pkgng: pkgng:
name: zsh name: '{{ pkgng_test_pkg_name }}'
state: latest state: latest
register: pkgng_example4_idempotent register: pkgng_example4_idempotent
- name: Remove test out-of-date package - name: Remove test out-of-date package
pkgng: pkgng:
name: zsh name: '{{ pkgng_test_pkg_name }}'
state: absent state: absent
- name: Ensure pkgng upgrades package correctly - name: Ensure pkgng upgrades package correctly
@ -185,7 +171,7 @@
- not pkgng_example4_idempotent.changed - not pkgng_example4_idempotent.changed
## ##
## pkgng - example - Install zsh in jail ## pkgng - example - Install single package in jail
## ##
- name: Test within jail - name: Test within jail
# #
@ -197,37 +183,37 @@
- name: Setup testjail - name: Setup testjail
include: setup-testjail.yml include: setup-testjail.yml
- name: Verify zsh binary is not present - name: Verify package sentinel file is not present
stat: stat:
path: /usr/jails/testjail/usr/local/bin/zsh path: '/usr/jails/testjail{{ pkgng_test_pkg_sentinelfile_path }}'
get_attributes: no get_attributes: no
get_checksum: no get_checksum: no
get_mime: no get_mime: no
register: pkgng_jail_example1_stat_before register: pkgng_jail_example1_stat_before
- name: Install zsh - name: Install package in jail
pkgng: pkgng:
name: zsh name: '{{ pkgng_test_pkg_name }}'
jail: testjail jail: testjail
register: pkgng_jail_example1 register: pkgng_jail_example1
- name: Remove zsh (checkmode) - name: Remove package (checkmode)
pkgng: pkgng:
name: zsh name: '{{ pkgng_test_pkg_name }}'
state: absent state: absent
jail: testjail jail: testjail
check_mode: yes check_mode: yes
register: pkgng_jail_example1_checkmode register: pkgng_jail_example1_checkmode
- name: Install zsh (idempotent) - name: Install package (idempotent)
pkgng: pkgng:
name: zsh name: '{{ pkgng_test_pkg_name }}'
jail: testjail jail: testjail
register: pkgng_jail_example1_idempotent register: pkgng_jail_example1_idempotent
- name: Verify zsh binary is present - name: Verify package sentinel file is present
stat: stat:
path: /usr/jails/testjail/usr/local/bin/zsh path: '/usr/jails/testjail{{ pkgng_test_pkg_sentinelfile_path }}'
get_attributes: no get_attributes: no
get_checksum: no get_checksum: no
get_mime: no get_mime: no

View file

@ -0,0 +1,4 @@
---
pkgng_test_outofdate_pkg_path: "/tmp/zsh-0__test.pkg"
pkgng_test_pkg_name: zsh
pkgng_test_pkg_sentinelfile_path: /usr/local/bin/zsh