ansible/test/integration/targets/git/tasks/separate-git-dir.yml
Zhikang Zhang d7921b4d5b
Support --separate-git-dir option in Git module ()
Make git module support --separate-git-dir option. When git version is higher than 1.7.5, use built-in --separate-git-dir option during the clone. When lower, adjust the location of git dir manually after clone to achieve the same effect.
2018-08-17 10:43:04 -04:00

132 lines
3.3 KiB
YAML

# test code for repositories with separate git dir updating
# see https://github.com/ansible/ansible/pull/38016
# see https://github.com/ansible/ansible/issues/30034
- name: SEPARATE-GIT-DIR | clear checkout_dir
file:
state: absent
path: '{{ checkout_dir }}'
- name: SEPARATE-GIT-DIR | make a pre-exist repo dir
file:
state: directory
path: '{{ separate_git_dir }}'
- name: SEPARATE-GIT-DIR | clone with a separate git dir
git:
repo: '{{ repo_format1 }}'
dest: '{{ checkout_dir }}'
separate_git_dir: '{{ separate_git_dir }}'
ignore_errors: yes
register: result
- name: SEPARATE-GIT-DIR | the clone will fail due to pre-exist dir
assert:
that: 'result is failed'
- name: SEPARATE-GIT-DIR | delete pre-exist dir
file:
state: absent
path: '{{ separate_git_dir }}'
- name: SEPARATE-GIT-DIR | clone again with a separate git dir
git:
repo: '{{ repo_format1 }}'
dest: '{{ checkout_dir }}'
separate_git_dir: '{{ separate_git_dir }}'
- name: SEPARATE-GIT-DIR | check the stat of git dir
stat:
path: '{{ separate_git_dir }}'
register: stat_result
- name: SEPARATE-GIT-DIR | the git dir should exist
assert:
that: 'stat_result.stat.exists == True'
- name: SEPARATE-GIT-DIR | update repo the usual way
git:
repo: '{{ repo_format1 }}'
dest: '{{ checkout_dir }}'
separate_git_dir: '{{ separate_git_dir }}'
register: result
- name: SEPARATE-GIT-DIR | update should not fail
assert:
that:
- result is not failed
- name: SEPARATE-GIT-DIR | move the git dir to new place
git:
repo: '{{ repo_format1 }}'
dest: '{{ checkout_dir }}'
separate_git_dir: '{{ separate_git_dir }}_new'
register: result
- name: SEPARATE-GIT-DIR | the movement should not failed
assert:
that: 'result is not failed'
- name: SEPARATE-GIT-DIR | check the stat of new git dir
stat:
path: '{{ separate_git_dir }}_new'
register: stat_result
- name: SEPARATE-GIT-DIR | the new git dir should exist
assert:
that: 'stat_result.stat.exists == True'
- name: SEPARATE-GIT-DIR | test the update
git:
repo: '{{ repo_format1 }}'
dest: '{{ checkout_dir }}'
register: result
- name: SEPARATE-GIT-DIR | the update should not failed
assert:
that:
- result is not failed
- name: SEPARATE-GIT-DIR | set git dir to non-existent dir
shell: "echo gitdir: /dev/null/non-existent-dir > .git"
args:
chdir: "{{ checkout_dir }}"
- name: SEPARATE-GIT-DIR | update repo the usual way
git:
repo: "{{ repo_format1 }}"
dest: "{{ checkout_dir }}"
ignore_errors: yes
register: result
- name: SEPARATE-GIT-DIR | check update has failed
assert:
that:
- result is failed
- name: SEPARATE-GIT-DIR | set .git file to bad format
shell: "echo some text gitdir: {{ checkout_dir }} > .git"
args:
chdir: "{{ checkout_dir }}"
- name: SEPARATE-GIT-DIR | update repo the usual way
git:
repo: "{{ repo_format1 }}"
dest: "{{ checkout_dir }}"
ignore_errors: yes
register: result
- name: SEPARATE-GIT-DIR | check update has failed
assert:
that:
- result is failed
- name: SEPARATE-GIT-DIR | clear separate git dir
file:
state: absent
path: "{{ separate_git_dir }}_new"
- name: SEPARATE-GIT-DIR | clear checkout_dir
file:
state: absent
path: '{{ checkout_dir }}'