mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	Replaces double quotes on problematic regex strings (mostly ones that have escape sequences that are easier to preserve in single quotes). Necessitates also changing single quotes to `.`, i.e match any. For some (mostly ones that only have a single escaped character, or were using `\.` to match a literal fullstop) keep the double quotes and fix the regex instead.
		
			
				
	
	
		
			105 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Text
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Text
		
	
	
		
			Executable file
		
	
	
	
	
logger -expect-no-warnings
 | 
						|
 | 
						|
# quoted strings are a single argument to passes
 | 
						|
logger -expect log "quoted space" 1
 | 
						|
logger -expect log "quoted" 2
 | 
						|
logger -expect log "space" 2
 | 
						|
logger -expect log '"escaped' 2
 | 
						|
logger -expect log 'quotes"' 2
 | 
						|
 | 
						|
test_args unquoted space
 | 
						|
test_args "quoted space"
 | 
						|
test_args "\"escaped quotes\""
 | 
						|
test_args '"escaped quotes"'
 | 
						|
 | 
						|
logger -check-expected
 | 
						|
 | 
						|
# empty strings can be arguments
 | 
						|
logger -expect log "a   b  c" 2
 | 
						|
 | 
						|
log a " " b "" c
 | 
						|
log a ' ' b '' c
 | 
						|
 | 
						|
logger -check-expected
 | 
						|
 | 
						|
# quotes can be arguments
 | 
						|
logger -expect log '^"' 2
 | 
						|
logger -expect log "^'" 1
 | 
						|
test_args "'" '"' "\""
 | 
						|
logger -check-expected
 | 
						|
 | 
						|
# whitespace (or a lack thereof) shouldn't break things
 | 
						|
logger -expect log 'a. .b' 2
 | 
						|
log a" "b
 | 
						|
log a' 'b
 | 
						|
 | 
						|
logger -expect log '.a.b c' 2
 | 
						|
log "a"b c
 | 
						|
log 'a'b c
 | 
						|
 | 
						|
logger -check-expected
 | 
						|
 | 
						|
# numeric literals don't need quotes (unless they include a space)
 | 
						|
logger -expect log "1'd2" 1
 | 
						|
logger -expect log "3'b 011" 1
 | 
						|
 | 
						|
test_args 1'd2
 | 
						|
test_args "3'b 011"
 | 
						|
 | 
						|
logger -check-expected
 | 
						|
 | 
						|
# sidenote that apparently logger regexp ends with '\n$', but \n in the pattern is rejected
 | 
						|
logger -expect log "^('|\").$" 2
 | 
						|
log "
 | 
						|
log '
 | 
						|
 | 
						|
logger -check-expected
 | 
						|
 | 
						|
# bonus test
 | 
						|
test_args -opt "some value here" -b "some other \"escaped value\""
 | 
						|
 | 
						|
# special characters can appear in strings
 | 
						|
logger -expect log "#no comment" 2
 | 
						|
logger -expect log ";" 1
 | 
						|
logger -warn "a comment"
 | 
						|
 | 
						|
log "this is #no comment"
 | 
						|
log this is #a comment
 | 
						|
log "semicolon; "; log "#no comment"
 | 
						|
 | 
						|
logger -check-expected
 | 
						|
 | 
						|
# special characters are quoted in echo
 | 
						|
logger -expect log "'#'" 1
 | 
						|
logger -expect log "';'" 1
 | 
						|
logger -expect log "' '" 1
 | 
						|
logger -expect log "\"'\"" 1
 | 
						|
logger -expect log "'\"'" 1
 | 
						|
logger -expect log '.\\.' 1
 | 
						|
 | 
						|
echo on
 | 
						|
log '#'
 | 
						|
log ';'
 | 
						|
log ' '
 | 
						|
log "'"
 | 
						|
log '"'
 | 
						|
log '\'
 | 
						|
echo off
 | 
						|
 | 
						|
logger -check-expected
 | 
						|
 | 
						|
# should this be a backslash or an escaped space?
 | 
						|
log escaped\ space?
 | 
						|
 | 
						|
# frontend/backend args also work as expected
 | 
						|
logger -expect log "arg: inner \"escaped quotes\"" 3
 | 
						|
logger -expect log 'filename: file name\..{1,3}' 3
 | 
						|
logger -expect log "filename: <stdout>" 1
 | 
						|
logger -expect log "arg: no_quotes" 2
 | 
						|
 | 
						|
read_test_args -arg "inner \"escaped quotes\"" "file name.v" "file name.ys"
 | 
						|
write_test_args -arg "inner \"escaped quotes\"" "file name.out"
 | 
						|
read_test_args -arg no_quotes plugin.cc
 | 
						|
write_test_args -arg no_quotes
 | 
						|
 | 
						|
logger -check-expected
 |