From 00d758af260d72de093e96f748777002ac521a14 Mon Sep 17 00:00:00 2001
From: Albin Vass <albin.vass@gmail.com>
Date: Tue, 12 May 2020 11:54:23 +0200
Subject: [PATCH] Ensure output dirs are empty

Change-Id: I813ecc32c9781091dc7faf67dcc99dfe88bbaa5d
---
 roles/ensure-output-dirs/README.rst           |  2 +-
 roles/ensure-output-dirs/tasks/main.yaml      | 11 +++++++
 .../base-roles/ensure-output-dirs.yaml        | 30 +++++++++++++++++++
 3 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/roles/ensure-output-dirs/README.rst b/roles/ensure-output-dirs/README.rst
index 18709873b..23b7de386 100644
--- a/roles/ensure-output-dirs/README.rst
+++ b/roles/ensure-output-dirs/README.rst
@@ -1,4 +1,4 @@
-Ensure output directories are in place
+Ensure output directories are in place and are empty.
 
 **Role Variables**
 
diff --git a/roles/ensure-output-dirs/tasks/main.yaml b/roles/ensure-output-dirs/tasks/main.yaml
index 40238d529..e10f42aa9 100644
--- a/roles/ensure-output-dirs/tasks/main.yaml
+++ b/roles/ensure-output-dirs/tasks/main.yaml
@@ -1,3 +1,14 @@
+- name: Empty Zuul Output directories by removing them
+  file:
+    path: "{{ zuul_output_dir }}/{{ zj_output_dir }}"
+    state: absent
+  with_items:
+    - logs
+    - artifacts
+    - docs
+  loop_control:
+    loop_var: zj_output_dir
+
 - name: Ensure Zuul Output directories exist
   file:
     path: "{{ zuul_output_dir }}/{{ zj_output_dir }}"
diff --git a/test-playbooks/base-roles/ensure-output-dirs.yaml b/test-playbooks/base-roles/ensure-output-dirs.yaml
index e0e37db3e..2fae87c77 100644
--- a/test-playbooks/base-roles/ensure-output-dirs.yaml
+++ b/test-playbooks/base-roles/ensure-output-dirs.yaml
@@ -30,3 +30,33 @@
           - artifact_directory is succeeded
           - doc_directory is not changed
           - doc_directory is succeeded
+
+    - name: Add a logfile, artifact, and doc item
+      file:
+        path: "{{ zuul_output_dir }}/{{ item }}/file.txt"
+        state: touch
+      loop:
+        - docs
+        - artifacts
+        - logs
+
+    - name: Run ensure-output-dirs
+      include_role:
+        name: ensure-output-dirs
+
+    - name: Make sure output dirs were emptied
+      file:
+        path: "{{ zuul_output_dir }}/{{ item }}/file.txt"
+        state: absent
+      register: output_items
+      loop:
+        - docs
+        - artifacts
+        - logs
+
+    - name: Validate that files were removed in ensure-output-dirs
+      loop: "{{ output_items.results }}"
+      assert:
+        that:
+          - item is not changed
+          - item is succeeded