mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 13:10:19 -04:00 
			
		
		
		
	
		
			
	
	
		
			213 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			213 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | #!/usr/bin/python | ||
|  | 
 | ||
|  | # Copyright (C) 2003. Vladimir Prus | ||
|  | # 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 the 'glob' rule in Jamfile context. | ||
|  | 
 | ||
|  | import BoostBuild | ||
|  | 
 | ||
|  | 
 | ||
|  | def test_basic(): | ||
|  |     t = BoostBuild.Tester(use_test_config=False) | ||
|  | 
 | ||
|  |     t.write("jamroot.jam", "") | ||
|  |     t.write("d1/a.cpp", "int main() {}\n") | ||
|  |     t.write("d1/jamfile.jam", "exe a : [ glob *.cpp ] ../d2/d//l ;") | ||
|  |     t.write("d2/d/l.cpp", """\
 | ||
|  | #if defined(_WIN32) | ||
|  | __declspec(dllexport) | ||
|  | void force_import_lib_creation() {} | ||
|  | #endif | ||
|  | """)
 | ||
|  |     t.write("d2/d/jamfile.jam", "lib l : [ glob *.cpp ] ;") | ||
|  |     t.write("d3/d/jamfile.jam", "exe a : [ glob ../*.cpp ] ;") | ||
|  |     t.write("d3/a.cpp", "int main() {}\n") | ||
|  | 
 | ||
|  |     t.run_build_system(subdir="d1") | ||
|  |     t.expect_addition("d1/bin/$toolset/debug/a.exe") | ||
|  | 
 | ||
|  |     t.run_build_system(subdir="d3/d") | ||
|  |     t.expect_addition("d3/d/bin/$toolset/debug/a.exe") | ||
|  | 
 | ||
|  |     t.rm("d2/d/bin") | ||
|  |     t.run_build_system(subdir="d2/d") | ||
|  |     t.expect_addition("d2/d/bin/$toolset/debug/l.dll") | ||
|  | 
 | ||
|  |     t.cleanup() | ||
|  | 
 | ||
|  | 
 | ||
|  | def test_source_location(): | ||
|  |     """
 | ||
|  |       Test that when 'source-location' is explicitly-specified glob works | ||
|  |     relative to the source location. | ||
|  | 
 | ||
|  |     """
 | ||
|  |     t = BoostBuild.Tester(use_test_config=False) | ||
|  | 
 | ||
|  |     t.write("jamroot.jam", "") | ||
|  |     t.write("d1/a.cpp", "very bad non-compilable file\n") | ||
|  |     t.write("d1/src/a.cpp", "int main() {}\n") | ||
|  |     t.write("d1/jamfile.jam", """\
 | ||
|  | project : source-location src ; | ||
|  | exe a : [ glob *.cpp ] ../d2/d//l ; | ||
|  | """)
 | ||
|  |     t.write("d2/d/l.cpp", """\
 | ||
|  | #if defined(_WIN32) | ||
|  | __declspec(dllexport) | ||
|  | void force_import_lib_creation() {} | ||
|  | #endif | ||
|  | """)
 | ||
|  |     t.write("d2/d/jamfile.jam", "lib l : [ glob *.cpp ] ;") | ||
|  | 
 | ||
|  |     t.run_build_system(subdir="d1") | ||
|  |     t.expect_addition("d1/bin/$toolset/debug/a.exe") | ||
|  | 
 | ||
|  |     t.cleanup() | ||
|  | 
 | ||
|  | 
 | ||
|  | def test_wildcards_and_exclusion_patterns(): | ||
|  |     """
 | ||
|  |         Test that wildcards can include directories. Also test exclusion | ||
|  |      patterns. | ||
|  | 
 | ||
|  |     """
 | ||
|  |     t = BoostBuild.Tester(use_test_config=False) | ||
|  | 
 | ||
|  |     t.write("jamroot.jam", "") | ||
|  |     t.write("d1/src/foo/a.cpp", "void bar(); int main() { bar(); }\n") | ||
|  |     t.write("d1/src/bar/b.cpp", "void bar() {}\n") | ||
|  |     t.write("d1/src/bar/bad.cpp", "very bad non-compilable file\n") | ||
|  |     t.write("d1/jamfile.jam", """\
 | ||
|  | project : source-location src ; | ||
|  | exe a : [ glob foo/*.cpp bar/*.cpp : bar/bad* ] ../d2/d//l ; | ||
|  | """)
 | ||
|  |     t.write("d2/d/l.cpp", """\
 | ||
|  | #if defined(_WIN32) | ||
|  | __declspec(dllexport) | ||
|  | void force_import_lib_creation() {} | ||
|  | #endif | ||
|  | """)
 | ||
|  |     t.write("d2/d/jamfile.jam", "lib l : [ glob *.cpp ] ;") | ||
|  | 
 | ||
|  |     t.run_build_system(subdir="d1") | ||
|  |     t.expect_addition("d1/bin/$toolset/debug/a.exe") | ||
|  | 
 | ||
|  |     t.cleanup() | ||
|  | 
 | ||
|  | 
 | ||
|  | def test_glob_tree(): | ||
|  |     """Test that 'glob-tree' works.""" | ||
|  | 
 | ||
|  |     t = BoostBuild.Tester(use_test_config=False) | ||
|  | 
 | ||
|  |     t.write("jamroot.jam", "") | ||
|  |     t.write("d1/src/foo/a.cpp", "void bar(); int main() { bar(); }\n") | ||
|  |     t.write("d1/src/bar/b.cpp", "void bar() {}\n") | ||
|  |     t.write("d1/src/bar/bad.cpp", "very bad non-compilable file\n") | ||
|  |     t.write("d1/jamfile.jam", """\
 | ||
|  | project : source-location src ; | ||
|  | exe a : [ glob-tree *.cpp : bad* ] ../d2/d//l ; | ||
|  | """)
 | ||
|  |     t.write("d2/d/l.cpp", """\
 | ||
|  | #if defined(_WIN32) | ||
|  | __declspec(dllexport) | ||
|  | void force_import_lib_creation() {} | ||
|  | #endif | ||
|  | """)
 | ||
|  |     t.write("d2/d/jamfile.jam", "lib l : [ glob *.cpp ] ;") | ||
|  | 
 | ||
|  |     t.run_build_system(subdir="d1") | ||
|  |     t.expect_addition("d1/bin/$toolset/debug/a.exe") | ||
|  | 
 | ||
|  |     t.cleanup() | ||
|  | 
 | ||
|  | 
 | ||
|  | def test_directory_names_in_glob_tree(): | ||
|  |     """Test that directory names in patterns for 'glob-tree' are rejected.""" | ||
|  | 
 | ||
|  |     t = BoostBuild.Tester(use_test_config=False) | ||
|  | 
 | ||
|  |     t.write("jamroot.jam", "") | ||
|  |     t.write("d1/src/a.cpp", "very bad non-compilable file\n") | ||
|  |     t.write("d1/src/foo/a.cpp", "void bar(); int main() { bar(); }\n") | ||
|  |     t.write("d1/src/bar/b.cpp", "void bar() {}\n") | ||
|  |     t.write("d1/src/bar/bad.cpp", "very bad non-compilable file\n") | ||
|  |     t.write("d1/jamfile.jam", """\
 | ||
|  | project : source-location src ; | ||
|  | exe a : [ glob-tree foo/*.cpp bar/*.cpp : bad* ] ../d2/d//l ; | ||
|  | """)
 | ||
|  |     t.write("d2/d/l.cpp", """\
 | ||
|  | #if defined(_WIN32) | ||
|  | __declspec(dllexport) | ||
|  | void force_import_lib_creation() {} | ||
|  | #endif | ||
|  | """)
 | ||
|  |     t.write("d2/d/jamfile.jam", "lib l : [ glob *.cpp ] ;") | ||
|  | 
 | ||
|  |     t.run_build_system(subdir="d1", status=1) | ||
|  |     t.expect_output_lines("error: The patterns * may not include directory") | ||
|  | 
 | ||
|  |     t.cleanup() | ||
|  | 
 | ||
|  | 
 | ||
|  | def test_glob_with_absolute_names(): | ||
|  |     """Test that 'glob' works with absolute names.""" | ||
|  | 
 | ||
|  |     t = BoostBuild.Tester(use_test_config=False) | ||
|  | 
 | ||
|  |     t.write("jamroot.jam", "") | ||
|  |     t.write("d1/src/a.cpp", "very bad non-compilable file\n") | ||
|  |     t.write("d1/src/foo/a.cpp", "void bar(); int main() { bar(); }\n") | ||
|  |     t.write("d1/src/bar/b.cpp", "void bar() {}\n") | ||
|  |     # Note that to get the current dir, we use bjam's PWD, not Python's | ||
|  |     # os.getcwd(), because the former will always return a long path while the | ||
|  |     # latter might return a short path, which would confuse path.glob. | ||
|  |     t.write("d1/jamfile.jam", """\
 | ||
|  | project : source-location src ; | ||
|  | local pwd = [ PWD ] ;  # Always absolute. | ||
|  | exe a : [ glob $(pwd)/src/foo/*.cpp $(pwd)/src/bar/*.cpp ] ../d2/d//l ; | ||
|  | """)
 | ||
|  |     t.write("d2/d/l.cpp", """\
 | ||
|  | #if defined(_WIN32) | ||
|  | __declspec(dllexport) | ||
|  | void force_import_lib_creation() {} | ||
|  | #endif | ||
|  | """)
 | ||
|  |     t.write("d2/d/jamfile.jam", "lib l : [ glob *.cpp ] ;") | ||
|  | 
 | ||
|  |     t.run_build_system(subdir="d1") | ||
|  |     t.expect_addition("d1/bin/$toolset/debug/a.exe") | ||
|  | 
 | ||
|  |     t.cleanup() | ||
|  | 
 | ||
|  | 
 | ||
|  | def test_glob_excludes_in_subdirectory(): | ||
|  |     """
 | ||
|  |       Regression test: glob excludes used to be broken when building from a | ||
|  |     subdirectory. | ||
|  | 
 | ||
|  |     """
 | ||
|  |     t = BoostBuild.Tester(use_test_config=False) | ||
|  | 
 | ||
|  |     t.write("jamroot.jam", "build-project p ;") | ||
|  |     t.write("p/p.c", "int main() {}\n") | ||
|  |     t.write("p/p_x.c", "very bad non-compilable file\n") | ||
|  |     t.write("p/jamfile.jam", "exe p : [ glob *.c : p_x.c ] ;") | ||
|  | 
 | ||
|  |     t.run_build_system(subdir="p") | ||
|  |     t.expect_addition("p/bin/$toolset/debug/p.exe") | ||
|  | 
 | ||
|  |     t.cleanup() | ||
|  | 
 | ||
|  | 
 | ||
|  | test_basic() | ||
|  | test_source_location() | ||
|  | test_wildcards_and_exclusion_patterns() | ||
|  | test_glob_tree() | ||
|  | test_directory_names_in_glob_tree() | ||
|  | test_glob_with_absolute_names() | ||
|  | test_glob_excludes_in_subdirectory() |