[opencv] 17/89: ts: update run.py

Nobuhiro Iwamatsu iwamatsu at moszumanska.debian.org
Sat May 13 09:57:21 UTC 2017


This is an automated email from the git hooks/post-receive script.

iwamatsu pushed a commit to annotated tag 2.4.13.2
in repository opencv.

commit 6f00e53159f9f7295dbc26ee9c36974e42e7f268
Author: Alexander Alekhin <alexander.alekhin at intel.com>
Date:   Thu Oct 20 14:35:34 2016 +0300

    ts: update run.py
    
    Add information about python bindings
---
 modules/ts/misc/run_suite.py | 41 ++++++++++++++++++++++++++++++++++-------
 modules/ts/misc/run_utils.py | 24 ++++++++++++++++++++----
 2 files changed, 54 insertions(+), 11 deletions(-)

diff --git a/modules/ts/misc/run_suite.py b/modules/ts/misc/run_suite.py
index 280c21c..bd80874 100644
--- a/modules/ts/misc/run_suite.py
+++ b/modules/ts/misc/run_suite.py
@@ -85,8 +85,8 @@ class TestSuite(object):
         return set(res)
 
     def isTest(self, fullpath):
-        if fullpath == "java":
-            return True
+        if fullpath in ['java', 'python2', 'python3']:
+            return self.options.mode == 'test'
         if not os.path.isfile(fullpath):
             return False
         if self.cache.getOS() == "nt" and not fullpath.endswith(".exe"):
@@ -102,6 +102,14 @@ class TestSuite(object):
             return res + cmd
         return cmd
 
+    def tryCommand(self, cmd):
+        try:
+            if 0 == execute(cmd, cwd = workingDir):
+                return True
+        except:
+            pass
+        return False
+
     def runTest(self, path, logfile, workingDir, args = []):
         args = args[:]
         exe = os.path.abspath(path)
@@ -109,6 +117,22 @@ class TestSuite(object):
             cmd = [self.cache.ant_executable, "-Dopencv.build.type=%s" % self.cache.build_type, "buildAndTest"]
             ret = execute(cmd, cwd = self.cache.java_test_binary_dir + "/.build")
             return None, ret
+        elif path in ['python2', 'python3']:
+            executable = os.getenv('OPENCV_PYTHON_BINARY', None)
+            if executable is None:
+                executable = path
+                if not self.tryCommand([executable, '--version']):
+                    executable = 'python'
+            cmd = [executable, self.cache.opencv_home + '/modules/python/test/test.py', '--repo', self.cache.opencv_home, '-v'] + args
+            module_suffix = '' if not 'Visual Studio' in self.cache.cmake_generator else '/' + self.cache.build_type
+            env = {}
+            env['PYTHONPATH'] = self.cache.opencv_build + '/lib' + module_suffix + os.pathsep + os.getenv('PYTHONPATH', '')
+            if self.cache.getOS() == 'nt':
+                env['PATH'] = self.cache.opencv_build + '/bin' + module_suffix + os.pathsep + os.getenv('PATH', '')
+            else:
+                env['LD_LIBRARY_PATH'] = self.cache.opencv_build + '/bin' + os.pathsep + os.getenv('LD_LIBRARY_PATH', '')
+            ret = execute(cmd, cwd = workingDir, env = env)
+            return None, ret
         else:
             if isColorEnabled(args):
                 args.append("--gtest_color=yes")
@@ -140,12 +164,15 @@ class TestSuite(object):
             more_args = []
             exe = self.getTest(test)
 
-            userlog = [a for a in args if a.startswith("--gtest_output=")]
-            if len(userlog) == 0:
-                logname = self.getLogName(exe, date)
-                more_args.append("--gtest_output=xml:" + logname)
+            if exe in ["java", "python2", "python3"]:
+                logname = None
             else:
-                logname = userlog[0][userlog[0].find(":")+1:]
+                userlog = [a for a in args if a.startswith("--gtest_output=")]
+                if len(userlog) == 0:
+                    logname = self.getLogName(exe, date)
+                    more_args.append("--gtest_output=xml:" + logname)
+                else:
+                    logname = userlog[0][userlog[0].find(":")+1:]
 
             log.debug("Running the test: %s (%s) ==> %s in %s", exe, args + more_args, logname, workingDir)
             if self.options.dry_run:
diff --git a/modules/ts/misc/run_utils.py b/modules/ts/misc/run_utils.py
index 5841631..8740aa7 100644
--- a/modules/ts/misc/run_utils.py
+++ b/modules/ts/misc/run_utils.py
@@ -22,13 +22,17 @@ class Err(Exception):
     def __init__(self, msg, *args):
         self.msg = msg % args
 
-def execute(cmd, silent = False, cwd = "."):
+def execute(cmd, silent = False, cwd = ".", env = None):
     try:
         log.debug("Run: %s", cmd)
+        if env:
+            for k in env:
+                log.debug("    Environ: %s=%s", k, env[k])
+            env = os.environ.update(env)
         if silent:
-            return check_output(cmd, stderr = STDOUT, cwd = cwd).decode("latin-1")
+            return check_output(cmd, stderr = STDOUT, cwd = cwd, env = env).decode("latin-1")
         else:
-            return check_call(cmd, cwd = cwd)
+            return check_call(cmd, cwd = cwd, env = env)
     except CalledProcessError as e:
         if silent:
             log.debug("Process returned: %d", e.returncode)
@@ -171,6 +175,8 @@ parse_patterns = (
     {'name': "cuda_library",             'default': None,       'pattern': re.compile(r"^CUDA_CUDA_LIBRARY:FILEPATH=(.+)$")},
     {'name': "cuda_version",             'default': None,       'pattern': re.compile(r"^CUDA_VERSION:STRING=(.+)$")},
     {'name': "core_dependencies",        'default': None,       'pattern': re.compile(r"^opencv_core_LIB_DEPENDS:STATIC=(.+)$")},
+    {'name': "python2",                  'default': None,       'pattern': re.compile(r"^BUILD_opencv_python2:BOOL=(.*)$")},
+    {'name': "python3",                  'default': None,       'pattern': re.compile(r"^BUILD_opencv_python3:BOOL=(.*)$")},
 )
 
 class CMakeCache:
@@ -247,11 +253,15 @@ class CMakeCache:
             files = glob.glob(os.path.join(d, mask))
             if not self.getOS() == "android" and self.withJava():
                 files.append("java")
+            if self.withPython2():
+                files.append("python2")
+            if self.withPython3():
+                files.append("python3")
             return [f for f in files if isGood(f)]
         return []
 
     def isMainModule(self, name):
-        return name in self.main_modules
+        return name in self.main_modules + ['python2', 'python3']
 
     def withCuda(self):
         return self.cuda_version and self.with_cuda == "ON" and self.cuda_library and not self.cuda_library.endswith("-NOTFOUND")
@@ -259,6 +269,12 @@ class CMakeCache:
     def withJava(self):
         return self.ant_executable and self.java_test_binary_dir
 
+    def withPython2(self):
+        return self.python2 == 'ON'
+
+    def withPython3(self):
+        return self.python3 == 'ON'
+
     def getGitVersion(self):
         if self.cmake_home_vcver:
             if self.cmake_home_vcver == self.opencv_home_vcver:

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/opencv.git



More information about the debian-science-commits mailing list