Index: tools/tests/skimage_self_test.py |
diff --git a/tools/tests/skimage_self_test.py b/tools/tests/skimage_self_test.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..94a514458e3f58156e95449755500706cd9da19c |
--- /dev/null |
+++ b/tools/tests/skimage_self_test.py |
@@ -0,0 +1,65 @@ |
+#!/usr/bin/env python |
+# Copyright (c) 2013 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. |
+ |
+# Self-test for skimage. |
+ |
+import os |
+import subprocess |
+import sys |
+ |
+class BinaryNotFoundException(Exception): |
+ def __str__ (self): |
+ return ("Could not find binary!\n" |
+ "Did you forget to build the tools project?\n" |
+ "Self tests failed") |
+ |
+# Find a path to the binary to use. Iterates through a list of possible |
+# locations the binary may be. |
+def PickBinaryPath(base_dir): |
+ POSSIBLE_BINARY_PATHS = [ |
+ 'out/Debug/skimage', |
+ 'out/Release/skimage', |
+ 'xcodebuild/Debug/skimage', |
+ 'xcodebuild/Release/skimage', |
+ ] |
+ for binary in POSSIBLE_BINARY_PATHS: |
+ binary_full_path = os.path.join(base_dir, binary) |
+ if (os.path.exists(binary_full_path)): |
+ return binary_full_path |
+ raise BinaryNotFoundException |
+ |
+def main(): |
+ # Use the directory of this file as the out directory |
+ file_dir = os.path.abspath(os.path.dirname(__file__)) |
+ |
+ trunk_dir = os.path.normpath(os.path.join(file_dir, os.pardir, os.pardir)) |
+ |
+ # Find the binary |
+ skimage_binary = PickBinaryPath(trunk_dir) |
+ print "Running " + skimage_binary |
+ |
+ # Run skimage twice, first to create an expectations file, and then |
+ # comparing to it. |
+ |
+ # Both commands will run the binary, reading from resources. |
+ cmd_line = [skimage_binary] |
+ resources_dir = os.path.join(trunk_dir, 'resources') |
+ cmd_line.extend(["-r", resources_dir]) |
+ |
+ # Create the expectations file |
+ results_dir = os.path.join(file_dir, "skimage") |
+ create_expectations_cmd = cmd_line + ["--createExpectationsPath", |
+ results_dir] |
+ subprocess.check_call(create_expectations_cmd) |
+ |
+ # Now read from the expectations file |
+ results_file = os.path.join(results_dir, "results.json") |
+ check_expectations_cmd = cmd_line + ["--readExpectationsPath", |
+ results_file] |
+ subprocess.check_call(check_expectations_cmd) |
+ print "Self tests succeeded!" |
+ |
+if __name__ == "__main__": |
+ main() |