# # 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 }}" dest: "{{ checkout_dir }}" recursive: no - command: 'ls -1a {{ checkout_dir }}/submodule1' register: submodule1 - 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 }}" recursive: yes - command: 'ls -1a {{ checkout_dir }}/submodule1' register: submodule1 - 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 command: 'git config --replace-all remote.origin.url {{ repo_submodules_newer }}' args: chdir: '{{ checkout_dir }}' - git: repo: "{{ repo_submodules_newer }}" dest: "{{ checkout_dir }}" recursive: no update: yes track_submodules: yes - command: 'ls -1a {{ checkout_dir }}/submodule1' register: submodule1 - stat: path: "{{ checkout_dir }}/submodule2" register: submodule2 - command: ls -1a {{ checkout_dir }}/submodule2 register: submodule2 - assert: that: '{{ submodule1.stdout_lines|length }} == 4' - assert: that: '{{ submodule2.stdout_lines|length }} == 2' - name: SUBMODULES | Restore checkout to prior state file: state: absent path: "{{ checkout_dir }}" - command: 'cp -pr {{ checkout_dir }}.bak {{ checkout_dir }}' - name: SUBMODULES | Test that update with recursive updated existing submodules command: 'git config --replace-all remote.origin.url {{ repo_submodules_newer }}' args: chdir: "{{ checkout_dir }}" - git: repo: "{{ repo_submodules_newer }}" dest: "{{ checkout_dir }}" update: yes recursive: yes track_submodules: yes - command: 'ls -1a {{ checkout_dir }}/submodule1' register: submodule1 - 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 - assert: that: '{{ submodule2.stdout_lines|length }} == 4'