diff options
Diffstat (limited to 'tools/build/v2/test/regression.py')
-rw-r--r-- | tools/build/v2/test/regression.py | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/tools/build/v2/test/regression.py b/tools/build/v2/test/regression.py new file mode 100644 index 0000000000..c65082810e --- /dev/null +++ b/tools/build/v2/test/regression.py @@ -0,0 +1,124 @@ +#!/usr/bin/python + +# Copyright (C) Vladimir Prus 2003. +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +# Test for the regression testing framework. + +import BoostBuild + +# Create a temporary working directory. +t = BoostBuild.Tester() + +t.write("c.cpp", "\n") + +t.write("r.cpp", """ +void helper(); + +#include <iostream> +int main( int ac, char * av[] ) +{ + helper(); + for ( int i = 1; i < ac; ++i ) + std::cout << av[ i ] << '\\n'; +} +""") + +t.write("c-f.cpp", """ +int +""") + +t.write("r-f.cpp", """ +int main() { return 1; } +""") + + +t.write("jamfile.jam", """ +import testing ; +compile c.cpp ; +compile-fail c-f.cpp ; +run r.cpp libs//helper : foo bar ; +run-fail r-f.cpp ; +""") + +t.write("libs/jamfile.jam", """ +lib helper : helper.cpp ; +""") + +t.write("libs/helper.cpp", """ +void +#if defined(_WIN32) +__declspec(dllexport) +#endif +helper() {} +""") + +t.write("jamroot.jam", "") + +# First test that when outcomes are expected, all .test files are created. +t.run_build_system("hardcode-dll-paths=false", stderr=None, status=None) +t.expect_addition("bin/c.test/$toolset/debug/c.test") +t.expect_addition("bin/c-f.test/$toolset/debug/c-f.test") +t.expect_addition("bin/r.test/$toolset/debug/r.test") +t.expect_addition("bin/r-f.test/$toolset/debug/r-f.test") + +# Make sure args are handled. +t.expect_content("bin/r.test/$toolset/debug/r.output", + "foo\nbar\n*\nEXIT STATUS: 0*\n", True) + +# Test that input file is handled as well. +t.write("r.cpp", """ +#include <iostream> +#include <fstream> +int main( int ac, char * av[] ) +{ + for ( int i = 1; i < ac; ++i ) + { + std::ifstream ifs( av[ i ] ); + std::cout << ifs.rdbuf(); + } +} +""") + +t.write("dir/input.txt", "test input") + +t.write("jamfile.jam", """ +import testing ; +compile c.cpp ; +obj c-obj : c.cpp ; +compile-fail c-f.cpp ; +run r.cpp : : dir/input.txt ; +run-fail r-f.cpp ; +time execution : r ; +time compilation : c-obj ; +""") + +t.run_build_system('hardcode-dll-paths=false') +t.expect_content("bin/r.test/$toolset/debug/r.output", + "test input\nEXIT STATUS: 0\n") + +t.expect_addition('bin/$toolset/debug/execution.time') +t.expect_addition('bin/$toolset/debug/compilation.time') + +# Make sure test failures are detected. Reverse expectation and see if .test +# files are created or not. +t.write("jamfile.jam", """ +import testing ; + +compile-fail c.cpp ; +compile c-f.cpp ; +run-fail r.cpp : : dir/input.txt ; +run r-f.cpp ; +""") + +t.touch(BoostBuild.List("c.cpp c-f.cpp r.cpp r-f.cpp")) + +t.run_build_system("hardcode-dll-paths=false", stderr=None, status=1) +t.expect_removal("bin/c.test/$toolset/debug/c.test") +t.expect_removal("bin/c-f.test/$toolset/debug/c-f.test") +t.expect_removal("bin/r.test/$toolset/debug/r.test") +t.expect_removal("bin/r-f.test/$toolset/debug/r-f.test") + +t.cleanup() |