Support extracting subunit files.
[amitay/build-farm.git] / tools / fix.py
index 9cec88f9704b27403f4f2f35a882471fbb62c218..b4cc1725ff3071530a357ceaa744147d12472248 100755 (executable)
@@ -8,11 +8,13 @@ from buildfarm.build import (
     build_status_from_logs,
     LogFileMissing,
     MissingRevisionInfo,
+    NoTestOutput,
     revision_from_log,
+    extract_test_output,
     )
 from buildfarm.hostdb import NoSuchHost
 
-from buildfarm.sqldb import BuildFarm, StormBuild
+from buildfarm import BuildFarm, StormBuild
 
 buildfarm = BuildFarm()
 
@@ -58,4 +60,19 @@ for build in store.find(StormBuild, StormBuild.host_id == None):
     except NoSuchHost, e:
         print "Unable to find host %s" % e.name
 
+
+for build in store.find(StormBuild, StormBuild.basename != None):
+    subunit_path = build.basename + ".subunit"
+    if os.path.exists(subunit_path):
+        continue
+    try:
+        test_output = "".join(extract_test_output(build.read_log()))
+    except (LogFileMissing, NoTestOutput):
+        continue
+    f = open(subunit_path, 'w')
+    try:
+        f.write(test_output)
+    finally:
+        f.close()
+
 buildfarm.commit()