diff --git a/buildkite/pipelines/bazelci.py b/buildkite/pipelines/bazelci.py
index 482ed9a..88858ea 100644
--- a/buildkite/pipelines/bazelci.py
+++ b/buildkite/pipelines/bazelci.py
@@ -140,14 +140,14 @@
 
 
 def downstream_projects_root(platform):
-    path = os.path.join(agent_directory(platform), "downstream-projects")
-    if not os.path.exists(path):
-        os.makedirs(path)
-    return path
+  path = os.path.join(agent_directory(platform), "downstream-projects")
+  if not os.path.exists(path):
+    os.makedirs(path)
+  return path
 
 
 def agent_directory(platform):
-    return os.path.expandvars(platforms_info()[platform]["agent-directory"])
+  return os.path.expandvars(platforms_info()[platform]["agent-directory"])
 
 
 def supported_platforms():
@@ -233,15 +233,17 @@
   clone_path = os.path.join(root, project_name)
   print("\n--- Fetching " + project_name + " sources")
   if os.path.exists(clone_path):
-      shutil.rmtree(clone_path)
+    shutil.rmtree(clone_path)
   fail_if_nonzero(execute_command(["git", "clone", git_repository, clone_path]))
   os.chdir(clone_path)
 
+
 def cleanup(bazel_binary):
   if os.path.exists("WORKSPACE"):
     print("\n--- Cleanup")
     fail_if_nonzero(execute_command([bazel_binary, "clean", "--expunge"]))
 
+
 def execute_shell_commands(commands):
   if not commands:
     return
@@ -283,9 +285,12 @@
 def upload_failed_test_logs(bep_file, tmpdir):
   if not os.path.exists(bep_file):
     return
-  for logfile in failed_logs_from_bep(bep_file, tmpdir):
-    fail_if_nonzero(execute_command(["buildkite-agent", "artifact", "upload",
-                                     logfile]))
+  logfiles = failed_logs_from_bep(bep_file, tmpdir)
+  if logfiles:
+    print("\n--- Uploading failed test logs")
+    for logfile in logfiles:
+      fail_if_nonzero(execute_command(["buildkite-agent", "artifact", "upload",
+                                       logfile]))
 
 
 def failed_logs_from_bep(bep_file, tmpdir):
