mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 21:40:52 -05:00 
			
		
		
		
	
		
			
	
	
		
			329 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			329 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								#!/usr/bin/python
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Copyright 2008, 2012 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 Boost Build configuration file handling.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import BoostBuild
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import os
							 | 
						||
| 
								 | 
							
								import os.path
							 | 
						||
| 
								 | 
							
								import re
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								###############################################################################
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# test_user_configuration()
							 | 
						||
| 
								 | 
							
								# -------------------------
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								###############################################################################
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def test_user_configuration():
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								      Test Boost Build user configuration handling. Both relative and absolute
							 | 
						||
| 
								 | 
							
								    path handling is tested.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    implicitConfigLoadMessage =  \
							 | 
						||
| 
								 | 
							
								        "notice: Loading user-config configuration file: *"
							 | 
						||
| 
								 | 
							
								    explicitConfigLoadMessage =  \
							 | 
						||
| 
								 | 
							
								        "notice: Loading explicitly specified user configuration file:"
							 | 
						||
| 
								 | 
							
								    disabledConfigLoadMessage =  \
							 | 
						||
| 
								 | 
							
								        "notice: User configuration file loading explicitly disabled."
							 | 
						||
| 
								 | 
							
								    testMessage = "_!_!_!_!_!_!_!_!_ %s _!_!_!_!_!_!_!_!_"
							 | 
						||
| 
								 | 
							
								    toolsetName = "__myDummyToolset__"
							 | 
						||
| 
								 | 
							
								    subdirName = "ASubDirectory"
							 | 
						||
| 
								 | 
							
								    configFileNames = ["ups_lala_1.jam", "ups_lala_2.jam",
							 | 
						||
| 
								 | 
							
								        os.path.join(subdirName, "ups_lala_3.jam")]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    t = BoostBuild.Tester(["toolset=%s" % toolsetName,
							 | 
						||
| 
								 | 
							
								        "--debug-configuration"], pass_toolset=False, use_test_config=False)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for configFileName in configFileNames:
							 | 
						||
| 
								 | 
							
								        message = "ECHO \"%s\" ;" % testMessage % configFileName
							 | 
						||
| 
								 | 
							
								        # We need to double any backslashes in the message or Jam will
							 | 
						||
| 
								 | 
							
								        # interpret them as escape characters.
							 | 
						||
| 
								 | 
							
								        t.write(configFileName, message.replace("\\", "\\\\"))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # Prepare a dummy toolset so we do not get errors in case the default one
							 | 
						||
| 
								 | 
							
								    # is not found.
							 | 
						||
| 
								 | 
							
								    t.write(toolsetName + ".jam", """\
							 | 
						||
| 
								 | 
							
								import feature ;
							 | 
						||
| 
								 | 
							
								feature.extend toolset : %s ;
							 | 
						||
| 
								 | 
							
								rule init ( ) { }
							 | 
						||
| 
								 | 
							
								""" % toolsetName)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # Python version of the same dummy toolset.
							 | 
						||
| 
								 | 
							
								    t.write(toolsetName + ".py", """\
							 | 
						||
| 
								 | 
							
								from b2.build import feature
							 | 
						||
| 
								 | 
							
								feature.extend('toolset', ['%s'])
							 | 
						||
| 
								 | 
							
								def init(): pass
							 | 
						||
| 
								 | 
							
								""" % toolsetName)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    t.write("jamroot.jam", """\
							 | 
						||
| 
								 | 
							
								local test-index = [ MATCH ---test-id---=(.*) : [ modules.peek : ARGV ] ] ;
							 | 
						||
| 
								 | 
							
								ECHO test-index: $(test-index:E=(unknown)) ;
							 | 
						||
| 
								 | 
							
								""")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    class LocalTester:
							 | 
						||
| 
								 | 
							
								        def __init__(self, tester):
							 | 
						||
| 
								 | 
							
								            self.__tester = tester
							 | 
						||
| 
								 | 
							
								            self.__test_ids = []
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        def __assertionFailure(self, message):
							 | 
						||
| 
								 | 
							
								            BoostBuild.annotation("failure", "Internal test assertion failure "
							 | 
						||
| 
								 | 
							
								                "- %s" % message)
							 | 
						||
| 
								 | 
							
								            self.__tester.fail_test(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        def __call__(self, test_id, env, extra_args=None, *args, **kwargs):
							 | 
						||
| 
								 | 
							
								            if env == "" and not canSetEmptyEnvironmentVariable:
							 | 
						||
| 
								 | 
							
								                self.__assertionFailure("Can not set empty environment "
							 | 
						||
| 
								 | 
							
								                    "variables on this platform.")
							 | 
						||
| 
								 | 
							
								            self.__registerTestId(str(test_id))
							 | 
						||
| 
								 | 
							
								            if extra_args is None:
							 | 
						||
| 
								 | 
							
								                extra_args = []
							 | 
						||
| 
								 | 
							
								            extra_args.append("---test-id---=%s" % test_id)
							 | 
						||
| 
								 | 
							
								            env_name = "BOOST_BUILD_USER_CONFIG"
							 | 
						||
| 
								 | 
							
								            previous_env = os.environ.get(env_name)
							 | 
						||
| 
								 | 
							
								            _env_set(env_name, env)
							 | 
						||
| 
								 | 
							
								            try:
							 | 
						||
| 
								 | 
							
								                self.__tester.run_build_system(extra_args, *args, **kwargs)
							 | 
						||
| 
								 | 
							
								            finally:
							 | 
						||
| 
								 | 
							
								                _env_set(env_name, previous_env)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        def __registerTestId(self, test_id):
							 | 
						||
| 
								 | 
							
								            if test_id in self.__test_ids:
							 | 
						||
| 
								 | 
							
								                self.__assertionFailure("Multiple test cases encountered "
							 | 
						||
| 
								 | 
							
								                    "using the same test id '%s'." % test_id)
							 | 
						||
| 
								 | 
							
								            self.__test_ids.append(test_id)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    test = LocalTester(t)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    test(1, None)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(explicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(disabledConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[0], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[1], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[2], False)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    test(2, None, ["--user-config="])
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(implicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(explicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(disabledConfigLoadMessage)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[0], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[1], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[2], False)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    test(3, None, ['--user-config=""'])
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(implicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(explicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(disabledConfigLoadMessage)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[0], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[1], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[2], False)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    test(4, None, ['--user-config="%s"' % configFileNames[0]])
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(implicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(explicitConfigLoadMessage)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(disabledConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[0])
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[1], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[2], False)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    test(5, None, ['--user-config="%s"' % configFileNames[2]])
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(implicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(explicitConfigLoadMessage)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(disabledConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[0], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[1], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[2])
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    test(6, None, ['--user-config="%s"' % os.path.abspath(configFileNames[1])])
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(implicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(explicitConfigLoadMessage)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(disabledConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[0], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[1])
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[2], False)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    test(7, None, ['--user-config="%s"' % os.path.abspath(configFileNames[2])])
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(implicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(explicitConfigLoadMessage)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(disabledConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[0], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[1], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[2])
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if canSetEmptyEnvironmentVariable:
							 | 
						||
| 
								 | 
							
								        test(8, "")
							 | 
						||
| 
								 | 
							
								        t.expect_output_lines(implicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								        t.expect_output_lines(explicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								        t.expect_output_lines(disabledConfigLoadMessage, True)
							 | 
						||
| 
								 | 
							
								        t.expect_output_lines(testMessage % configFileNames[0], False)
							 | 
						||
| 
								 | 
							
								        t.expect_output_lines(testMessage % configFileNames[1], False)
							 | 
						||
| 
								 | 
							
								        t.expect_output_lines(testMessage % configFileNames[2], False)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    test(9, '""')
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(implicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(explicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(disabledConfigLoadMessage)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[0], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[1], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[2], False)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    test(10, configFileNames[1])
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(implicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(explicitConfigLoadMessage)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(disabledConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[0], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[1])
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[2], False)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    test(11, configFileNames[1], ['--user-config=""'])
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(implicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(explicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(disabledConfigLoadMessage)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[0], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[1], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[2], False)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    test(12, configFileNames[1], ['--user-config="%s"' % configFileNames[0]])
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(implicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(explicitConfigLoadMessage)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(disabledConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[0])
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[1], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[2], False)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if canSetEmptyEnvironmentVariable:
							 | 
						||
| 
								 | 
							
								        test(13, "", ['--user-config="%s"' % configFileNames[0]])
							 | 
						||
| 
								 | 
							
								        t.expect_output_lines(implicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								        t.expect_output_lines(explicitConfigLoadMessage)
							 | 
						||
| 
								 | 
							
								        t.expect_output_lines(disabledConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								        t.expect_output_lines(testMessage % configFileNames[0])
							 | 
						||
| 
								 | 
							
								        t.expect_output_lines(testMessage % configFileNames[1], False)
							 | 
						||
| 
								 | 
							
								        t.expect_output_lines(testMessage % configFileNames[2], False)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    test(14, '""', ['--user-config="%s"' % configFileNames[0]])
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(implicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(explicitConfigLoadMessage)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(disabledConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[0])
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[1], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[2], False)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    test(15, "invalid", ['--user-config="%s"' % configFileNames[0]])
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(implicitConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(explicitConfigLoadMessage)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(disabledConfigLoadMessage, False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[0])
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[1], False)
							 | 
						||
| 
								 | 
							
								    t.expect_output_lines(testMessage % configFileNames[2], False)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    t.cleanup()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								###############################################################################
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Private interface.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								###############################################################################
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def _canSetEmptyEnvironmentVariable():
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								      Unfortunately different OSs (and possibly Python implementations as well)
							 | 
						||
| 
								 | 
							
								    have different interpretations of what it means to set an evironment
							 | 
						||
| 
								 | 
							
								    variable to an empty string. Some (e.g. Windows) interpret it as unsetting
							 | 
						||
| 
								 | 
							
								    the variable and some (e.g. AIX or Darwin) actually set it to an empty
							 | 
						||
| 
								 | 
							
								    string.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    dummyName = "UGNABUNGA_FOO_BAR_BAZ_FEE_FAE_FOU_FAM"
							 | 
						||
| 
								 | 
							
								    original = os.environ.get(dummyName)
							 | 
						||
| 
								 | 
							
								    _env_set(dummyName, "")
							 | 
						||
| 
								 | 
							
								    result = _getExternalEnv(dummyName) == ""
							 | 
						||
| 
								 | 
							
								    _env_set(dummyName, original)
							 | 
						||
| 
								 | 
							
								    return result
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def _env_del(name):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								      Unsets the given environment variable if it is currently set.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      Note that we can not use os.environ.pop() or os.environ.clear() here
							 | 
						||
| 
								 | 
							
								    since prior to Python 2.6 these functions did not remove the actual
							 | 
						||
| 
								 | 
							
								    environment variable by calling os.unsetenv().
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    try:
							 | 
						||
| 
								 | 
							
								        del os.environ[name]
							 | 
						||
| 
								 | 
							
								    except KeyError:
							 | 
						||
| 
								 | 
							
								        pass
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def _env_set(name, value):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								      Sets the given environment variable value or unsets it, if the value is
							 | 
						||
| 
								 | 
							
								    None.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    if value is None:
							 | 
						||
| 
								 | 
							
								        _env_del(name)
							 | 
						||
| 
								 | 
							
								    else:
							 | 
						||
| 
								 | 
							
								        os.environ[name] = value
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def _getExternalEnv(name):
							 | 
						||
| 
								 | 
							
								    toolsetName = "__myDummyToolset__"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    t = BoostBuild.Tester(["toolset=%s" % toolsetName], pass_toolset=False,
							 | 
						||
| 
								 | 
							
								        use_test_config=False)
							 | 
						||
| 
								 | 
							
								    try:
							 | 
						||
| 
								 | 
							
								        #   Prepare a dummy toolset so we do not get errors in case the default
							 | 
						||
| 
								 | 
							
								        # one is not found.
							 | 
						||
| 
								 | 
							
								        t.write(toolsetName + ".jam", """\
							 | 
						||
| 
								 | 
							
								import feature ;
							 | 
						||
| 
								 | 
							
								feature.extend toolset : %s ;
							 | 
						||
| 
								 | 
							
								rule init ( ) { }
							 | 
						||
| 
								 | 
							
								""" % toolsetName)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        # Python version of the same dummy toolset.
							 | 
						||
| 
								 | 
							
								        t.write(toolsetName + ".py", """\
							 | 
						||
| 
								 | 
							
								from b2.build import feature
							 | 
						||
| 
								 | 
							
								feature.extend('toolset', ['%s'])
							 | 
						||
| 
								 | 
							
								def init(): pass
							 | 
						||
| 
								 | 
							
								""" % toolsetName)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        t.write("jamroot.jam", """\
							 | 
						||
| 
								 | 
							
								import os ;
							 | 
						||
| 
								 | 
							
								local names = [ MATCH ^---var-name---=(.*) : [ modules.peek : ARGV ] ] ;
							 | 
						||
| 
								 | 
							
								for x in $(names)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    value = [ os.environ $(x) ] ;
							 | 
						||
| 
								 | 
							
								    ECHO "###" $(x): '$(value)' "###" ;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								""")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        t.run_build_system(["---var-name---=%s" % name])
							 | 
						||
| 
								 | 
							
								        m = re.search("^### %s: '(.*)' ###$" % name, t.stdout(), re.MULTILINE)
							 | 
						||
| 
								 | 
							
								        if m:
							 | 
						||
| 
								 | 
							
								            return m.group(1)
							 | 
						||
| 
								 | 
							
								    finally:
							 | 
						||
| 
								 | 
							
								        t.cleanup()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								###############################################################################
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# main()
							 | 
						||
| 
								 | 
							
								# ------
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								###############################################################################
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								canSetEmptyEnvironmentVariable = _canSetEmptyEnvironmentVariable()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test_user_configuration()
							 |