mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-04 05:50:31 -05: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()
							 |