From a3dad2118fb3925ef4f9baa90cea0dfd44ca93c6 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 25 Nov 2016 11:19:40 +0200 Subject: Allow here-document end marker to be wholly quoted --- unit-tests/test/script/lexer/buildfile | 2 +- .../test/script/parser/command-re-parse.test | 2 +- unit-tests/test/script/parser/here-document.test | 87 ++++++++++++++++++++-- unit-tests/test/script/parser/here-string.test | 4 +- unit-tests/test/script/parser/redirect.test | 2 +- 5 files changed, 87 insertions(+), 10 deletions(-) (limited to 'unit-tests') diff --git a/unit-tests/test/script/lexer/buildfile b/unit-tests/test/script/lexer/buildfile index 16be005..ac833e4 100644 --- a/unit-tests/test/script/lexer/buildfile +++ b/unit-tests/test/script/lexer/buildfile @@ -10,6 +10,6 @@ test/script/{token lexer} exe{driver}: cxx{driver} ../../../../build2/cxx{$src} $libs \ test{script-line command-line first-token second-token variable-line \ - description-line variable comment} + description-line variable} include ../../../../build2/ diff --git a/unit-tests/test/script/parser/command-re-parse.test b/unit-tests/test/script/parser/command-re-parse.test index 3b9ae3e..aee4f78 100644 --- a/unit-tests/test/script/parser/command-re-parse.test +++ b/unit-tests/test/script/parser/command-re-parse.test @@ -5,5 +5,5 @@ $* <>EOO x = cmd \\">-\\" "'<-'" \$x EOI -cmd ">-" "<-" +cmd '>-' '<-' EOO diff --git a/unit-tests/test/script/parser/here-document.test b/unit-tests/test/script/parser/here-document.test index 4fa62d2..6f26166 100644 --- a/unit-tests/test/script/parser/here-document.test +++ b/unit-tests/test/script/parser/here-document.test @@ -1,3 +1,78 @@ +: end-marker +: +{ + : missing-newline + : + $* <'cmd <<' 2>>EOE != 0 + testscript:1:7: error: expected here-document end marker + EOE + + : missing-exit + : + $* <'cmd << != 0' 2>>EOE != 0 + testscript:1:8: error: expected here-document end marker + EOE + + : unseparated-expansion + : + $* <'cmd <>EOE != 0 + testscript:1:10: error: here-document end marker must be literal + EOE + + : quoted-single-partial + : + $* <"cmd <>EOE != 0 + testscript:1:7: error: partially-quoted here-document end marker + EOE + + : quoted-double-partial + : + $* <'cmd <<"FO"O' 2>>EOE != 0 + testscript:1:7: error: partially-quoted here-document end marker + EOE + + : quoted-mixed + : + $* <"cmd <<\"FO\"'O'" 2>>EOE != 0 + testscript:1:7: error: partially-quoted here-document end marker + EOE + + : unseparated + : + $* <>EOO + cmd <>EOO + cmd <<'EOF' + foo + EOF + EOI + cmd <>EOO + cmd <<"EOF" + foo + EOF + EOI + cmd <>EOO # blank-lines +: blank +: +$* <>EOO cmd <>EOO cmd <>EOO # empty cmd <"" EOI -cmd <"" +cmd <'' EOO $* <>EOO # empty-nn cmd <:"" EOI -cmd <:"" +cmd <:'' EOO diff --git a/unit-tests/test/script/parser/redirect.test b/unit-tests/test/script/parser/redirect.test index af4295a..2642834 100644 --- a/unit-tests/test/script/parser/redirect.test +++ b/unit-tests/test/script/parser/redirect.test @@ -11,7 +11,7 @@ EOO $* <>EOO # quote-file cmd 0<<<"a f" 1>>>"b f" 2>>>&"c f" EOI -cmd <<<"a f" >>>"b f" 2>>>&"c f" +cmd <<<'a f' >>>'b f' 2>>>&'c f' EOO $* <>EOE !=0 # in-file-fail1 -- cgit v1.1