94 lines · 2.5 KB · Text
RawDownload
#!/bin/rcecho T.misc: miscellaneous buglets now watched for >[1=2] echo x | $awk '/[/]/' >[2]foogrep 'nonterminated character class' foo >/dev/null || echo 'BAD: T.misc: nonterminated fails' >[1=2] # Test for RS regex matching an empty record at EOFecho a | $awk 1 'RS=a\n' > foo1cat << 'EOF' > foo2 EOFdiff foo1 foo2 || echo 'BAD: T.misc: RS regex matching an empty record at EOF fails' >[1=2] # Test for RS regex being reappliedecho aaa1a2a | $awk 1 'RS=^a' >foo1cat << 'EOF' > foo2 aa1a2a EOFdiff foo1 foo2 || echo 'BAD: T.misc: ^regex reapplied fails' >[1=2] # ^-anchored RS matching should be active at the start of each input filetee foo1 foo2 >foo3 << 'EOF'aaaEOF$awk 1 'RS=^a' foo1 foo2 foo3 >foo4cat << 'EOF' > foo5 aa  aa  aa EOFdiff foo4 foo5 || echo 'BAD: T.misc: ^RS matches the start of every input file fails' >[1=2] $awk 'BEGIN \	{		print "hello, world"	}}}}' >foo1 >[2]foo2grep 'source line 5' foo2 >/dev/null >[2=1] || echo 'BAD: T.misc: continuation line number' >[1=2] $awk 'BEGIN {	if () {		print "foo"	}}' >foo1 >[2]foo2grep 'syntax error at source line 2' foo2 >/dev/null >[2=1] || echo 'BAD: T.misc: syntax error line number' >[1=2] echo 111 222 333 >foo$awk '{ f[1]=1; f[2]=2; print $f[1], $f[1]++, $f[2], f[1], f[2] }' foo >foo2echo 111 111 222 2 2 >foo1cmp -s foo1 foo2 || echo 'BAD: T.misc: $f[1]++' >[1=2] # These should be syntax errors$awk '$' >[2]foogrep 'unexpected' foo >/dev/null || echo >[1=2] 'BAD: T.misc: syntax error $ fails' >[1=2] $awk '{print $' >[2]foogrep 'unexpected' foo >/dev/null || echo >[1=2] 'BAD: T.misc: syntax error $2 fails' >[1=2] $awk 'BEGIN {printf "%2$s %1$s\n", "a", "b"}' >foo >[2=1]grep '''\$'' not permitted in awk formats' foo >/dev/null || echo >[1=2] 'BAD: T.misc: ''$'' not permitted in formats' >[1=2] echo 'ab cde fg hi' >foo0$awk 'END { print NF, $0 }' foo0 >foo1awk '{ print NF, $0 }' foo0| tail -1 >foo2cmp -s foo1 foo2 || echo 'BAD: T.misc: END must preserve $0 (1)' >[1=2] echo 'fg hi' >foo0$awk 'END { print NF, $0 }' foo0 >foo1awk '{ print NF, $0 }' foo0| tail -1 >foo2cmp -s foo1 foo2 || echo 'BAD: T.misc: END must preserve $0 (2)' >[1=2] # Check handling of octal \OOO and hex \xHH esc. seqs. in strings.echo 'hello888hellohellohelloxGOOhello0A' > foo1$awk 'BEGIN { print "hello\888" }'   > foo2$awk 'BEGIN { print "hello\x000A" }' >> foo2$awk 'BEGIN { printf "hello\x0A" }'  >> foo2$awk 'BEGIN { print "hello\xGOO" }'  >> foo2$awk 'BEGIN { print "hello\x0A0A" }' >> foo2cmp -s foo1 foo2 || echo 'BAD: T.misc: escape sequences in strings mishandled' >[1=2]