mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-26 10:30:22 -04:00 
			
		
		
		
	
		
			
	
	
		
			106 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			106 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | #!/usr/bin/python | ||
|  | 
 | ||
|  | # Copyright (C) 2006. 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) | ||
|  | 
 | ||
|  | import BoostBuild | ||
|  | 
 | ||
|  | def test_basic(): | ||
|  |     t = BoostBuild.Tester(use_test_config=False) | ||
|  | 
 | ||
|  |     t.write("jamroot.jam", """\
 | ||
|  | exe a1 : a1.cpp : <conditional>@a1-rule ; | ||
|  | rule a1-rule ( properties * ) | ||
|  | { | ||
|  |     if <variant>debug in $(properties) | ||
|  |     { | ||
|  |         return <define>OK ; | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | exe a2 : a2.cpp : <conditional>@$(__name__).a2-rule | ||
|  |     <variant>debug:<optimization>speed ; | ||
|  | rule a2-rule ( properties * ) | ||
|  | { | ||
|  |     if <optimization>speed in $(properties) | ||
|  |     { | ||
|  |         return <define>OK ; | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | exe a3 : a3.cpp : | ||
|  |     <conditional>@$(__name__).a3-rule-1 | ||
|  |     <conditional>@$(__name__).a3-rule-2 ; | ||
|  | rule a3-rule-1 ( properties * ) | ||
|  | { | ||
|  |     if <optimization>speed in $(properties) | ||
|  |     { | ||
|  |         return <define>OK ; | ||
|  |     } | ||
|  | } | ||
|  | rule a3-rule-2 ( properties * ) | ||
|  | { | ||
|  |     if <variant>debug in $(properties) | ||
|  |     { | ||
|  |         return <optimization>speed ; | ||
|  |     } | ||
|  | } | ||
|  | """)
 | ||
|  | 
 | ||
|  |     t.write("a1.cpp", "#ifdef OK\nint main() {}\n#endif\n") | ||
|  |     t.write("a2.cpp", "#ifdef OK\nint main() {}\n#endif\n") | ||
|  |     t.write("a3.cpp", "#ifdef OK\nint main() {}\n#endif\n") | ||
|  | 
 | ||
|  |     t.run_build_system() | ||
|  | 
 | ||
|  |     t.expect_addition("bin/$toolset/debug/a1.exe") | ||
|  |     t.expect_addition("bin/$toolset/debug/optimization-speed/a2.exe") | ||
|  |     t.expect_addition("bin/$toolset/debug/optimization-speed/a3.exe") | ||
|  | 
 | ||
|  |     t.cleanup() | ||
|  | 
 | ||
|  | 
 | ||
|  | def test_glob_in_indirect_conditional(): | ||
|  |     """
 | ||
|  |       Regression test: project-rules.glob rule run from inside an indirect | ||
|  |     conditional should report an error as it depends on the 'currently loaded | ||
|  |     project' concept and indirect conditional rules get called only after all | ||
|  |     the project modules have already finished loading. | ||
|  | 
 | ||
|  |     """
 | ||
|  |     t = BoostBuild.Tester(use_test_config=False) | ||
|  | 
 | ||
|  |     t.write("jamroot.jam", """\
 | ||
|  | use-project /library-example/foo : util/foo ; | ||
|  | build-project app ; | ||
|  | """)
 | ||
|  |     t.write("app/app.cpp", "int main() {}\n"); | ||
|  |     t.write("app/jamfile.jam", "exe app : app.cpp /library-example/foo//bar ;") | ||
|  |     t.write("util/foo/bar.cpp", """\
 | ||
|  | #ifdef _WIN32 | ||
|  | __declspec(dllexport) | ||
|  | #endif | ||
|  | void foo() {} | ||
|  | """)
 | ||
|  |     t.write("util/foo/jamfile.jam", """\
 | ||
|  | rule print-my-sources ( properties * ) | ||
|  | { | ||
|  |     ECHO My sources: ; | ||
|  |     ECHO [ glob *.cpp ] ; | ||
|  | } | ||
|  | lib bar : bar.cpp : <conditional>@print-my-sources ; | ||
|  | """)
 | ||
|  | 
 | ||
|  |     t.run_build_system(status=1) | ||
|  |     t.expect_output_lines(["My sources:", "bar.cpp"], False) | ||
|  |     t.expect_output_lines("error: Reference to the project currently being " | ||
|  |         "loaded requested when there was no project module being loaded.") | ||
|  | 
 | ||
|  |     t.cleanup() | ||
|  | 
 | ||
|  | 
 | ||
|  | test_basic() | ||
|  | test_glob_in_indirect_conditional() |