summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/ansible-galaxy-collection/tasks/list.yml
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration/targets/ansible-galaxy-collection/tasks/list.yml')
-rw-r--r--test/integration/targets/ansible-galaxy-collection/tasks/list.yml167
1 files changed, 167 insertions, 0 deletions
diff --git a/test/integration/targets/ansible-galaxy-collection/tasks/list.yml b/test/integration/targets/ansible-galaxy-collection/tasks/list.yml
new file mode 100644
index 0000000..b8d6349
--- /dev/null
+++ b/test/integration/targets/ansible-galaxy-collection/tasks/list.yml
@@ -0,0 +1,167 @@
+- name: initialize collection structure
+ command: ansible-galaxy collection init {{ item }} --init-path "{{ galaxy_dir }}/dev/ansible_collections" {{ galaxy_verbosity }}
+ loop:
+ - 'dev.collection1'
+ - 'dev.collection2'
+ - 'dev.collection3'
+ - 'dev.collection4'
+ - 'dev.collection5'
+ - 'dev.collection6'
+
+- name: replace the default version of the collections
+ lineinfile:
+ path: "{{ galaxy_dir }}/dev/ansible_collections/dev/{{ item.name }}/galaxy.yml"
+ line: "{{ item.version }}"
+ regexp: "version: .*"
+ loop:
+ - name: "collection1"
+ version: "version: null"
+ - name: "collection2"
+ version: "version: placeholder"
+ - name: "collection3"
+ version: "version: ''"
+
+- name: set the namespace, name, and version keys to None
+ lineinfile:
+ path: "{{ galaxy_dir }}/dev/ansible_collections/dev/collection4/galaxy.yml"
+ line: "{{ item.after }}"
+ regexp: "{{ item.before }}"
+ loop:
+ - before: "^namespace: dev"
+ after: "namespace:"
+ - before: "^name: collection4"
+ after: "name:"
+ - before: "^version: 1.0.0"
+ after: "version:"
+
+- name: replace galaxy.yml content with a string
+ copy:
+ content: "invalid"
+ dest: "{{ galaxy_dir }}/dev/ansible_collections/dev/collection5/galaxy.yml"
+
+- name: remove galaxy.yml key required by build
+ lineinfile:
+ path: "{{ galaxy_dir }}/dev/ansible_collections/dev/collection6/galaxy.yml"
+ line: "version: 1.0.0"
+ state: absent
+
+- name: list collections in development without semver versions
+ command: ansible-galaxy collection list {{ galaxy_verbosity }}
+ register: list_result
+ environment:
+ ANSIBLE_COLLECTIONS_PATH: "{{ galaxy_dir }}/dev:{{ galaxy_dir }}/prod"
+
+- assert:
+ that:
+ - "'dev.collection1 *' in list_result.stdout"
+ # Note the version displayed is the 'placeholder' string rather than "*" since it is not falsey
+ - "'dev.collection2 placeholder' in list_result.stdout"
+ - "'dev.collection3 *' in list_result.stdout"
+ - "'dev.collection4 *' in list_result.stdout"
+ - "'dev.collection5 *' in list_result.stdout"
+ - "'dev.collection6 *' in list_result.stdout"
+
+- name: list collections in human format
+ command: ansible-galaxy collection list --format human
+ register: list_result_human
+ environment:
+ ANSIBLE_COLLECTIONS_PATH: "{{ galaxy_dir }}/dev:{{ galaxy_dir }}/prod"
+
+- assert:
+ that:
+ - "'dev.collection1 *' in list_result_human.stdout"
+ # Note the version displayed is the 'placeholder' string rather than "*" since it is not falsey
+ - "'dev.collection2 placeholder' in list_result_human.stdout"
+ - "'dev.collection3 *' in list_result_human.stdout"
+ - "'dev.collection5 *' in list_result.stdout"
+ - "'dev.collection6 *' in list_result.stdout"
+
+- name: list collections in yaml format
+ command: ansible-galaxy collection list --format yaml
+ register: list_result_yaml
+ environment:
+ ANSIBLE_COLLECTIONS_PATH: "{{ galaxy_dir }}/dev:{{ galaxy_dir }}/prod"
+
+- assert:
+ that:
+ - "item.value | length == 6"
+ - "item.value['dev.collection1'].version == '*'"
+ - "item.value['dev.collection2'].version == 'placeholder'"
+ - "item.value['dev.collection3'].version == '*'"
+ - "item.value['dev.collection5'].version == '*'"
+ - "item.value['dev.collection6'].version == '*'"
+ with_dict: "{{ list_result_yaml.stdout | from_yaml }}"
+
+- name: list collections in json format
+ command: ansible-galaxy collection list --format json
+ register: list_result_json
+ environment:
+ ANSIBLE_COLLECTIONS_PATH: "{{ galaxy_dir }}/dev:{{ galaxy_dir }}/prod"
+
+- assert:
+ that:
+ - "item.value | length == 6"
+ - "item.value['dev.collection1'].version == '*'"
+ - "item.value['dev.collection2'].version == 'placeholder'"
+ - "item.value['dev.collection3'].version == '*'"
+ - "item.value['dev.collection5'].version == '*'"
+ - "item.value['dev.collection6'].version == '*'"
+ with_dict: "{{ list_result_json.stdout | from_json }}"
+
+- name: list single collection in json format
+ command: "ansible-galaxy collection list {{ item.key }} --format json"
+ register: list_single_result_json
+ environment:
+ ANSIBLE_COLLECTIONS_PATH: "{{ galaxy_dir }}/dev:{{ galaxy_dir }}/prod"
+ with_dict: "{{ { 'dev.collection1': '*', 'dev.collection2': 'placeholder', 'dev.collection3': '*' } }}"
+
+- assert:
+ that:
+ - "(item.stdout | from_json)[galaxy_dir + '/dev/ansible_collections'][item.item.key].version == item.item.value"
+ with_items: "{{ list_single_result_json.results }}"
+
+- name: list single collection in yaml format
+ command: "ansible-galaxy collection list {{ item.key }} --format yaml"
+ register: list_single_result_yaml
+ environment:
+ ANSIBLE_COLLECTIONS_PATH: "{{ galaxy_dir }}/dev:{{ galaxy_dir }}/prod"
+ with_dict: "{{ { 'dev.collection1': '*', 'dev.collection2': 'placeholder', 'dev.collection3': '*' } }}"
+
+- assert:
+ that:
+ - "(item.stdout | from_yaml)[galaxy_dir + '/dev/ansible_collections'][item.item.key].version == item.item.value"
+ with_items: "{{ list_single_result_json.results }}"
+
+- name: test that no json is emitted when no collection paths are usable
+ command: "ansible-galaxy collection list --format json"
+ register: list_result_error
+ ignore_errors: True
+ environment:
+ ANSIBLE_COLLECTIONS_PATH: ""
+
+- assert:
+ that:
+ - "'{}' not in list_result_error.stdout"
+
+- name: install an artifact to the second collections path
+ command: ansible-galaxy collection install namespace1.name1 -s galaxy_ng {{ galaxy_verbosity }} -p "{{ galaxy_dir }}/prod"
+ environment:
+ ANSIBLE_CONFIG: '{{ galaxy_dir }}/ansible.cfg'
+
+- name: replace the artifact version
+ lineinfile:
+ path: "{{ galaxy_dir }}/prod/ansible_collections/namespace1/name1/MANIFEST.json"
+ line: ' "version": null,'
+ regexp: ' "version": .*'
+
+- name: test listing collections in all paths
+ command: ansible-galaxy collection list {{ galaxy_verbosity }}
+ register: list_result
+ ignore_errors: True
+ environment:
+ ANSIBLE_COLLECTIONS_PATH: "{{ galaxy_dir }}/dev:{{ galaxy_dir }}/prod"
+
+- assert:
+ that:
+ - list_result is failed
+ - "'is expected to have a valid SemVer version value but got None' in list_result.stderr"