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