From a63e1809afd9a837821d6e8376cb14a36e7fc26e Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 4 Jan 2017 17:44:39 +0200 Subject: Treat any testscript line that starts with dot as directive Even though we currently only recognize the include directive, we reserve any line that begins with a dot for future. --- unit-tests/test/script/lexer/first-token.test | 5 ++ unit-tests/test/script/parser/buildfile | 6 +-- unit-tests/test/script/parser/directive.test | 70 +++++++++++++++++++++++++++ unit-tests/test/script/parser/include.test | 50 +------------------ 4 files changed, 79 insertions(+), 52 deletions(-) create mode 100644 unit-tests/test/script/parser/directive.test (limited to 'unit-tests') diff --git a/unit-tests/test/script/lexer/first-token.test b/unit-tests/test/script/lexer/first-token.test index d42e0b2..8a6d39b 100644 --- a/unit-tests/test/script/lexer/first-token.test +++ b/unit-tests/test/script/lexer/first-token.test @@ -2,6 +2,11 @@ # test.arguments = first-token +$* <"." >>EOO # dot +. + +EOO + $* <";" >>EOO # semi ; diff --git a/unit-tests/test/script/parser/buildfile b/unit-tests/test/script/parser/buildfile index db75a4f..41fe34d 100644 --- a/unit-tests/test/script/parser/buildfile +++ b/unit-tests/test/script/parser/buildfile @@ -15,8 +15,8 @@ test/{target script/{token lexer parser regex script}} \ scheduler exe{driver}: cxx{driver} ../../../../build2/cxx{$src} $libs \ -test{cleanup command-if command-re-parse description exit expansion \ - here-document here-string include pipe-expr pre-parse redirect \ - scope scope-if setup-teardown} +test{cleanup command-if command-re-parse description directive exit \ + expansion here-document here-string include pipe-expr pre-parse \ + redirect scope scope-if setup-teardown} include ../../../../build2/ diff --git a/unit-tests/test/script/parser/directive.test b/unit-tests/test/script/parser/directive.test new file mode 100644 index 0000000..07cb65c --- /dev/null +++ b/unit-tests/test/script/parser/directive.test @@ -0,0 +1,70 @@ +: not-directive +: +$* <>EOO +x = x +".include" foo.test +\.include foo.test +EOI +.include foo.test +.include foo.test +EOO + +: expected-name +: +$* <>EOE != 0 +.$ +EOI +testscript:1:2: error: expected directive name instead of '$' +EOE + +: unknown-name +: +$* <>EOE != 0 +.bogus +EOI +testscript:1:2: error: unknown directive 'bogus' +EOE + +: separated +: +touch foo.test; +$* <>>"foo-$(build.version).test"; +cmd +EOI +$* <>EOO +.include "foo-$(build.version).test" +EOI +cmd +EOO + +: after-semi +: +$* <>EOE != 0 +cmd; +.include foo.test +EOI +testscript:2:1: error: directive after ';' +EOE + +: semi-after +: +$* <>EOE != 0 +.include foo.test; +cmd +EOI +testscript:1:18: error: ';' after directive +EOE diff --git a/unit-tests/test/script/parser/include.test b/unit-tests/test/script/parser/include.test index 1639d37..7910919 100644 --- a/unit-tests/test/script/parser/include.test +++ b/unit-tests/test/script/parser/include.test @@ -1,22 +1,3 @@ -: not-directive -: -$* <>EOO -x = x -".include" foo.test -.include'' foo.test -EOI -.include foo.test -.include foo.test -EOO - -: not-separated -: -touch foo.test; -$* <>>"foo-$(build.version).test"; -cmd -EOI -$* <>EOO -.include "foo-$(build.version).test" -EOI -cmd -EOO - -: after-semi -: -$* <>EOE != 0 -cmd; -.include foo.test -EOI -testscript:2:1: error: directive after ';' -EOE - -: semi-after -: -$* <>EOE != 0 -.include foo.test; -cmd -EOI -testscript:1:18: error: ';' after directive -EOE - : invalid-path : $* <>EOE != 0 .include "" EOI -testscript:1:1: error: invalid testscript include path '' +testscript:1:2: error: invalid testscript include path '' EOE : unable-open -- cgit v1.1