Merge pull request #170 from robertbaldyga/convert-ut-to-python3
Convert UT scripts to python3
This commit is contained in:
commit
b1321edf69
@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python2
|
||||
#!/usr/bin/env python3
|
||||
|
||||
#
|
||||
# Copyright(c) 2012-2018 Intel Corporation
|
||||
@ -125,8 +125,8 @@ class TestGenerator(object):
|
||||
self.tested_file_path = path
|
||||
return
|
||||
|
||||
print self.get_main_tested_dir() + path
|
||||
print "Given path not exists!"
|
||||
print(os.path.join(self.get_main_tested_dir(), path))
|
||||
print("Given path not exists!")
|
||||
exit(1)
|
||||
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python2
|
||||
#!/usr/bin/env python3
|
||||
|
||||
#
|
||||
# Copyright(c) 2012-2018 Intel Corporation
|
||||
@ -8,9 +8,17 @@
|
||||
import shutil
|
||||
import sys
|
||||
import re
|
||||
import commands
|
||||
import os.path
|
||||
from collections import defaultdict
|
||||
import subprocess
|
||||
|
||||
def run_command(args):
|
||||
result = subprocess.run(" ".join(args), shell=True,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
result.stdout = result.stdout.decode("ASCII")
|
||||
result.stderr = result.stderr.decode("ASCII")
|
||||
print(result.stderr)
|
||||
return result
|
||||
|
||||
import tests_config
|
||||
#
|
||||
@ -97,26 +105,25 @@ class UnitTestsSourcesGenerator(object):
|
||||
gcc_command = gcc_command_template +\
|
||||
path + " > " + preprocessing_dst
|
||||
|
||||
status, output = commands.getstatusoutput(gcc_command)
|
||||
result = run_command([gcc_command])
|
||||
|
||||
if status != 0:
|
||||
print "Generating preprocessing for " + self.get_main_tested_dir() + path \
|
||||
+ " failed!"
|
||||
print output
|
||||
commands.getoutput("rm -f " + preprocessing_dst)
|
||||
if result.returncode != 0:
|
||||
print(f"Generating preprocessing for {self.get_main_tested_dir() + path} failed!")
|
||||
print(result.output)
|
||||
run_command(["rm", "-f", preprocessing_dst])
|
||||
continue
|
||||
|
||||
self.remove_hashes(preprocessing_dst)
|
||||
|
||||
print "Preprocessed file " + path + " saved to " + preprocessing_dst
|
||||
print(f"Preprocessed file {path} saved to {preprocessing_dst}")
|
||||
|
||||
def copy_includes(self):
|
||||
includes_dict = self.get_includes_to_copy_dict()
|
||||
|
||||
for dst, src in includes_dict.iteritems():
|
||||
for dst, src in includes_dict.items():
|
||||
src_path = os.path.normpath(self.get_main_tested_dir() + src)
|
||||
if not os.path.isdir(src_path):
|
||||
print "Directory " + src_path + " given to include does not exists!"
|
||||
print(f"Directory {src_path} given to include does not exists!")
|
||||
continue
|
||||
dst_path = os.path.normpath(self.get_main_UT_dir() + dst)
|
||||
|
||||
@ -131,7 +138,7 @@ class UnitTestsSourcesGenerator(object):
|
||||
|
||||
preprocessed_tested_path = self.get_preprocessing_repo() + path
|
||||
if not os.path.isfile(preprocessed_tested_path):
|
||||
print "No preprocessed path for " + test_path + " test file."
|
||||
print(f"No preprocessed path for {test_path} test file.")
|
||||
continue
|
||||
|
||||
tested_src = self.get_src_to_test(test_path, preprocessed_tested_path)
|
||||
@ -140,8 +147,7 @@ class UnitTestsSourcesGenerator(object):
|
||||
|
||||
with open(self.get_sources_to_test_repo() + test_path, "w") as f:
|
||||
f.writelines(tested_src)
|
||||
print "Sources for " + test_path + " saved in " +\
|
||||
self.get_sources_to_test_repo() + test_path
|
||||
print(f"Sources for {test_path} saved in {self.get_sources_to_test_repo() + test_path}")
|
||||
|
||||
def create_main_cmake_lists(self):
|
||||
buf = "cmake_minimum_required(VERSION 2.6.0)\n\n"
|
||||
@ -173,7 +179,7 @@ class UnitTestsSourcesGenerator(object):
|
||||
with open(self.get_main_UT_dir() + "CMakeLists.txt", "w") as f:
|
||||
f.writelines(buf)
|
||||
|
||||
print "Main CMakeLists.txt generated written to " + self.get_main_UT_dir() + "CMakeLists.txt"
|
||||
print(f"Main CMakeLists.txt generated written to {self.get_main_UT_dir()} CMakeLists.txt")
|
||||
|
||||
def generate_cmakes_for_tests(self):
|
||||
test_files_paths = self.get_files_with_tests_list()
|
||||
@ -181,7 +187,7 @@ class UnitTestsSourcesGenerator(object):
|
||||
for test_path in test_files_paths:
|
||||
tested_file_path = self.get_sources_to_test_repo() + test_path
|
||||
if not os.path.isfile(tested_file_path):
|
||||
print "No source to test for " + test_path + " test"
|
||||
print(f"No source to test for {test_path} test")
|
||||
continue
|
||||
|
||||
test_file_path = self.get_main_UT_dir() + test_path
|
||||
@ -192,7 +198,7 @@ class UnitTestsSourcesGenerator(object):
|
||||
cmake_path = os.path.splitext(cmake_path)[0] + ".cmake"
|
||||
with open(cmake_path, "w") as f:
|
||||
f.writelines(cmake_buf)
|
||||
print "cmake file for " + test_path + " written to " + cmake_path
|
||||
print(f"cmake file for {test_path} written to {cmake_path}")
|
||||
|
||||
cmake_lists_path = os.path.dirname(cmake_path) + os.sep
|
||||
self.update_cmakelists(cmake_lists_path, cmake_path)
|
||||
@ -269,11 +275,11 @@ class UnitTestsSourcesGenerator(object):
|
||||
|
||||
# find all functions' definitions | put tabs instead of spaces |
|
||||
# take only columns with function name and line number | sort in descending order
|
||||
status, output = commands.getstatusoutput(ctags_path + "-x --c-types=f " + file_path + " --language-force=c | \
|
||||
sed \"s/ \\+/\t/g\" | cut -f 1,3 | sort -nsr -k 2")
|
||||
result = run_command([ctags_path, "-x", "--c-types=f", file_path,
|
||||
"--language-force=c | sed \"s/ \\+/\t/g\" | cut -f 1,3 | sort -nsr -k 2"])
|
||||
|
||||
# 'output' is string, but it has to be changed to list
|
||||
output = output.split("\n")
|
||||
output = list(filter(None, result.stdout.split("\n")))
|
||||
return output
|
||||
|
||||
def remove_functions_from_list(self, functions_list, to_remove_list):
|
||||
@ -332,14 +338,14 @@ class UnitTestsSourcesGenerator(object):
|
||||
function_name = self.get_tested_function_name(path)
|
||||
|
||||
if file_path is None:
|
||||
print path + " file has no tested_file tag!"
|
||||
print(f"{path} file has no tested_file tag!")
|
||||
return None
|
||||
elif not os.path.isfile(self.get_main_tested_dir() + file_path):
|
||||
print "Tested file given in " + path + " not exist!"
|
||||
print(f"Tested file given in {path} does not exist!")
|
||||
return None
|
||||
|
||||
if function_name is None:
|
||||
print path + " file has no tested_function_name tag!"
|
||||
print(f"{path} file has no tested_function_name tag!")
|
||||
return None
|
||||
|
||||
return True
|
||||
@ -472,23 +478,23 @@ class UnitTestsSourcesGenerator(object):
|
||||
del code_lines_list[line_id + 1: last_line_id + 1]
|
||||
|
||||
def set_ctags_path(self):
|
||||
status, output = commands.getstatusoutput("/usr/bin/ctags --version &> /dev/null")
|
||||
if status == 0:
|
||||
result = run_command(["/usr/bin/ctags --version &> /dev/null"])
|
||||
if result.returncode == 0:
|
||||
path = "/usr/bin/ctags "
|
||||
status, output = commands.getstatusoutput(path + "--c-types=f")
|
||||
if not re.search("unrecognized option", output, re.IGNORECASE):
|
||||
result = run_command([path, "--c-types=f"])
|
||||
if not re.search("unrecognized option", result.stdout, re.IGNORECASE):
|
||||
self.ctags_path = path
|
||||
return
|
||||
|
||||
status, output = commands.getstatusoutput("/usr/local/bin/ctags --version &> /dev/null")
|
||||
if status == 0:
|
||||
result = run_command(["/usr/local/bin/ctags --version &> /dev/null"])
|
||||
if result.returncode == 0:
|
||||
path = "/usr/local/bin/ctags "
|
||||
status, output = commands.getstatusoutput(path + "--c-types=f")
|
||||
if not re.search("unrecognized option", output, re.IGNORECASE):
|
||||
result = run_command(["path", "--c-types=f"])
|
||||
if not re.search("unrecognized option", result.stdout, re.IGNORECASE):
|
||||
self.ctags_path = path
|
||||
return
|
||||
|
||||
print "ERROR: Current ctags version don't support \"--c-types=f\" parameter!"
|
||||
print("ERROR: Current ctags version don't support \"--c-types=f\" parameter!")
|
||||
exit(1)
|
||||
|
||||
def get_ctags_path(self):
|
||||
@ -556,7 +562,7 @@ class UnitTestsSourcesGenerator(object):
|
||||
main_UT_dir = os.path.normpath(os.path.normpath(self.get_script_dir_path()\
|
||||
+ os.sep + tests_config.MAIN_DIRECTORY_OF_UNIT_TESTS))
|
||||
if not os.path.isdir(main_UT_dir):
|
||||
print "Given path to main UT directory is wrong!"
|
||||
print("Given path to main UT directory is wrong!")
|
||||
sys.exit(1)
|
||||
|
||||
self.main_UT_dir = main_UT_dir
|
||||
@ -565,7 +571,7 @@ class UnitTestsSourcesGenerator(object):
|
||||
main_tested_dir = os.path.normpath(os.path.normpath(self.get_script_dir_path()\
|
||||
+ os.sep + tests_config.MAIN_DIRECTORY_OF_TESTED_PROJECT))
|
||||
if not os.path.isdir(main_tested_dir):
|
||||
print "Given path to main tested directory is wrong!"
|
||||
print("Given path to main tested directory is wrong!")
|
||||
sys.exit(1)
|
||||
|
||||
self.main_tested_dir = main_tested_dir
|
||||
@ -579,7 +585,7 @@ def __main__():
|
||||
generator.create_main_cmake_lists()
|
||||
generator.generate_cmakes_for_tests()
|
||||
|
||||
print "Files for testing generated!"
|
||||
print("Files for testing generated!")
|
||||
|
||||
if __name__ == "__main__":
|
||||
__main__()
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python2
|
||||
#!/usr/bin/env python3
|
||||
|
||||
#
|
||||
# Copyright(c) 2012-2018 Intel Corporation
|
||||
@ -7,68 +7,75 @@
|
||||
|
||||
import tests_config
|
||||
import os
|
||||
import commands
|
||||
import sys
|
||||
import subprocess
|
||||
|
||||
def run_command(args):
|
||||
result = subprocess.run(" ".join(args), shell=True,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
result.stdout = result.stdout.decode("ASCII")
|
||||
result.stderr = result.stderr.decode("ASCII")
|
||||
return result
|
||||
|
||||
script_path = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
main_UT_dir = os.path.normpath(script_path + os.sep\
|
||||
+ tests_config.MAIN_DIRECTORY_OF_UNIT_TESTS) + os.sep
|
||||
main_UT_dir = os.path.join(script_path, tests_config.MAIN_DIRECTORY_OF_UNIT_TESTS)
|
||||
|
||||
main_tested_dir = os.path.normpath(script_path + os.sep\
|
||||
+ tests_config.MAIN_DIRECTORY_OF_TESTED_PROJECT) + os.sep
|
||||
main_tested_dir = os.path.join(script_path, tests_config.MAIN_DIRECTORY_OF_TESTED_PROJECT)
|
||||
|
||||
if not os.path.isdir(os.path.join(main_UT_dir, "ocf_env", "ocf")):
|
||||
try:
|
||||
os.makedirs(os.path.join(main_UT_dir, "ocf_env", "ocf"))
|
||||
except Exception:
|
||||
raise Exception("Cannot create ocf_env/ocf directory!")
|
||||
|
||||
if not os.path.isdir(main_UT_dir + "ocf_env" + os.sep + "ocf"):
|
||||
try:
|
||||
os.makedirs(main_UT_dir + "ocf_env" + os.sep + "ocf")
|
||||
except Exception:
|
||||
print "Cannot create ocf_env/ocf directory!"
|
||||
result = run_command([ "cp", "-r",
|
||||
os.path.join(main_tested_dir, "inc", "*"),
|
||||
os.path.join(main_UT_dir, "ocf_env", "ocf") ])
|
||||
if result.returncode != 0:
|
||||
raise Exception("Preparing sources for testing failed!")
|
||||
|
||||
status, output = commands.getstatusoutput("cp " + main_tested_dir +\
|
||||
"inc" + os.sep + "*" + " " + main_UT_dir + "ocf_env" + os.sep + "ocf")
|
||||
result = run_command([ os.path.join(script_path, "prepare_sources_for_testing.py") ])
|
||||
if result.returncode != 0:
|
||||
raise Exception("Preparing sources for testing failed!")
|
||||
|
||||
build_dir = os.path.join(main_UT_dir, "build")
|
||||
logs_dir = os.path.join(main_UT_dir, "logs")
|
||||
|
||||
if os.system(script_path + os.sep + "prepare_sources_for_testing.py") != 0:
|
||||
print "Preparing sources for testing failed!"
|
||||
exit()
|
||||
try:
|
||||
if not os.path.isdir(build_dir):
|
||||
os.makedirs(build_dir)
|
||||
if not os.path.isdir(logs_dir):
|
||||
os.makedirs(logs_dir)
|
||||
except Exception:
|
||||
raise Exception("Cannot create logs directory!")
|
||||
|
||||
os.chdir(build_dir)
|
||||
|
||||
build_dir = main_UT_dir + "build" + os.sep
|
||||
logs_dir = main_UT_dir + "logs" + os.sep
|
||||
cmake_result = run_command([ "cmake", ".." ])
|
||||
|
||||
if not os.path.isdir(build_dir):
|
||||
try:
|
||||
os.makedirs(build_dir)
|
||||
except Exception:
|
||||
print "Cannot create build directory!"
|
||||
if not os.path.isdir(logs_dir):
|
||||
try:
|
||||
os.makedirs(logs_dir)
|
||||
except Exception:
|
||||
print "Cannot create logs directory!"
|
||||
print(cmake_result.stdout)
|
||||
with open(os.path.join(logs_dir, "cmake.output"), "w") as f:
|
||||
f.write(cmake_result.stdout)
|
||||
|
||||
cmake_status, cmake_output = commands.getstatusoutput("cd " + build_dir + " && cmake ..")
|
||||
print cmake_output
|
||||
with open(logs_dir + 'cmake.output', 'w') as f:
|
||||
f.write(cmake_output)
|
||||
if cmake_result.returncode != 0:
|
||||
with open(os.path.join(logs_dir, "tests.output"), "w") as f:
|
||||
f.write("Cmake step failed! More details in cmake.output.")
|
||||
sys.exit(1)
|
||||
|
||||
if cmake_status != 0:
|
||||
with open(logs_dir + 'tests.output', 'w') as f:
|
||||
f.write("Cmake step failed! More details in cmake.output.")
|
||||
sys.exit(1)
|
||||
make_result = run_command([ "make", "-j" ])
|
||||
|
||||
make_status, make_output = commands.getstatusoutput("cd " + build_dir + " && make")
|
||||
print make_output
|
||||
with open(logs_dir + 'make.output', 'w') as f:
|
||||
f.write(make_output)
|
||||
print(make_result.stdout)
|
||||
with open(os.path.join(logs_dir, "make.output"), "w") as f:
|
||||
f.write(make_result.stdout)
|
||||
|
||||
if make_status != 0:
|
||||
with open(logs_dir + 'tests.output', 'w') as f:
|
||||
if make_result.returncode != 0:
|
||||
with open(os.path.join(logs_dir, "tests.output"), "w") as f:
|
||||
f.write("Make step failed! More details in make.output.")
|
||||
sys.exit(1)
|
||||
|
||||
test_status, test_output = commands.getstatusoutput("cd " + build_dir + " && make test")
|
||||
print test_output
|
||||
with open(logs_dir + 'tests.output', 'w') as f:
|
||||
f.write(test_output)
|
||||
test_result = run_command([ "make", "test" ])
|
||||
|
||||
print(test_result.stdout)
|
||||
with open(os.path.join(logs_dir , "tests.output"), "w") as f:
|
||||
f.write(test_result.stdout)
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python2
|
||||
#!/usr/bin/env python3
|
||||
|
||||
#
|
||||
# Copyright(c) 2012-2018 Intel Corporation
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python2
|
||||
#!/usr/bin/env python3
|
||||
|
||||
#
|
||||
# Copyright(c) 2012-2018 Intel Corporation
|
||||
@ -11,7 +11,7 @@ import os
|
||||
|
||||
args = ' '.join(sys.argv[1:])
|
||||
script_path = os.path.dirname(os.path.realpath(__file__))
|
||||
framework_script_path = script_path + os.sep + "../framework/add_new_test_file.py"
|
||||
framework_script_path = os.path.join(script_path, "../framework/add_new_test_file.py")
|
||||
framework_script_path = os.path.normpath(framework_script_path)
|
||||
status, output = commands.getstatusoutput(framework_script_path + " " + args)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user