mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 04:50:34 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			95 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/python
 | |
| 
 | |
| # Copyright 2002 Dave Abrahams
 | |
| # Copyright 2003, 2004 Vladimir Prus
 | |
| # Distributed under the Boost Software License, Version 1.0.
 | |
| # (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
 | |
| 
 | |
| import BoostBuild
 | |
| import os.path
 | |
| import re
 | |
| 
 | |
| 
 | |
| def check_for_existing_boost_build_jam(t):
 | |
|     """
 | |
|       This test depends on no boost-build.jam file existing in any of the
 | |
|     folders along the current folder's path. If it does exist, not only would
 | |
|     this test fail but it could point to a completely wrong Boost Build
 | |
|     installation, thus causing headaches when attempting to diagnose the
 | |
|     problem. That is why we explicitly check for this scenario.
 | |
| 
 | |
|     """
 | |
|     problem = find_up_to_root(t.workdir, "boost-build.jam")
 | |
|     if problem:
 | |
|         BoostBuild.annotation("misconfiguration", """\
 | |
| This test expects to be run from a folder with no 'boost-build.jam' file in any
 | |
| of the folders along its path.
 | |
| 
 | |
| Working folder:
 | |
|   '%s'
 | |
| 
 | |
| Problematic boost-build.jam found at:
 | |
|   '%s'
 | |
| 
 | |
| Please remove this file or change the test's working folder and rerun the test.
 | |
| """ % (t.workdir, problem))
 | |
|         t.fail_test(1, dump_stdio=False, dump_stack=False)
 | |
| 
 | |
| 
 | |
| def find_up_to_root(folder, name):
 | |
|     last = ""
 | |
|     while last != folder:
 | |
|         candidate = os.path.join(folder, name)
 | |
|         if os.path.exists(candidate):
 | |
|             return candidate
 | |
|         last = folder
 | |
|         folder = os.path.dirname(folder)
 | |
| 
 | |
| 
 | |
| def match_re(actual, expected):
 | |
|     return re.match(expected, actual, re.DOTALL) != None
 | |
| 
 | |
| 
 | |
| t = BoostBuild.Tester(match=match_re, boost_build_path="", pass_toolset=0)
 | |
| t.set_tree("startup")
 | |
| check_for_existing_boost_build_jam(t)
 | |
| 
 | |
| t.run_build_system(status=1, stdout=
 | |
| r"""Unable to load Boost\.Build: could not find "boost-build\.jam"
 | |
| .*Attempted search from .* up to the root""")
 | |
| 
 | |
| t.run_build_system(status=1, subdir="no-bootstrap1",
 | |
|     stdout=r"Unable to load Boost\.Build: could not find build system\."
 | |
|     r".*attempted to load the build system by invoking"
 | |
|     r".*'boost-build ;'"
 | |
|     r'.*but we were unable to find "bootstrap\.jam"')
 | |
| 
 | |
| # Descend to a subdirectory which /does not/ contain a boost-build.jam file,
 | |
| # and try again to test the crawl-up behavior.
 | |
| t.run_build_system(status=1, subdir=os.path.join("no-bootstrap1", "subdir"),
 | |
|     stdout=r"Unable to load Boost\.Build: could not find build system\."
 | |
|     r".*attempted to load the build system by invoking"
 | |
|     r".*'boost-build ;'"
 | |
|     r'.*but we were unable to find "bootstrap\.jam"')
 | |
| 
 | |
| t.run_build_system(status=1, subdir="no-bootstrap2",
 | |
|     stdout=r"Unable to load Boost\.Build: could not find build system\."
 | |
|     r".*attempted to load the build system by invoking"
 | |
|     r".*'boost-build \. ;'"
 | |
|     r'.*but we were unable to find "bootstrap\.jam"')
 | |
| 
 | |
| t.run_build_system(status=1, subdir='no-bootstrap3', stdout=
 | |
| r"""Unable to load Boost.Build
 | |
| .*boost-build\.jam" was found.*
 | |
| However, it failed to call the "boost-build" rule""")
 | |
| 
 | |
| # Test bootstrapping based on BOOST_BUILD_PATH.
 | |
| t.run_build_system(["-sBOOST_BUILD_PATH=../boost-root/build"],
 | |
|     subdir="bootstrap-env", stdout="build system bootstrapped")
 | |
| 
 | |
| # Test bootstrapping based on an explicit path in boost-build.jam.
 | |
| t.run_build_system(subdir="bootstrap-explicit",
 | |
|     stdout="build system bootstrapped")
 | |
| 
 | |
| t.cleanup()
 |