📄 v1_testing.py
字号:
#!/usr/bin/python# Copyright 2002 Dave Abrahams# Copyright 2004 Vladimir Prus# Distributed under the Boost Software License, Version 1.0.# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)import BoostBuildimport osfrom string import stripimport reimport timedef match_re(actual,expected): return re.match(expected,actual,re.DOTALL) != Nonet = BoostBuild.Tester(match = match_re, boost_build_path = os.path.join(os.getcwd(), ".."))t.set_tree('v1_testing')os.environ['TOOLS'] = 'gcc'os.environ['NOARSCAN'] = '1'# 1) No existing bin directories. Both build and test ran fine. As# expected, the residue files were a bit different: There was no# path_test.success, and path_test.test contained the word "passed"# instead of the path to the .cpp file. I've haven't looked yet to# see if the lack of the path is a problem for reporting, but# hopefully the information is trivially available somewhere else.t.run_build_system(arguments = 'test', status = 0)t.expect_addition( ['bin/compile.test/gcc/debug/runtime-link-dynamic/compile.test' , 'bin/nocompile.test/gcc/debug/runtime-link-dynamic/nocompile.test' , 'bin/link.test/gcc/debug/runtime-link-dynamic/link.test' , 'bin/nolink.test/gcc/debug/runtime-link-dynamic/nolink.test' , 'bin/run.test/gcc/debug/runtime-link-dynamic/run.test'])# 2) Missing source file for the library build. path_test.test was# deleted, so the reporting programs would know that failure# occurred. The stdout messages also indicated what had# happened. Excellent!t.rename('lib.cpp', 'lib.cpp.bak')t.run_build_system(arguments = 'test', status = 1)t.expect_removal( ['bin/link.test/gcc/debug/runtime-link-dynamic/link.test' , 'bin/nolink.test/gcc/debug/runtime-link-dynamic/nolink.test' , 'bin/run.test/gcc/debug/runtime-link-dynamic/run.test'])# 3) Missing file restored. Worked fine; path_test.test was recreated,# no other files were touched.t.rename('lib.cpp.bak', 'lib.cpp')t.run_build_system(arguments = 'test', status = 0)t.expect_addition( [ 'bin/link.test/gcc/debug/runtime-link-dynamic/link.test' , 'bin/nolink.test/gcc/debug/runtime-link-dynamic/nolink.test' , 'bin/run.test/gcc/debug/runtime-link-dynamic/run.test']) # I didn't add a test for 'no other files were touched', because # it's a little complicated. There is an expect_nothing_more() # function, but we actually need to spell out a lot more than # what we currently have to do that.# 4) Introduced error into one of the library files, causing a library build# compile to fail. path_test.test was deleted, so the reporting programs# would know that failure occurred. Excellent! This is the case that has# caused regression testing to report the wrong results in the past, so it# was good news to see it working correctly now. We probably should figure# out some other test cases just to be sure it is working for full coverage.t.rename('lib.cpp', 'lib.cpp.bak')t.rename('lib-err.cpp', 'lib.cpp')t.touch('lib.cpp')t.run_build_system(arguments = 'test', status=1)t.expect_removal( ['bin/link.test/gcc/debug/runtime-link-dynamic/link.test' , 'bin/nolink.test/gcc/debug/runtime-link-dynamic/nolink.test' , 'bin/run.test/gcc/debug/runtime-link-dynamic/run.test'])# 5) Fixed the error in the library file. The library build then worked, and# path_test.exe was relinked, without first recompiling path_test.obj. Test was# rerun. Exactly the right behavior!t.rename('lib.cpp.bak', 'lib.cpp')t.run_build_system(arguments = 'test', status = 0)t.expect_addition( [ 'bin/link.test/gcc/debug/runtime-link-dynamic/link.test' , 'bin/nolink.test/gcc/debug/runtime-link-dynamic/nolink.test' , 'bin/run.test/gcc/debug/runtime-link-dynamic/run.test'])t.cleanup()print 'testing complete'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -