shithub: kwa

ref: 916fa4b8f99ff33340a5b9f018cd2a67c5fa49c4
dir: /test/T.misc.broken/

View raw version
#!/bin/rc
echo T.misc: miscellaneous buglets now watched for >[1=2]

echo x | $awk '/[/]/' >[2]foo
grep 'nonterminated character class' foo >/dev/null || echo 'BAD: T.misc: nonterminated fails' >[1=2]

# Test for RS regex matching an empty record at EOF
echo a | $awk 1 'RS=a\n' > foo1
cat << 'EOF' > foo2

EOF
diff foo1 foo2 || echo 'BAD: T.misc: RS regex matching an empty record at EOF fails' >[1=2]

# Test for RS regex being reapplied
echo aaa1a2a | $awk 1 'RS=^a' >foo1
cat << 'EOF' > foo2

aa1a2a

EOF
diff foo1 foo2 || echo 'BAD: T.misc: ^regex reapplied fails' >[1=2]

# ^-anchored RS matching should be active at the start of each input file
tee foo1 foo2 >foo3 << 'EOF'
aaa
EOF
$awk 1 'RS=^a' foo1 foo2 foo3 >foo4
cat << 'EOF' > foo5

aa


aa


aa

EOF
diff foo4 foo5 || echo 'BAD: T.misc: ^RS matches the start of every input file fails' >[1=2]

$awk 'BEGIN \
	{
		print "hello, world"
	}
}}}' >foo1 >[2]foo2
grep 'source line 5' foo2 >/dev/null >[2=1] || echo 'BAD: T.misc: continuation line number' >[1=2]

$awk 'BEGIN {
	if () {
		print "foo"
	}
}' >foo1 >[2]foo2
grep '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 >foo2
echo 111 111 222 2 2 >foo1
cmp -s foo1 foo2 || echo 'BAD: T.misc: $f[1]++' >[1=2]

# These should be syntax errors
$awk '$' >[2]foo
grep 'unexpected' foo >/dev/null || echo >[1=2] 'BAD: T.misc: syntax error $ fails' >[1=2]

$awk '{print $' >[2]foo
grep '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 'a
b c
de fg hi' >foo0
$awk 'END { print NF, $0 }' foo0 >foo1
awk '{ print NF, $0 }' foo0| tail -1 >foo2
cmp -s foo1 foo2 || echo 'BAD: T.misc: END must preserve $0 (1)' >[1=2]

echo 'fg hi' >foo0
$awk 'END { print NF, $0 }' foo0 >foo1
awk '{ print NF, $0 }' foo0| tail -1 >foo2
cmp -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 'hello888
hello
hello
helloxGOO
hello
0A' > 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" }' >> foo2
cmp -s foo1 foo2 || echo 'BAD: T.misc: escape sequences in strings mishandled' >[1=2]