mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-30 20:40:28 -04:00 
			
		
		
		
	
		
			
	
	
		
			216 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			216 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | #!/usr/bin/python | ||
|  | 
 | ||
|  | # Copyright 2008 Jurko Gospodnetic | ||
|  | # 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 that the expected default toolset is used when no toolset is explicitly | ||
|  | # specified on the command line or used from code via the using rule. Test that | ||
|  | # the default toolset is correctly used just like any other explicitly used | ||
|  | # toolset (e.g. toolset prerequisites, properties conditioned on toolset | ||
|  | # related features, etc.). | ||
|  | # | ||
|  | # Note that we need to ignore regular site/user/test configuration files to | ||
|  | # avoid them marking any toolsets not under our control as used. | ||
|  | 
 | ||
|  | import BoostBuild | ||
|  | 
 | ||
|  | 
 | ||
|  | # Line displayed by Boost Build when using the default toolset. | ||
|  | configuring_default_toolset_message = \ | ||
|  |     'warning: Configuring default toolset "%s".' | ||
|  | 
 | ||
|  | 
 | ||
|  | ############################################################################### | ||
|  | # | ||
|  | # test_conditions_on_default_toolset() | ||
|  | # ------------------------------------ | ||
|  | # | ||
|  | ############################################################################### | ||
|  | 
 | ||
|  | def test_conditions_on_default_toolset(): | ||
|  |     """Test that toolset and toolset subfeature conditioned properties get
 | ||
|  |     applied correctly when the toolset is selected by default. Implicitly tests | ||
|  |     that we can use the set-default-toolset rule to set the default toolset to | ||
|  |     be used by Boost Build. | ||
|  |     """
 | ||
|  | 
 | ||
|  |     t = BoostBuild.Tester("--user-config= --ignore-site-config", | ||
|  |         pass_toolset=False, use_test_config=False) | ||
|  | 
 | ||
|  |     toolset_name           = "myCustomTestToolset" | ||
|  |     toolset_version        = "v" | ||
|  |     toolset_version_unused = "v_unused" | ||
|  |     message_loaded         = "Toolset '%s' loaded." % toolset_name | ||
|  |     message_initialized    = "Toolset '%s' initialized." % toolset_name ; | ||
|  | 
 | ||
|  |     # Custom toolset. | ||
|  |     t.write(toolset_name + ".jam", """
 | ||
|  | import feature ; | ||
|  | ECHO "%(message_loaded)s" ; | ||
|  | feature.extend toolset : %(toolset_name)s ; | ||
|  | feature.subfeature toolset %(toolset_name)s : version : %(toolset_version)s %(toolset_version_unused)s ; | ||
|  | rule init ( version ) { ECHO "%(message_initialized)s" ; } | ||
|  | """ % {'message_loaded'     : message_loaded     ,
 | ||
|  |     'message_initialized'   : message_initialized, | ||
|  |     'toolset_name'          : toolset_name       , | ||
|  |     'toolset_version'       : toolset_version    , | ||
|  |     'toolset_version_unused': toolset_version_unused}) | ||
|  | 
 | ||
|  |     # Main Boost Build project script. | ||
|  |     t.write("jamroot.jam", """
 | ||
|  | import build-system ; | ||
|  | import errors ; | ||
|  | import feature ; | ||
|  | import notfile ; | ||
|  | 
 | ||
|  | build-system.set-default-toolset %(toolset_name)s : %(toolset_version)s ; | ||
|  | 
 | ||
|  | feature.feature description : : free incidental ; | ||
|  | 
 | ||
|  | # We use a rule instead of an action to avoid problems with action output not | ||
|  | # getting piped to stdout by the testing system. | ||
|  | rule buildRule ( names : targets ? : properties * ) | ||
|  | { | ||
|  |     local descriptions = [ feature.get-values description : $(properties) ] ; | ||
|  |     ECHO "descriptions:" /$(descriptions)/ ; | ||
|  |     local toolset = [ feature.get-values toolset : $(properties) ] ; | ||
|  |     ECHO "toolset:" /$(toolset)/ ; | ||
|  |     local toolset-version = [ feature.get-values "toolset-$(toolset):version" : $(properties) ] ; | ||
|  |     ECHO "toolset-version:" /$(toolset-version)/ ; | ||
|  | } | ||
|  | 
 | ||
|  | notfile testTarget | ||
|  |     : @buildRule | ||
|  |     : | ||
|  |     : | ||
|  |     <description>stand-alone | ||
|  |     <toolset>%(toolset_name)s:<description>toolset | ||
|  |     <toolset>%(toolset_name)s-%(toolset_version)s:<description>toolset-version | ||
|  |     <toolset>%(toolset_name)s-%(toolset_version_unused)s:<description>toolset-version-unused ; | ||
|  | """ % {'toolset_name'       : toolset_name   ,
 | ||
|  |     'toolset_version'       : toolset_version, | ||
|  |     'toolset_version_unused': toolset_version_unused}) | ||
|  | 
 | ||
|  |     t.run_build_system() | ||
|  |     t.expect_output_lines(configuring_default_toolset_message % toolset_name) | ||
|  |     t.expect_output_lines(message_loaded) | ||
|  |     t.expect_output_lines(message_initialized) | ||
|  |     t.expect_output_lines("descriptions: /stand-alone/ /toolset/ " | ||
|  |         "/toolset-version/") | ||
|  |     t.expect_output_lines("toolset: /%s/" % toolset_name) | ||
|  |     t.expect_output_lines("toolset-version: /%s/" % toolset_version) | ||
|  | 
 | ||
|  |     t.cleanup() | ||
|  | 
 | ||
|  | 
 | ||
|  | ############################################################################### | ||
|  | # | ||
|  | # test_default_toolset_on_os() | ||
|  | # ---------------------------- | ||
|  | # | ||
|  | ############################################################################### | ||
|  | 
 | ||
|  | def test_default_toolset_on_os( os, expected_toolset ): | ||
|  |     """Test that the given toolset is used as the default toolset on the given
 | ||
|  |     os. Uses hardcoded knowledge of how Boost Build decides on which host OS it | ||
|  |     is currently running. Note that we must not do much after tricking Boost | ||
|  |     Build into believing it has a specific host OS as this might mess up other | ||
|  |     important internal Boost Build state. | ||
|  |     """
 | ||
|  | 
 | ||
|  |     t = BoostBuild.Tester("--user-config= --ignore-site-config", | ||
|  |         pass_toolset=False, use_test_config=False) | ||
|  | 
 | ||
|  |     t.write("jamroot.jam", "modules.poke os : .name : %s ;" % os) | ||
|  | 
 | ||
|  |     # We need to tell the test system to ignore stderr output as attempting to | ||
|  |     # load missing toolsets might cause random failures with which we are not | ||
|  |     # concerned in this test. | ||
|  |     t.run_build_system(stderr=None) | ||
|  |     t.expect_output_lines(configuring_default_toolset_message % | ||
|  |         expected_toolset) | ||
|  | 
 | ||
|  |     t.cleanup() | ||
|  | 
 | ||
|  | 
 | ||
|  | ############################################################################### | ||
|  | # | ||
|  | # test_default_toolset_requirements() | ||
|  | # ----------------------------------- | ||
|  | # | ||
|  | ############################################################################### | ||
|  | 
 | ||
|  | def test_default_toolset_requirements(): | ||
|  |     """Test that default toolset's requirements get applied correctly.
 | ||
|  |     """
 | ||
|  | 
 | ||
|  |     t = BoostBuild.Tester("--user-config= --ignore-site-config", | ||
|  |         pass_toolset=False, use_test_config=False, | ||
|  |         ignore_toolset_requirements=False) | ||
|  | 
 | ||
|  |     toolset_name = "customTestToolsetWithRequirements" | ||
|  | 
 | ||
|  |     # Custom toolset. | ||
|  |     t.write(toolset_name + ".jam", """
 | ||
|  | import feature ; | ||
|  | import toolset ; | ||
|  | feature.extend toolset : %(toolset_name)s ; | ||
|  | toolset.add-requirements <description>toolset-requirement ; | ||
|  | rule init ( ) { } | ||
|  | """ % {'toolset_name': toolset_name})
 | ||
|  | 
 | ||
|  |     # Main Boost Build project script. | ||
|  |     t.write("jamroot.jam", """
 | ||
|  | import build-system ; | ||
|  | import errors ; | ||
|  | import feature ; | ||
|  | import notfile ; | ||
|  | 
 | ||
|  | build-system.set-default-toolset %(toolset_name)s ; | ||
|  | 
 | ||
|  | feature.feature description : : free incidental ; | ||
|  | 
 | ||
|  | # We use a rule instead of an action to avoid problems with action output not | ||
|  | # getting piped to stdout by the testing system. | ||
|  | rule buildRule ( names : targets ? : properties * ) | ||
|  | { | ||
|  |     local descriptions = [ feature.get-values description : $(properties) ] ; | ||
|  |     ECHO "descriptions:" /$(descriptions)/ ; | ||
|  |     local toolset = [ feature.get-values toolset : $(properties) ] ; | ||
|  |     ECHO "toolset:" /$(toolset)/ ; | ||
|  | } | ||
|  | 
 | ||
|  | notfile testTarget | ||
|  |     : @buildRule | ||
|  |     : | ||
|  |     : | ||
|  |     <description>target-requirement | ||
|  |     <description>toolset-requirement:<description>conditioned-requirement | ||
|  |     <description>unrelated-condition:<description>unrelated-description ; | ||
|  | """ % {'toolset_name': toolset_name})
 | ||
|  | 
 | ||
|  |     t.run_build_system() | ||
|  |     t.expect_output_lines(configuring_default_toolset_message % toolset_name) | ||
|  |     t.expect_output_lines("descriptions: /conditioned-requirement/ " | ||
|  |         "/target-requirement/ /toolset-requirement/") | ||
|  |     t.expect_output_lines("toolset: /%s/" % toolset_name) | ||
|  | 
 | ||
|  |     t.cleanup() | ||
|  | 
 | ||
|  | 
 | ||
|  | ############################################################################### | ||
|  | # | ||
|  | # main() | ||
|  | # ------ | ||
|  | # | ||
|  | ############################################################################### | ||
|  | 
 | ||
|  | test_default_toolset_on_os("NT"         , "msvc") | ||
|  | test_default_toolset_on_os("LINUX"      , "gcc" ) | ||
|  | test_default_toolset_on_os("CYGWIN"     , "gcc" ) | ||
|  | test_default_toolset_on_os("SomeOtherOS", "gcc" ) | ||
|  | test_default_toolset_requirements() | ||
|  | test_conditions_on_default_toolset() |