From 264a83e02fb698343a8b5c7a9c9bf2094436174b Mon Sep 17 00:00:00 2001
From: David Moreau-Simard <dmsimard@redhat.com>
Date: Tue, 17 Oct 2017 21:11:02 -0400
Subject: [PATCH] Improve test coverage of the fetch-zuul-cloner role and the
 shim

This tests that we are indeed able to use the zuul cloner shim
and that it works as expected with and without required projects.

Change-Id: I537ce7ff417558edb3260acb6424a4a2b54046e4
---
 tests/fetch-zuul-cloner.yaml | 58 ++++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git a/tests/fetch-zuul-cloner.yaml b/tests/fetch-zuul-cloner.yaml
index 67b471b1..70331fe1 100644
--- a/tests/fetch-zuul-cloner.yaml
+++ b/tests/fetch-zuul-cloner.yaml
@@ -24,3 +24,61 @@
           - directory | succeeded
           - cloner.stat.exists
           - cloner.stat.mode == "0755"
+
+    - name: Zuul clone something in required-projects
+      shell:
+        executable: /bin/bash
+        cmd: |
+          CLONEMAP=`mktemp`
+          function cleanup {
+              rm -f $CLONEMAP
+          }
+          trap cleanup EXIT
+          cat > $CLONEMAP << EOF
+          clonemap:
+            - name: openstack-infra/project-config
+              dest: {{ ansible_user_dir }}
+          EOF
+          /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP \
+              --cache-dir /opt/git git://git.openstack.org \
+              openstack-infra/project-config
+      register: clone_with_required
+
+    - name: Check if repository was cloned
+      stat:
+        path: "{{ ansible_user_dir }}/src/git.openstack.org/openstack-infra/project-config"
+      register: with_required_stat
+
+    - name: Zuul clone something not in required-projects
+      shell:
+        executable: /bin/bash
+        cmd: |
+          CLONEMAP=`mktemp`
+          function cleanup {
+              rm -f $CLONEMAP
+          }
+          trap cleanup EXIT
+          cat > $CLONEMAP << EOF
+          clonemap:
+            - name: openstack-infra/jenkins-job-builder
+              dest: {{ ansible_user_dir }}
+          EOF
+          /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP \
+              --cache-dir /opt/git git://git.openstack.org \
+              openstack-infra/jenkins-job-builder
+      ignore_errors: yes
+      register: clone_without_required
+
+    - name: Check if repository was cloned
+      stat:
+        path: "{{ ansible_user_dir }}/src/git.openstack.org/opentack-infra/jenkins-job-builder"
+      register: without_required_stat
+
+    - name: Validate zuul-cloner shim results
+      assert:
+        that:
+          - clone_with_required | succeeded
+          - clone_with_required | changed
+          - with_required_stat.stat.exists
+          - clone_without_required | failed
+          - not without_required_stat.stat.exists