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