ansible/test/integration/targets/git/tasks/change-repo-url.yml
Abhijeet Kasurde a047fe0e4c Correct usage for shutil.rmtree (#31541)
* Correct usage for shutil.rmtree

Fix adds correct usage of shutil.rmtree in git module

Fixes: #31225

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>

* Include archive tests so they get run

* Use new include syntax

* Cleanup syntax on git tests

- use multi-line YAML
- remove unneeded {{ }} around vars in conditionals
- remove unneeded quotes
- add task file name to task names for easier troubleshooting when things fail

* Make archive tests work for RHEL/CentOS 6

The older versions of Jinja2 in RHEL/CentOS 6 required assertion tasks using the map filter to be skipped.

The older version of git required gzip compression to be skipped on RHEL/CentOS 6.

* Account for ansible_distribution_major_version missing
2017-10-13 10:30:15 -04:00

132 lines
3.5 KiB
YAML

# test change of repo url
# see https://github.com/ansible/ansible-modules-core/pull/721
- name: CHANGE-REPO-URL | clear checkout_dir
file:
state: absent
path: "{{ checkout_dir }}"
- name: CHANGE-REPO-URL | Clone example git repo
git:
repo: "{{ repo_update_url_1 }}"
dest: "{{ checkout_dir }}"
- name: CHANGE-REPO-URL | Clone repo with changed url to the same place
git:
repo: "{{ repo_update_url_2 }}"
dest: "{{ checkout_dir }}"
register: clone2
- assert:
that: "clone2|success"
- name: CHANGE-REPO-URL | check url updated
shell: git remote show origin | grep Fetch
register: remote_url
args:
chdir: "{{ checkout_dir }}"
environment:
LC_ALL: C
- assert:
that:
- "'git-test-new' in remote_url.stdout"
- "'git-test-old' not in remote_url.stdout"
- name: CHANGE-REPO-URL | check for new content in git-test-new
stat: path={{ checkout_dir }}/newfilename
register: repo_content
- name: CHANGE-REPO-URL | assert presence of new file in repo (i.e. working copy updated)
assert:
that: "repo_content.stat.exists"
# Make sure 'changed' result is accurate in check mode.
# See https://github.com/ansible/ansible-modules-core/pull/4243
- name: CHANGE-REPO-URL | clear checkout_dir
file:
state: absent
path: "{{ checkout_dir }}"
- name: CHANGE-REPO-URL | clone repo
git:
repo: "{{ repo_update_url_1 }}"
dest: "{{ checkout_dir }}"
- name: CHANGE-REPO-URL | clone repo with same url to same destination
git:
repo: "{{ repo_update_url_1 }}"
dest: "{{ checkout_dir }}"
register: checkout_same_url
- name: CHANGE-REPO-URL | check repo not changed
assert:
that:
- not checkout_same_url|changed
- name: CHANGE-REPO-URL | clone repo with new url to same destination
git:
repo: "{{ repo_update_url_2 }}"
dest: "{{ checkout_dir }}"
register: checkout_new_url
- name: CHANGE-REPO-URL | check repo changed
assert:
that:
- checkout_new_url|changed
- name: CHANGE-REPO-URL | clone repo with new url in check mode
git:
repo: "{{ repo_update_url_1 }}"
dest: "{{ checkout_dir }}"
register: checkout_new_url_check_mode
check_mode: True
- name: CHANGE-REPO-URL | check repo reported changed in check mode
assert:
that:
- checkout_new_url_check_mode | changed
when: git_version.stdout | version_compare(git_version_supporting_ls_remote, '>=')
- name: CHANGE-REPO-URL | clone repo with new url after check mode
git:
repo: "{{ repo_update_url_1 }}"
dest: "{{ checkout_dir }}"
register: checkout_new_url_after_check_mode
- name: CHANGE-REPO-URL | check repo still changed after check mode
assert:
that:
- checkout_new_url_after_check_mode|changed
# Test that checkout by branch works when the branch is not in our current repo but the sha is
- name: CHANGE-REPO-URL | clear checkout_dir
file:
state: absent
path: "{{ checkout_dir }}"
- name: CHANGE-REPO-URL | "Clone example git repo that we're going to modify"
git:
repo: "{{ repo_update_url_1 }}"
dest: "{{ checkout_dir }}/repo"
- name: CHANGE-REPO-URL | Clone the repo again - this is what we test
git:
repo: "{{ checkout_dir }}/repo"
dest: "{{ checkout_dir }}/checkout"
- name: CHANGE-REPO-URL | Add a branch to the repo
command: git branch new-branch
args:
chdir: "{{ checkout_dir }}/repo"
- name: CHANGE-REPO-URL | Checkout the new branch in the checkout
git:
repo: "{{ checkout_dir}}/repo"
version: 'new-branch'
dest: "{{ checkout_dir }}/checkout"