run.py: added --android_env parameter
authorAlexander Alekhin <alexander.alekhin@itseez.com>
Sun, 25 May 2014 21:19:16 +0000 (01:19 +0400)
committerAlexander Alekhin <alexander.alekhin@itseez.com>
Mon, 26 May 2014 09:27:31 +0000 (13:27 +0400)
modules/ts/misc/run.py

index 194ab4b..603484c 100755 (executable)
@@ -740,7 +740,14 @@ class TestSuite(object):
                 print >> _stderr, "Run command:", command
                 if self.setUp:
                     self.setUp()
-                Popen(self.adb + ["shell", "export OPENCV_TEST_DATA_PATH=" + self.options.test_data_path + "&& cd " + andoidcwd + "&& ./" + command], stdout=_stdout, stderr=_stderr).wait()
+                env = self.options.android_env.copy()
+                env['OPENCV_TEST_DATA_PATH'] = self.options.test_data_path
+                for k, v in os.environ.items():
+                    if k.startswith('OPENCV') and not k in env:
+                        env[k] = v
+                print >> _stderr, "Android environment variables: \n", '\n'.join(['    %s=%s' % (k, v) for k, v in env.items()])
+                commandPrefix = ''.join(['export %s=%s && ' % (k, v) for k, v in env.items()])
+                Popen(self.adb + ["shell", commandPrefix + "cd " + andoidcwd + "&& ./" + command], stdout=_stdout, stderr=_stderr).wait()
                 if self.tearDown:
                     self.tearDown()
                 # try get log
@@ -852,6 +859,7 @@ if __name__ == "__main__":
     parser.add_option("-a", "--accuracy", dest="accuracy", help="look for accuracy tests instead of performance tests", action="store_true", default=False)
     parser.add_option("-l", "--longname", dest="useLongNames", action="store_true", help="generate log files with long names", default=False)
     parser.add_option("", "--android_test_data_path", dest="test_data_path", help="OPENCV_TEST_DATA_PATH for Android run", metavar="PATH", default="/sdcard/opencv_testdata/")
+    parser.add_option("", "--android_env", dest="android_env_array", help="Environment variable for Android run (NAME=VALUE)", action='append')
     parser.add_option("", "--configuration", dest="configuration", help="force Debug or Release configuration", metavar="CFG", default="")
     parser.add_option("", "--serial", dest="adb_serial", help="Android: directs command to the USB device or emulator with the given serial number", metavar="serial number", default="")
     parser.add_option("", "--package", dest="junit_package", help="Android: run jUnit tests for specified package", metavar="package", default="")
@@ -872,6 +880,12 @@ if __name__ == "__main__":
         print >> sys.stderr, "Usage:", os.path.basename(sys.argv[0]), "[options] [build_path]"
         exit(1)
 
+    options.android_env = {}
+    if options.android_env_array:
+        for entry in options.android_env_array:
+            k, v = entry.split("=", 1)
+            options.android_env[k] = v
+
     tests = [s.strip() for s in options.tests.split(",") if s]
 
     if len(tests) != 1 or len(run_args) != 1: