aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/tests/skimage_self_test.py
blob: d2d072ff41d396e71f2cb787beff02961cef16a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/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_file = os.path.join(file_dir, "skimage", "self_test_results.json")
    create_expectations_cmd = cmd_line + ["--createExpectationsPath",
                                          results_file]
    subprocess.check_call(create_expectations_cmd)

    # Now read from the expectations file
    check_expectations_cmd = cmd_line + ["--readExpectationsPath",
                                         results_file]
    subprocess.check_call(check_expectations_cmd)
    print "Self tests succeeded!"

if __name__ == "__main__":
    main()