a34b05d2e6
This opens an OpenBSD-mirabile (aka MirBSD) repository. ### MirBSD is: # Copyright (c) 1982-2003 by Thorsten "mirabile" Glaser <x86@ePost.de> # Copyright © 1968-2003 The authors of And contributors to UNIX®, the # C Language, BSD/Berkeley Unix; 386BSD, NetBSD 1.1 and OpenBSD. # # Anyone who obtained a copy of this work is hereby permitted to freely use, # distribute, modify, merge, sublicence, give away or sell it as long as the # authors are given due credit and the following notice is retained: # # This work is provided "as is", with no explicit or implicit warranty what- # soever. Use it only at your own risk. In no event may an author or contri- # butor be held liable for any damage, directly or indirectly, that origina- # ted through or is caused by creation or modification of this work. MirBSD is my private tree. MirBSD does not differ very much from OpenBSD and intentionally tracks OpenBSD. That's why it _is_ OpenBSD, just not the official one. It's like with DarrenBSD. At time of this writing, no advertising for MirBSD must be done, because the advertising clause has not yet been sorted out. http://templeofhate.com/tglaser/MirBSD/index.php
332 lines
4.4 KiB
Raku
332 lines
4.4 KiB
Raku
name: heredoc-1
|
|
description:
|
|
Check ordering/content of redundent here documents.
|
|
stdin:
|
|
cat << EOF1 << EOF2
|
|
hi
|
|
EOF1
|
|
there
|
|
EOF2
|
|
expected-stdout:
|
|
there
|
|
---
|
|
|
|
name: heredoc-2
|
|
description:
|
|
Check quoted here-doc is protected.
|
|
stdin:
|
|
a=foo
|
|
cat << 'EOF'
|
|
hi\
|
|
there$a
|
|
stuff
|
|
EO\
|
|
F
|
|
EOF
|
|
expected-stdout:
|
|
hi\
|
|
there$a
|
|
stuff
|
|
EO\
|
|
F
|
|
---
|
|
|
|
name: heredoc-3
|
|
description:
|
|
Check that newline isn't needed after heredoc-delimiter marker.
|
|
stdin: !
|
|
cat << EOF
|
|
hi
|
|
there
|
|
EOF
|
|
expected-stdout:
|
|
hi
|
|
there
|
|
---
|
|
|
|
name: heredoc-4
|
|
description:
|
|
Check that an error occurs if the heredoc-delimiter is missing.
|
|
stdin: !
|
|
cat << EOF
|
|
hi
|
|
there
|
|
expected-exit: e > 0
|
|
expected-stderr-pattern: /.*/
|
|
---
|
|
|
|
name: heredoc-5
|
|
description:
|
|
Check that backslash quotes a $, ` and \ and kills a \newline
|
|
stdin:
|
|
a=BAD
|
|
b=ok
|
|
cat << EOF
|
|
h\${a}i
|
|
h\\${b}i
|
|
th\`echo not-run\`ere
|
|
th\\`echo is-run`ere
|
|
fol\\ks
|
|
more\\
|
|
last \
|
|
line
|
|
EOF
|
|
expected-stdout:
|
|
h${a}i
|
|
h\oki
|
|
th`echo not-run`ere
|
|
th\is-runere
|
|
fol\ks
|
|
more\
|
|
last line
|
|
---
|
|
|
|
name: heredoc-6
|
|
description:
|
|
Check that \newline in initial here-delim word doesn't imply
|
|
a quoted here-doc.
|
|
stdin:
|
|
a=i
|
|
cat << EO\
|
|
F
|
|
h$a
|
|
there
|
|
EOF
|
|
expected-stdout:
|
|
hi
|
|
there
|
|
---
|
|
|
|
name: heredoc-7
|
|
description:
|
|
Check that double quoted $ expressions in here delimiters are
|
|
not expanded and match the delimiter.
|
|
POSIX says only quote removal is applied to the delimiter.
|
|
stdin:
|
|
a=b
|
|
cat << "E$a"
|
|
hi
|
|
h$a
|
|
hb
|
|
E$a
|
|
echo done
|
|
expected-stdout:
|
|
hi
|
|
h$a
|
|
hb
|
|
done
|
|
---
|
|
|
|
name: heredoc-8
|
|
description:
|
|
Check that double quoted escaped $ expressions in here
|
|
delimiters are not expanded and match the delimiter.
|
|
POSIX says only quote removal is applied to the delimiter
|
|
(\ counts as a quote).
|
|
stdin:
|
|
a=b
|
|
cat << "E\$a"
|
|
hi
|
|
h$a
|
|
h\$a
|
|
hb
|
|
h\b
|
|
E$a
|
|
echo done
|
|
expected-stdout:
|
|
hi
|
|
h$a
|
|
h\$a
|
|
hb
|
|
h\b
|
|
done
|
|
---
|
|
|
|
name: heredoc-tmpfile-1
|
|
description:
|
|
Check that heredoc temp files aren't removed too soon or too late.
|
|
Heredoc in simple command.
|
|
stdin:
|
|
TMPDIR=$PWD
|
|
eval '
|
|
cat <<- EOF
|
|
hi
|
|
EOF
|
|
for i in a b ; do
|
|
cat <<- EOF
|
|
more
|
|
EOF
|
|
done
|
|
' &
|
|
sleep 1
|
|
echo Left overs: *
|
|
expected-stdout:
|
|
hi
|
|
more
|
|
more
|
|
Left overs: *
|
|
---
|
|
|
|
name: heredoc-tmpfile-2
|
|
description:
|
|
Check that heredoc temp files aren't removed too soon or too late.
|
|
Heredoc in function, multiple calls to function.
|
|
stdin:
|
|
TMPDIR=$PWD
|
|
eval '
|
|
foo() {
|
|
cat <<- EOF
|
|
hi
|
|
EOF
|
|
}
|
|
foo
|
|
foo
|
|
' &
|
|
sleep 1
|
|
echo Left overs: *
|
|
expected-stdout:
|
|
hi
|
|
hi
|
|
Left overs: *
|
|
---
|
|
|
|
name: heredoc-tmpfile-3
|
|
description:
|
|
Check that heredoc temp files aren't removed too soon or too late.
|
|
Heredoc in function in loop, multiple calls to function.
|
|
stdin:
|
|
TMPDIR=$PWD
|
|
eval '
|
|
foo() {
|
|
cat <<- EOF
|
|
hi
|
|
EOF
|
|
}
|
|
for i in a b; do
|
|
foo
|
|
foo() {
|
|
cat <<- EOF
|
|
folks $i
|
|
EOF
|
|
}
|
|
done
|
|
foo
|
|
' &
|
|
sleep 1
|
|
echo Left overs: *
|
|
expected-stdout:
|
|
hi
|
|
folks b
|
|
folks b
|
|
Left overs: *
|
|
---
|
|
|
|
name: heredoc-tmpfile-4
|
|
description:
|
|
Check that heredoc temp files aren't removed too soon or too late.
|
|
Backgrounded simple command with here doc
|
|
stdin:
|
|
TMPDIR=$PWD
|
|
eval '
|
|
cat <<- EOF &
|
|
hi
|
|
EOF
|
|
' &
|
|
sleep 1
|
|
echo Left overs: *
|
|
expected-stdout:
|
|
hi
|
|
Left overs: *
|
|
---
|
|
|
|
name: heredoc-tmpfile-5
|
|
description:
|
|
Check that heredoc temp files aren't removed too soon or too late.
|
|
Backgrounded subshell command with here doc
|
|
stdin:
|
|
TMPDIR=$PWD
|
|
eval '
|
|
(
|
|
sleep 1 # so parent exits
|
|
echo A
|
|
cat <<- EOF
|
|
hi
|
|
EOF
|
|
echo B
|
|
) &
|
|
' &
|
|
sleep 2
|
|
echo Left overs: *
|
|
expected-stdout:
|
|
A
|
|
hi
|
|
B
|
|
Left overs: *
|
|
---
|
|
|
|
name: heredoc-tmpfile-6
|
|
description:
|
|
Check that heredoc temp files aren't removed too soon or too late.
|
|
Heredoc in pipeline.
|
|
stdin:
|
|
TMPDIR=$PWD
|
|
eval '
|
|
cat <<- EOF | sed "s/hi/HI/"
|
|
hi
|
|
EOF
|
|
' &
|
|
sleep 1
|
|
echo Left overs: *
|
|
expected-stdout:
|
|
HI
|
|
Left overs: *
|
|
---
|
|
|
|
name: heredoc-tmpfile-7
|
|
description:
|
|
Check that heredoc temp files aren't removed too soon or too late.
|
|
Heredoc in backgrounded pipeline.
|
|
stdin:
|
|
TMPDIR=$PWD
|
|
eval '
|
|
cat <<- EOF | sed 's/hi/HI/' &
|
|
hi
|
|
EOF
|
|
' &
|
|
sleep 1
|
|
echo Left overs: *
|
|
expected-stdout:
|
|
HI
|
|
Left overs: *
|
|
---
|
|
|
|
name: heredoc-tmpfile-8
|
|
description:
|
|
Check that heredoc temp files aren't removed too soon or too late.
|
|
Heredoc in function, backgrounded call to function.
|
|
stdin:
|
|
TMPDIR=$PWD
|
|
# Background eval so main shell doesn't do parsing
|
|
eval '
|
|
foo() {
|
|
cat <<- EOF
|
|
hi
|
|
EOF
|
|
}
|
|
foo
|
|
# sleep so eval can die
|
|
(sleep 1; foo) &
|
|
(sleep 1; foo) &
|
|
foo
|
|
' &
|
|
sleep 2
|
|
echo Left overs: *
|
|
expected-stdout:
|
|
hi
|
|
hi
|
|
hi
|
|
hi
|
|
Left overs: *
|
|
---
|
|
|