From 7628d947bbfb4137c810e58b25db10a6075e2e75 Mon Sep 17 00:00:00 2001 From: Tomas Mlcoch Date: Tue, 31 Mar 2015 16:09:18 +0200 Subject: [PATCH] utils: Add single_test.py script --- utils/single_test.py | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100755 utils/single_test.py diff --git a/utils/single_test.py b/utils/single_test.py new file mode 100755 index 0000000..be01dd3 --- /dev/null +++ b/utils/single_test.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python +""" +Convert a single line from test output to run single test command. + +E.g: + "2: test_download_package_via_metalink (tests.test_yum_package_downloading.TestCaseYumPackageDownloading) ... ok" + +To: + tests/python/tests/test_yum_repo_downloading.py:TestCaseYumRepoDownloading.test_download_and_update_repo_01 +""" + +import os +import sys +import argparse + +LIBPATH = "./build/src/python/" +COMMAND = "PYTHONPATH=`readlink -f {libpath}` nosetests{nosever} -s -v {testpath}" +TEST_PATH_PREFIX = "tests/python" + +if __name__ == "__main__": + + parser = argparse.ArgumentParser(description='Convert a single line from '\ + 'python unittesttest output to run command for this single test') + + parser.add_argument('test_out_line', metavar='TESTOUTPUTLINE', + type=str, + help='A single line from python unittesttest output') + parser.add_argument('--python3', action='store_true', help='Python3 version') + args = parser.parse_args() + + test_out_line = args.test_out_line + + # Remove suffix "... ok" or "... FAIL" + test_out_line = test_out_line.split(" ... ")[0] + + # Remove prefix "test_number: " + res = test_out_line = test_out_line.split(": ") + test_out_line = res[-1] + + # Get test name + res = test_out_line.split(" ") + if len(res) != 2: + print("Bad input line format") + sys.exit(1) + + test_name, test_out_line = res + + # Get test case + test_out_line = test_out_line.strip().lstrip("(").rstrip(")") + res = test_out_line.rsplit(".", 1) + if len(res) != 2: + print("Bad input line format") + sys.exit(1) + + test_out_line, test_case = res + + # Get path + test_path = test_out_line.replace(".", "/") + ".py" + + full_path = os.path.join(TEST_PATH_PREFIX, test_path) + + nosever = "" + pythonversion = 2 + + if (args.python3): + nosever = "-3.3" + pythonversion = 3 + + testpath = "{0}:{1}.{2}".format(full_path, test_case, test_name) + libpath = LIBPATH.format(pythonversion=pythonversion) + + + command = COMMAND.format(libpath=libpath, nosever=nosever, testpath=testpath) + + print(command) + -- 2.7.4