headless: Don't run tests during the build

BUG=595353

Review-Url: https://codereview.chromium.org/2411563002
Cr-Commit-Position: refs/heads/master@{#424944}
diff --git a/testing/scripts/headless_python_unittests.py b/testing/scripts/headless_python_unittests.py
new file mode 100755
index 0000000..8df9db06
--- /dev/null
+++ b/testing/scripts/headless_python_unittests.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import json
+import os
+import sys
+
+
+import common
+
+
+def main_run(args):
+  typ_path = os.path.abspath(os.path.join(
+      os.path.dirname(__file__), os.path.pardir, os.path.pardir,
+      'third_party', 'typ'))
+  _AddToPathIfNeeded(typ_path)
+  import typ
+
+  top_level_dir = os.path.join(common.SRC_DIR, 'headless', 'lib', 'browser')
+  with common.temporary_file() as tempfile_path:
+    rc = typ.main(
+        argv=[],
+        top_level_dir=top_level_dir,
+        write_full_results_to=tempfile_path,
+        coverage_source=[top_level_dir])
+
+    with open(tempfile_path) as f:
+      results = json.load(f)
+
+  parsed_results = common.parse_common_test_results(results, test_separator='.')
+  failures = parsed_results['unexpected_failures']
+
+  json.dump({
+      'valid': bool(rc <= common.MAX_FAILURES_EXIT_STATUS and
+                   ((rc == 0) or failures)),
+      'failures': failures.keys(),
+  }, args.output)
+
+  return rc
+
+
+def main_compile_targets(args):
+  json.dump([], args.output)
+
+
+def _AddToPathIfNeeded(path):
+  if path not in sys.path:
+    sys.path.insert(0, path)
+
+
+if __name__ == '__main__':
+  funcs = {
+    'run': main_run,
+    'compile_targets': main_compile_targets,
+  }
+  sys.exit(common.run_script(sys.argv[1:], funcs))