# # Submodule tests # # Repository A with submodules defined (repo_submodules) # .gitmodules file points to Repository I # Repository B forked from A that has newer commits (repo_submodules_newer) # .gitmodules file points to Repository II instead of I # .gitmodules file also points to Repository III # Repository I for submodule1 (repo_submodule1) # Has 1 file checked in # Repository II forked from I that has newer commits (repo_submodule1_newer) # Has 2 files checked in # Repository III for a second submodule (repo_submodule2) # Has 1 file checked in - name: SUBMODULES | clear checkout_dir file: state: absent path: "{{ checkout_dir }}" - name: SUBMODULES | Test that clone without recursive does not retrieve submodules git: repo: "{{ repo_submodules }}" version: 45c6c07ef10fd9e453d90207e63da1ce5bd3ae1e dest: "{{ checkout_dir }}" recursive: no - name: SUBMODULES | List submodule1 command: 'ls -1a {{ checkout_dir }}/submodule1' register: submodule1 - name: SUBMODULES | Ensure submodule1 is at the appropriate commit assert: that: '{{ submodule1.stdout_lines | length }} == 2' - name: SUBMODULES | clear checkout_dir file: state: absent path: "{{ checkout_dir }}" - name: SUBMODULES | Test that clone with recursive retrieves submodules git: repo: "{{ repo_submodules }}" dest: "{{ checkout_dir }}" version: 45c6c07ef10fd9e453d90207e63da1ce5bd3ae1e recursive: yes - name: SUBMODULES | List submodule1 command: 'ls -1a {{ checkout_dir }}/submodule1' register: submodule1 - name: SUBMODULES | Ensure submodule1 is at the appropriate commit assert: that: '{{ submodule1.stdout_lines | length }} == 4' - name: SUBMODULES | Copy the checkout so we can run several different tests on it command: 'cp -pr {{ checkout_dir }} {{ checkout_dir }}.bak' - name: SUBMODULES | Test that update without recursive does not change submodules git: repo: "{{ repo_submodules }}" version: d2974e4bbccdb59368f1d5eff2205f0fa863297e dest: "{{ checkout_dir }}" recursive: no update: yes track_submodules: yes - name: SUBMODULES | List submodule1 command: 'ls -1a {{ checkout_dir }}/submodule1' register: submodule1 - name: SUBMODULES | Stat submodule2 stat: path: "{{ checkout_dir }}/submodule2" register: submodule2 - name: SUBMODULES | List submodule2 command: ls -1a {{ checkout_dir }}/submodule2 register: submodule2 - name: SUBMODULES | Ensure both submodules are at the appropriate commit assert: that: - '{{ submodule1.stdout_lines|length }} == 4' - '{{ submodule2.stdout_lines|length }} == 2' - name: SUBMODULES | Remove checkout dir file: state: absent path: "{{ checkout_dir }}" - name: SUBMODULES | Restore checkout to prior state command: 'cp -pr {{ checkout_dir }}.bak {{ checkout_dir }}' - name: SUBMODULES | Test that update with recursive updated existing submodules git: repo: "{{ repo_submodules }}" version: d2974e4bbccdb59368f1d5eff2205f0fa863297e dest: "{{ checkout_dir }}" update: yes recursive: yes track_submodules: yes - name: SUBMODULES | List submodule 1 command: 'ls -1a {{ checkout_dir }}/submodule1' register: submodule1 - name: SUBMODULES | Ensure submodule1 is at the appropriate commit assert: that: '{{ submodule1.stdout_lines | length }} == 5' - name: SUBMODULES | Test that update with recursive found new submodules command: 'ls -1a {{ checkout_dir }}/submodule2' register: submodule2 - name: SUBMODULES | Enusre submodule2 is at the appropriate commit assert: that: '{{ submodule2.stdout_lines | length }} == 4' - name: SUBMODULES | clear checkout_dir file: state: absent path: "{{ checkout_dir }}" - name: SUBMODULES | Clone main submodule repository git: repo: "{{ repo_submodules }}" dest: "{{ checkout_dir }}/test.gitdir" version: 45c6c07ef10fd9e453d90207e63da1ce5bd3ae1e recursive: yes - name: SUBMODULES | Test that cloning submodule with .git in directory name works git: repo: "{{ repo_submodule1 }}" dest: "{{ checkout_dir }}/test.gitdir/submodule1" - name: SUBMODULES | List submodule1 command: 'ls -1a {{ checkout_dir }}/test.gitdir/submodule1' register: submodule1 - name: SUBMODULES | Ensure submodule1 is at the appropriate commit assert: that: '{{ submodule1.stdout_lines | length }} == 4'