2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-16 13:22:11 +00:00
Files
build/test/test_all.py
Vladimir Prus 12d08a7b73 Bugfix: the main target rules did not work unless called from Jamfile.
The used 'CALLER_MODULE' to determine the project where the main target
is to be declared, which did not work if the rule is called from another
module.

Thanks to Zbynek Winkler for the bug report.

* build/project.jam (current): New rule
* test/wrapper.py: New test
* other files: Use 'project.current'.


[SVN r22569]
2004-03-31 06:53:56 +00:00

139 lines
3.6 KiB
Python

#!/usr/bin/python
import os, sys, string
# clear environment for testing
#
for s in (
'BOOST_ROOT','BOOST_BUILD_PATH','JAM_TOOLSET','BCCROOT',
'MSVCDir','MSVC','MSVCNT','MINGW','watcom'
):
try:
del os.environ[s]
except:
pass
def run_tests(critical_tests, other_tests):
"""Runs first critical tests and then other_tests.
Stops on first error, and write the name of failed test to
test_results.txt. Critical tests are run in the specified order,
other tests are run starting with the one that failed the last time.
"""
last_failed = last_failed_test()
other_tests = reorder_tests(other_tests, last_failed)
all_tests = critical_tests + other_tests
invocation_dir = os.getcwd()
failures_count = 0
for i in all_tests:
print ("%-25s : " %(i)),
try:
__import__(i)
except:
print "FAILED"
if failures_count == 0:
f = open(os.path.join(invocation_dir, 'test_results.txt'), 'w')
f.write(i)
f.close()
failures_count = failures_count + 1
# Restore the current directory, which might be changed by the
# test
os.chdir(invocation_dir)
continue
print "PASSED"
sys.stdout.flush() # makes testing under emacs more entertaining.
# Erase the file on success
if failures_count == 0:
open('test_results.txt', 'w')
def last_failed_test():
"Returns the name of last failed test or None"
try:
f = open("test_results.txt")
s = string.strip(f.read())
return s
except:
return None
def reorder_tests(tests, first_test):
try:
n = tests.index(first_test)
return [first_test] + tests[:n] + tests[n+1:]
except ValueError:
return tests
critical_tests = ["unit_tests", "module_actions", "startup_v1", "startup_v2"]
critical_tests += ["core_d12", "core_typecheck", "core_delete_module",
"core_varnames", "core_import_module"]
tests = [ "project_test1",
"project_test3",
"project_test4",
"generators_test",
"dependency_test",
"path_features",
"relative_sources",
"no_type",
"chain",
"default_build",
"use_requirements",
"conditionals",
"stage",
"prebuilt",
"project_dependencies",
"build_dir",
"searched_lib",
"make_rule",
"alias",
"alternatives",
"unused",
"default_features",
"print",
"ndebug",
"explicit",
"absolute_sources",
"dependency_property",
"custom_generator",
"bad_dirname",
"c_file",
"inline",
"conditionals2",
"property_expansion",
"loop",
"conditionals3",
"tag",
"suffix",
"inherit_toolset",
"skipping",
"project_root",
"glob",
"project_root_constants",
"double_loading",
"dll_path",
"regression",
"composite",
"library_chain",
"unit_test",
"standalone",
"library_order",
"expansion",
"wrapper",
#"ordered_properties",
]
if os.name == 'posix':
tests.append("symlink")
if os.environ.has_key('QTDIR'):
tests.append("railsys")
else:
print 'skipping railsys test since QTDIR environment variable is unset'
run_tests(critical_tests, tests)