diff options
Diffstat (limited to 'unit-tests/test/script/parser/scope.test')
-rw-r--r-- | unit-tests/test/script/parser/scope.test | 410 |
1 files changed, 234 insertions, 176 deletions
diff --git a/unit-tests/test/script/parser/scope.test b/unit-tests/test/script/parser/scope.test index 7d78aca..144dc54 100644 --- a/unit-tests/test/script/parser/scope.test +++ b/unit-tests/test/script/parser/scope.test @@ -1,5 +1,9 @@ -$* testscript <'cmd $@' >"cmd 1" # id-testscript -$* foo.test <'cmd $@' >"cmd foo/1" # id +# file : unit-tests/test/script/parser/scope.test +# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +$* testscript <'cmd $@' >"cmd 1" : id-testscript +$* foo.test <'cmd $@' >"cmd foo/1" : id : wd-testscript : @@ -9,214 +13,268 @@ $* testscript <'cmd "$~"' >~"%cmd '?.+[/\\\\]test-driver[/\\\\]1'?%" : $* foo.test <'cmd "$~"' >~"%cmd '?.+[/\\\\]test-driver[/\\\\]foo[/\\\\]1'?%" -$* -s <<EOI # group-empty -{ -} -EOI - -$* -s <<EOI # group-empty-empty +: group +: { - { - } -} -EOI + : empty + : + $* -s <<EOI + { + } + EOI -$* -s <<EOI >>EOO # group -{ - cmd1 - cmd2 -} -EOI -{ + : empty-empty + : + $* -s <<EOI { { - cmd1 - } - { - cmd2 } } -} -EOO - -# Test scope. -# + EOI -$* -s -i <<EOI >>EOO # test-scope -{ - cmd -} -EOI -{ - { # 1 - cmd - } -} -EOO - -$* -s -i <<EOI >>EOO # test-scope-nested -{ + : non-empty + : + $* -s <<EOI >>EOO { - cmd + cmd1 + cmd2 } -} -EOI -{ - { # 1 - cmd + EOI + { + { + { + cmd1 + } + { + cmd2 + } + } } + EOO } -EOO -$* -s -i <<EOI >>EOO # test-scope-var -{ - x = abc - cmd $x -} -EOI +: test +: { - { # 1 - cmd abc - } -} -EOO + : explicit + : + { + : one-level + : + $* -s -i <<EOI >>EOO + { + cmd + } + EOI + { + { # 1 + cmd + } + } + EOO -$* -s -i <<EOI >>EOO # test-scope-setup -{ - x = abc - +setup - cmd $x -} -EOI -{ - { # 1 - setup - { # 1/4 - cmd abc + : nested + : + $* -s -i <<EOI >>EOO + { + { + cmd + } } + EOI + { + { # 1 + cmd + } + } + EOO + + : var + : + $* -s -i <<EOI >>EOO + { + x = abc + cmd $x + } + EOI + { + { # 1 + cmd abc + } + } + EOO + + : setup + : + $* -s -i <<EOI >>EOO + { + x = abc + +setup + cmd $x + } + EOI + { + { # 1 + setup + { # 1/4 + cmd abc + } + } + } + EOO } -} -EOO + : implicit + { + : one-cmd + : + $* -s <<EOI >>EOO + cmd1 + EOI + { + { + cmd1 + } + } + EOO -# -# -$* <:"{x" 2>>EOE != 0 # expected-newline-lcbrace -testscript:1:2: error: expected newline after '{' -EOE + : two-cmd + : + $* -s <<EOI >>EOO + cmd1; + cmd2 + EOI + { + { + cmd1 + cmd2 + } + } + EOO -$* <"{" 2>>EOE != 0 # expected-rcbrace -testscript:2:1: error: expected '}' at the end of the scope -EOE + : three-cmd + : + $* -s <<EOI >>EOO + cmd1; + cmd2; + cmd3 + EOI + { + { + cmd1 + cmd2 + cmd3 + } + } + EOO -$* <<EOI 2>>EOE != 0 # expected-line-rcbrace -{ - cmd; -} -EOI -testscript:3:1: error: expected another line after ';' -EOE + : var + : + $* -s <<EOI >>EOO + cmd1; + x = abc; + cmd2 $x + EOI + { + { + cmd1 + cmd2 abc + } + } + EOO -$* <<:EOI 2>>EOE != 0 # expected-newline-rcbrace -{ -} -EOI -testscript:2:2: error: expected newline after '}' -EOE + : var-first + : + $* -s <<EOI >>EOO + x = abc; + cmd $x + EOI + { + { + cmd abc + } + } + EOO -$* -s <<EOI >>EOO # test-1 -cmd1 -EOI -{ - { - cmd1 - } -} -EOO + : var-setup-tdown + : + $* -s <<EOI >>EOO + x = abc + cmd $x + y = 123 + EOI + { + { + cmd abc + } + } + EOO -$* -s <<EOI >>EOO # test-2 -cmd1; -cmd2 -EOI -{ - { + : after-tdown + : + $* <<EOI 2>>EOE != 0 cmd1 + x = abc cmd2 + EOI + testscript:3:1: error: test after teardown + testscript:2:1: info: last teardown line appears here + EOE } } -EOO -$* -s <<EOI >>EOO # test-3 -cmd1; -cmd2; -cmd3 -EOI +: expected { - { - cmd1 - cmd2 - cmd3 - } -} -EOO + : newline-lcbrace + : + $* <:"{x" 2>>EOE != 0 + testscript:1:2: error: expected newline after '{' + EOE -$* -s <<EOI >>EOO # test-var -cmd1; -x = abc; -cmd2 $x -EOI -{ - { - cmd1 - cmd2 abc - } -} -EOO + : rcbrace + : + $* <"{" 2>>EOE != 0 + testscript:2:1: error: expected '}' at the end of the scope + EOE -$* -s <<EOI >>EOO # test-var-first -x = abc; -cmd $x -EOI -{ + : line-rcbrace + : + $* <<EOI 2>>EOE != 0 { - cmd abc + cmd; } -} -EOO + EOI + testscript:3:1: error: expected another line after ';' + EOE -$* -s <<EOI >>EOO # var-setup-tdown -x = abc -cmd $x -y = 123 -EOI -{ + : newline-rcbrace + : + $* <<:EOI 2>>EOE != 0 { - cmd abc } + EOI + testscript:2:2: error: expected newline after '}' + EOE + + : line-eof + : + $* <<EOI 2>>EOE != 0 + cmd; + EOI + testscript:2:1: error: expected another line after ';' + EOE + + : newline-cmd + : + $* <<:EOI 2>>EOE != 0 + cmd; + EOI + testscript:1:5: error: expected newline instead of <end of file> + EOE + + : newline-var + : + $* <:"x = abc;" 2>>EOE != 0 + testscript:1:9: error: expected newline instead of <end of file> + EOE } -EOO - -$* <<EOI 2>>EOE != 0 # test-after-tdown -cmd1 -x = abc -cmd2 -EOI -testscript:3:1: error: test after teardown - testscript:2:1: info: last teardown line appears here -EOE - -$* <<EOI 2>>EOE != 0 # expected-line-eof -cmd; -EOI -testscript:2:1: error: expected another line after ';' -EOE - -$* <<:EOI 2>>EOE != 0 # expected-newline-cmd -cmd; -EOI -testscript:1:5: error: expected newline instead of <end of file> -EOE - -$* <:"x = abc;" 2>>EOE != 0 # expected-newline-var -testscript:1:9: error: expected newline instead of <end of file> -EOE |