mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-30 20:40:28 -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()
 |