mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 13:10:19 -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 . : * ;")
 |