- name: make a requirements directory file: state: directory path: '{{ galaxy_dir }}/requirements' - name: populate requirement templates template: src: "{{ item }}" dest: "{{ galaxy_dir }}/requirements/{{ item }}" loop: - source_only.yml - source_and_name.yml - source_and_name_and_type.yml - name_without_type.yml - git_prefix_name.yml - name_and_type.yml - name: test source is not a git repo command: 'ansible-galaxy collection install -r source_only.yml' register: result ignore_errors: true args: chdir: '{{ galaxy_dir }}/requirements' - assert: that: - result.failed - >- "ERROR! Neither the collection requirement entry key 'name', nor 'source' point to a concrete resolvable collection artifact. Also 'name' is not an FQCN. A valid collection name must be in the format .. Please make sure that the namespace and the collection name contain characters from [a-zA-Z0-9_] only." in result.stderr - name: test source is not a git repo even if name is provided command: 'ansible-galaxy collection install -r source_and_name.yml' register: result ignore_errors: true args: chdir: '{{ galaxy_dir }}/requirements' - assert: that: - result.failed - >- result.stderr is search("ERROR! Collections requirement 'source' entry should contain a valid Galaxy API URL but it does not: git\+file:///.*/amazon.aws/.git is not an HTTP URL.") - name: test source is not a git repo even if name and type is provided command: 'ansible-galaxy collection install -r source_and_name_and_type.yml' register: result ignore_errors: true args: chdir: '{{ galaxy_dir }}/requirements' - assert: that: - result.failed - >- result.stderr is search("ERROR! Failed to clone a Git repository from `file:///.*/.git`.") - >- result.stderr is search("fatal: '/.*/amazon.aws/.git' does not appear to be a git repository") - name: test using name as a git repo without git+ prefix command: 'ansible-galaxy collection install -r name_without_type.yml' register: result ignore_errors: true args: chdir: '{{ galaxy_dir }}/requirements' - assert: that: - result.failed - '"name must be in the format ." in result.stderr' - name: Clone a git repository git: repo: https://github.com/ansible-collections/amazon.aws.git dest: '{{ galaxy_dir }}/development/amazon.aws/' - name: test using name as a git repo command: 'ansible-galaxy collection install -r git_prefix_name.yml' register: result args: chdir: '{{ galaxy_dir }}/requirements' - name: test using name plus type as a git repo command: 'ansible-galaxy collection install -r name_and_type.yml --force' register: result args: chdir: '{{ galaxy_dir }}/requirements' - name: remove the test repo and requirements dir file: path: '{{ item }}' state: absent loop: - '{{ galaxy_dir }}/development/amazon.aws/' - '{{ galaxy_dir }}/requirements'