1
0
mirror of git://projects.qi-hardware.com/eda-tools.git synced 2024-11-22 22:07:09 +02:00

b2/test/subesc: more tests; also for values; add explanation of escaping

This commit is contained in:
Werner Almesberger 2012-06-03 23:14:28 -03:00
parent a52247294b
commit 7f24ef0e5b

View File

@ -1,9 +1,23 @@
#!/bin/bash #!/bin/bash
. ./Common . ./Common
#
# Note that we have to escape things for the shell as well. In general,
# for any character C, \C becomes C. However, in the case of <<EOF ... EOF,
# \ is left as is if it doesn't precede a special character.
#
############################################################################### ###############################################################################
tst "substitutions: escape *" -R '*\\*' <<EOF tst "substitutions: escape x in regexp" -R '*\\x' <<EOF
EOF
expect <<EOF
^.*\\x\$
EOF
#------------------------------------------------------------------------------
tst "substitutions: escape * in regexp" -R '*\\*' <<EOF
EOF EOF
expect <<EOF expect <<EOF
@ -12,7 +26,7 @@ EOF
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
tst "substitutions: escape . (implicit)" -R 'x.y' <<EOF tst "substitutions: escape . in regexp (implicit)" -R 'x.y' <<EOF
EOF EOF
expect <<EOF expect <<EOF
@ -21,7 +35,7 @@ EOF
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
tst "substitutions: escape |" -R 'a\\\|b' <<EOF tst "substitutions: escape | in regexp" -R 'a\\\|b' <<EOF
EOF EOF
expect <<EOF expect <<EOF
@ -30,7 +44,7 @@ EOF
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
tst "substitutions: escape \\" -R 'x\\\\y' <<EOF tst "substitutions: escape \\ in regexp" -R 'x\\\\y' <<EOF
EOF EOF
expect <<EOF expect <<EOF
@ -39,11 +53,90 @@ EOF
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
tst_fail "substitutions: escape EOL" -R 'x\\' <<EOF tst_fail "substitutions: try to escape EOL in regexp" -R 'x\\' <<EOF
EOF EOF
expect <<EOF expect <<EOF
dummy:2: regexp ends with backslash dummy:2: regexp ends with backslash
EOF EOF
#------------------------------------------------------------------------------
tst "substitutions: escape space in regexp (match)" -q '"x=a c"' <<EOF
!-s
y=a
x=a\ c { y=b }
EOF
expect <<EOF
y=b
EOF
#------------------------------------------------------------------------------
tst "substitutions: escape space in regexp (no match)" -q '"x=a b"' <<EOF
!-s
y=a
x=a\ c { y=b }
EOF
expect <<EOF
y=a
EOF
#------------------------------------------------------------------------------
tst "substitutions: escape \$ in value" -q <<EOF
!-s
x=y\\$
EOF
expect <<EOF
x=y\$
EOF
#------------------------------------------------------------------------------
tst "substitutions: escape x in value" -q <<EOF
!-s
x=y\x
EOF
expect <<EOF
x=yx
EOF
#------------------------------------------------------------------------------
tst "substitutions: escape space in value" -q <<EOF
!-s
x=x\ y
EOF
expect <<EOF
x=x y
EOF
#------------------------------------------------------------------------------
tst "substitutions: escape \\ in value" -q <<EOF
!-s
x=a\\\\b
EOF
expect <<EOF
x=a\\b
EOF
#------------------------------------------------------------------------------
tst_fail "substitutions: try to escape EOL in value" -q <<EOF
!-s
x=y\\
EOF
expect <<EOF
s:1: syntax error
EOF
############################################################################### ###############################################################################