validate:launcher: Allow specifying several testsuite dirs

This commit is contained in:
Thibault Saunier 2016-12-22 10:08:21 -03:00
parent 26692e749c
commit 6504b9152c
2 changed files with 32 additions and 16 deletions

View file

@ -1348,22 +1348,36 @@ class _TestsLauncher(Loggable):
for tester in self.testers:
tester.add_options(parser)
def _load_testsuites(self):
testsuites = []
for testsuite in self.options.testsuites:
if not os.path.isabs(testsuite):
testsuite = os.path.join(self.options.testsuites_dir, testsuite + ".py")
def _load_testsuite(self, testsuites):
exceptions = []
for testsuite in testsuites:
try:
sys.path.insert(0, os.path.dirname(testsuite))
module = __import__(os.path.basename(testsuite).replace(".py", ""))
return (__import__(os.path.basename(testsuite).replace(".py", "")), None)
except Exception as e:
printc("Could not load testsuite: %s, reason: %s"
% (testsuite, e), Colors.FAIL)
exceptions.append("Could not load %s: %s" % (testsuite, e))
continue
finally:
sys.path.remove(os.path.dirname(testsuite))
return (None, exceptions)
def _load_testsuites(self):
testsuites = []
for testsuite in self.options.testsuites:
if os.path.isabs(testsuite):
loaded_module = self._load_testsuite([testsuite])
else:
possible_testsuites_paths = [os.path.join(d, testsuite + ".py")
for d in self.options.testsuites_dirs]
loaded_module = self._load_testsuite(possible_testsuites_paths)
module = loaded_module[0]
if not loaded_module[0]:
printc("Could not load testsuite: %s, reasons: %s" % (
testsuite, loaded_module[1]), Colors.FAIL)
continue
testsuites.append(module)
if not hasattr(module, "TEST_MANAGER"):
module.TEST_MANAGER = [tester.name for tester in self.testers]

View file

@ -140,7 +140,7 @@ QA_ASSETS = "gst-integration-testsuites"
MEDIAS_FOLDER = "medias"
DEFAULT_GST_QA_ASSETS_REPO = "git://anongit.freedesktop.org/gstreamer/gst-integration-testsuites"
OLD_DEFAULT_GST_QA_ASSETS_REPO = "https://gitlab.com/thiblahute/gst-integration-testsuites.git"
DEFAULT_TESTSUITES_DIR = os.path.join(DEFAULT_MAIN_DIR, QA_ASSETS, "testsuites")
DEFAULT_TESTSUITES_DIRS = [os.path.join(DEFAULT_MAIN_DIR, QA_ASSETS, "testsuites")]
def download_assets(options):
@ -206,7 +206,7 @@ class LauncherConfig(Loggable):
# paths passed with --media-path, and not defined by a testsuite
self.user_paths = []
self.paths = []
self.testsuites_dir = DEFAULT_TESTSUITES_DIR
self.testsuites_dirs = DEFAULT_TESTSUITES_DIRS
self.clone_dir = None
@ -296,9 +296,9 @@ class LauncherConfig(Loggable):
if (self.main_dir != DEFAULT_MAIN_DIR or
self.clone_dir != QA_ASSETS) and \
self.testsuites_dir == DEFAULT_TESTSUITES_DIR:
self.testsuites_dir = os.path.join(self.main_dir, self.clone_dir,
"testsuites")
self.testsuites_dirs in DEFAULT_TESTSUITES_DIRS:
self.testsuites_dirs.insert(0, os.path.join(self.main_dir, self.clone_dir,
"testsuites"))
if self.valgrind:
try:
subprocess.check_output("valgrind --help", shell=True)
@ -338,6 +338,8 @@ def main(libsdir):
else:
_help_message = "Use --help for the full help"
DEFAULT_TESTSUITES_DIRS.append(os.path.join(libsdir, "testsuites"))
parser = argparse.ArgumentParser(
formatter_class=argparse.RawTextHelpFormatter,
prog='gst-validate-launcher', description=_help_message)
@ -458,9 +460,9 @@ Note that all testsuite should be inside python modules, so the directory should
help=("Path to xml file to store the xunit report in."))
dir_group.add_argument("-M", "--main-dir", dest="main_dir",
help="Main directory where to put files. Default is %s" % DEFAULT_MAIN_DIR)
dir_group.add_argument("--testsuites-dir", dest="testsuites_dir",
dir_group.add_argument("--testsuites-dir", dest="testsuites_dirs", action='append',
help="Directory where to look for testsuites. Default is %s"
% DEFAULT_TESTSUITES_DIR)
% DEFAULT_TESTSUITES_DIRS)
dir_group.add_argument("-o", "--output-dir", dest="output_dir",
help="Directory where to store logs and rendered files. Default is MAIN_DIR")
dir_group.add_argument("-l", "--logs-dir", dest="logsdir",