Fix run.py test detection issues for debug VS configurations
authorMaksim Shabunin <maksim.shabunin@itseez.com>
Fri, 13 Nov 2015 09:26:39 +0000 (12:26 +0300)
committerMaksim Shabunin <maksim.shabunin@itseez.com>
Fri, 13 Nov 2015 15:55:19 +0000 (18:55 +0300)
modules/ts/misc/run_suite.py
modules/ts/misc/run_utils.py

index c3d715e..c70ac0b 100644 (file)
@@ -48,22 +48,25 @@ class TestSuite(object):
         return sorted(self.getAliases(fname), key = len)[0]
 
     def getAliases(self, fname):
+        def getCuts(fname, prefix):
+            # filename w/o extension (opencv_test_core)
+            noext = re.sub(r"\.(exe|apk)$", '', fname)
+            # filename w/o prefix (core.exe)
+            nopref = fname
+            if fname.startswith(prefix):
+                nopref = fname[len(prefix):]
+            # filename w/o prefix and extension (core)
+            noprefext = noext
+            if noext.startswith(prefix):
+                noprefext = noext[len(prefix):]
+            return noext, nopref, noprefext
         # input is full path ('/home/.../bin/opencv_test_core') or 'java'
         res = [fname]
         fname = os.path.basename(fname)
         res.append(fname) # filename (opencv_test_core.exe)
-        noext = re.sub(r"\.(exe|apk)$", '', fname)
-        res.append(noext) # filename w/o extension (opencv_test_core)
-        nopref = None
-        if fname.startswith(self.nameprefix):
-            nopref = fname[len(self.nameprefix):]
-            res.append(nopref) # filename w/o prefix (core)
-        if noext.startswith(self.nameprefix):
-            res.append(noext[len(self.nameprefix):])
-        if self.options.configuration == "Debug":
-            res.append(re.sub(r"d$", '', noext))  # MSVC debug config, remove 'd' suffix
-            if nopref:
-                res.append(re.sub(r"d$", '', nopref))  # MSVC debug config, remove 'd' suffix
+        for s in getCuts(fname, self.nameprefix):
+            res.append(s)
+            res.append(re.sub(r"d$", '', s)) # MSVC debug config, remove 'd' suffix
         return set(res)
 
     def getTest(self, name):
index dca951d..dd98a5f 100644 (file)
@@ -152,7 +152,7 @@ parse_patterns = (
     {'name': "opencv_home",              'default': None,       'pattern': re.compile(r"^OpenCV_SOURCE_DIR:STATIC=(.+)$")},
     {'name': "opencv_build",             'default': None,       'pattern': re.compile(r"^OpenCV_BINARY_DIR:STATIC=(.+)$")},
     {'name': "tests_dir",                'default': None,       'pattern': re.compile(r"^EXECUTABLE_OUTPUT_PATH:PATH=(.+)$")},
-    {'name': "build_type",               'default': "Release",  'pattern': re.compile(r"^CMAKE_BUILD_TYPE:STRING=(.*)$")},
+    {'name': "build_type",               'default': "Release",  'pattern': re.compile(r"^CMAKE_BUILD_TYPE:\w+=(.*)$")},
     {'name': "git_executable",           'default': None,       'pattern': re.compile(r"^GIT_EXECUTABLE:FILEPATH=(.*)$")},
     {'name': "cxx_flags",                'default': "",         'pattern': re.compile(r"^CMAKE_CXX_FLAGS:STRING=(.*)$")},
     {'name': "cxx_flags_debug",          'default': "",         'pattern': re.compile(r"^CMAKE_CXX_FLAGS_DEBUG:STRING=(.*)$")},
@@ -214,7 +214,7 @@ class CMakeCache:
         # fix VS test binary path (add Debug or Release)
         if "Visual Studio" in self.cmake_generator:
             if cfg:
-                self.tests_dir = os.path.join(self.tests_dir, self.options.configuration)
+                self.tests_dir = os.path.join(self.tests_dir, cfg)
             else:
                 self.tests_dir = os.path.join(self.tests_dir, self.build_type)