give test.log paths more meaningful names
diff --git a/buildkite/bazelci.py b/buildkite/bazelci.py
index aacc8bf..df3bc5b 100644
--- a/buildkite/bazelci.py
+++ b/buildkite/bazelci.py
@@ -391,16 +391,39 @@
 def upload_failed_test_logs(bep_file, tmpdir):
   if not os.path.exists(bep_file):
     return
-  logfiles = failed_logs_from_bep(bep_file, tmpdir)
+  logfiles = failed_test_logs(bep_file, tmpdir)
   if logfiles:
-    print_collapsed_group("Uploading failed test logs")
-    for logfile in logfiles:
-      fail_if_nonzero(execute_command(["buildkite-agent", "artifact", "upload",
-                                       logfile]))
+    print_collapsed_group("Uploading logs of failed tests")
+    cwd = os.getcwd()
+    try:
+      os.chdir(tmpdir)
+      for logfile in logfiles:
+        fail_if_nonzero(execute_command(["buildkite-agent", "artifact", "upload",
+                                         logfile]))
+    finally:
+      os.chdir(cwd)
 
 
-def failed_logs_from_bep(bep_file, tmpdir):
+def failed_test_logs(bep_file, tmpdir):
   test_logs = []
+  for label, test_log in test_targets_with_status(bep_file, status="FAILED"):
+    new_path = test_label_to_path(tmpdir, label)
+    os.makedirs(os.path.dirname(new_path), exist_ok=True)
+    copyfile(test_log, new_path)
+    test_logs.append((label, new_path))
+  return test_logs
+
+
+def test_label_to_path(tmpdir, label):
+  # remove leading //
+  path = label[2:]
+  path = path.replace(":", "/")
+  path = os.path.join(path, "test.log")
+  return os.path.join(tmpdir, path)
+
+
+def test_targets_with_status(bep_file, status):
+  targets = []
   raw_data = ""
   with open(bep_file) as f:
     raw_data = f.read()
@@ -408,27 +431,17 @@
 
   pos = 0
   while pos < len(raw_data):
-    json_dict, size = decoder.raw_decode(raw_data[pos:])
-    if "testResult" in json_dict:
-      test_result = json_dict["testResult"]
-      if test_result["status"] != "PASSED":
+    bep_obj, size = decoder.raw_decode(raw_data[pos:])
+    if "testResult" in bep_obj:
+      test_result = bep_obj["testResult"]
+      if test_result["status"] == status:
         outputs = test_result["testActionOutput"]
         for output in outputs:
           if output["name"] == "test.log":
-            new_path = label_to_path(
-                tmpdir, json_dict["id"]["testResult"]["label"])
-            os.makedirs(os.path.dirname(new_path), exist_ok=True)
-            copyfile(urlparse(output["uri"]).path, new_path)
-            test_logs.append(new_path)
+            targets.append((bep_obj["id"]["testResult"]
+                            ["label"], urlparse(output["uri"]).path))
     pos += size + 1
-  return test_logs
-
-
-def label_to_path(tmpdir, label):
-  # remove leading //
-  path = label[2:]
-  path = path.replace(":", "/")
-  return os.path.join(tmpdir, path + ".log")
+  return targets
 
 
 def execute_command(args, shell=False):
@@ -624,12 +637,14 @@
   info = json.loads(output.decode("utf-8"))
   return (generation, info["build_number"])
 
+
 def sha256_hexdigest(filename):
-    sha256 = hashlib.sha256()
-    with open(filename, 'rb') as f:
-        for block in iter(lambda: f.read(65536), b''):
-            sha256.update(block)
-    return sha256.hexdigest()
+  sha256 = hashlib.sha256()
+  with open(filename, 'rb') as f:
+    for block in iter(lambda: f.read(65536), b''):
+      sha256.update(block)
+  return sha256.hexdigest()
+
 
 def try_publish_binary(platform, build_number, expected_generation):
   tmpdir = None