mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-30 12:30:23 -04:00 
			
		
		
		
	
		
			
	
	
		
			88 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			88 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | #!/usr/bin/python | ||
|  | 
 | ||
|  | # Copyright 2014 Steven Watanabe | ||
|  | # 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) | ||
|  | 
 | ||
|  | # This tests the GLOB rule. | ||
|  | 
 | ||
|  | import os | ||
|  | import BoostBuild | ||
|  | 
 | ||
|  | def test_glob(files, glob, expected, setup=""): | ||
|  |     t = BoostBuild.Tester(["-ffile.jam"], pass_toolset=0) | ||
|  |     t.write("file.jam", setup + """
 | ||
|  |     for local p in [ SORT %s ] | ||
|  |     { | ||
|  |         ECHO $(p) ; | ||
|  |     } | ||
|  |     UPDATE ; | ||
|  |     """ % glob)
 | ||
|  |     for f in files: | ||
|  |         t.write(f, "") | ||
|  |     # convert / into \ on windows | ||
|  |     expected = [os.path.join(*p.split("/")) for p in expected] | ||
|  |     expected.sort() | ||
|  |     t.run_build_system(stdout="\n".join(expected + [""])) | ||
|  |     t.cleanup() | ||
|  | 
 | ||
|  | # one or both arguments empty | ||
|  | test_glob([], "[ GLOB : ]", []) | ||
|  | test_glob([], "[ GLOB . : ]", []) | ||
|  | test_glob([], "[ GLOB : * ]", []) | ||
|  | 
 | ||
|  | # a single result | ||
|  | test_glob([], "[ GLOB . : * ]", ["./file.jam"]) | ||
|  | 
 | ||
|  | # * can match any number of characters | ||
|  | test_glob([], "[ GLOB . : file*.jam ]", ["./file.jam"]) | ||
|  | test_glob([], "[ GLOB . : f*am ]", ["./file.jam"]) | ||
|  | # ? should match a single character, but not more than one | ||
|  | test_glob([], "[ GLOB . : fi?e.?am ]", ["./file.jam"]) | ||
|  | test_glob([], "[ GLOB . : fi?.jam ]", []) | ||
|  | # [abc-fh-j] matches a set of characters | ||
|  | test_glob([], "[ GLOB . : [f][i][l][e].jam ]", ["./file.jam"]) | ||
|  | test_glob([], "[ GLOB . : [fghau][^usdrwe][k-o][^f-s].jam ]", ["./file.jam"]) | ||
|  | # \x matches x | ||
|  | test_glob([], "[ GLOB . : \\f\\i\\l\\e.jam ]", ["./file.jam"]) | ||
|  | 
 | ||
|  | # multiple results | ||
|  | test_glob(["test.txt"], "[ GLOB . : * ]", ["./file.jam", "./test.txt"]) | ||
|  | 
 | ||
|  | # directories | ||
|  | test_glob(["dir1/dir2/test.txt"], "[ GLOB dir1 : * ]", ["dir1/dir2"]); | ||
|  | 
 | ||
|  | # non-existent directory | ||
|  | test_glob([], "[ GLOB dir1 : * ] ", []) | ||
|  | 
 | ||
|  | # multiple directories and patterns | ||
|  | test_glob(["dir1/file1.txt", "dir2/file1.txt", | ||
|  |            "dir2/file2.txt"], | ||
|  |           "[ GLOB dir1 dir2 : file1* file2* ]", | ||
|  |           ["dir1/file1.txt", "dir2/file1.txt", | ||
|  |            "dir2/file2.txt"]) | ||
|  | 
 | ||
|  | # The directory can contain . and .. | ||
|  | test_glob(["dir/test.txt"], "[ GLOB dir/. : test.txt ]", ["dir/./test.txt"]) | ||
|  | test_glob(["dir/test.txt"], "[ GLOB dir/.. : file.jam ]", ["dir/../file.jam"]) | ||
|  | 
 | ||
|  | # On case insensitive filesystems, the result should | ||
|  | # be normalized.  It should NOT be downcased. | ||
|  | test_glob(["TEST.TXT"], "[ GLOB . : TEST.TXT ]", ["./TEST.TXT"]) | ||
|  | 
 | ||
|  | case_insensitive = (os.path.normcase("FILE") == "file") | ||
|  | 
 | ||
|  | if case_insensitive: | ||
|  |     test_glob(["TEST.TXT"], "[ GLOB . : test.txt ]", ["./TEST.TXT"]) | ||
|  |     # This used to fail because the caching routines incorrectly | ||
|  |     # reported that . and .. do not exist. | ||
|  |     test_glob(["D1/D2/TEST.TXT"], "[ GLOB D1/./D2 : test.txt ]", | ||
|  |               ["D1/./D2/TEST.TXT"]) | ||
|  |     test_glob(["D1/TEST.TXT", "TEST.TXT"], "[ GLOB D1/../D1 : test.txt ]", | ||
|  |               ["D1/../D1/TEST.TXT"]) | ||
|  |     # This also failed because directories that were first found | ||
|  |     # by GLOB were recorded as non-existent. | ||
|  |     test_glob(["D1/D2/TEST.TXT"], "[ GLOB d1/d2 : test.txt ]", | ||
|  |               ["D1/D2/TEST.TXT"], | ||
|  |               "GLOB . : * ;") |