From a7efabf301f23364ac2335c80c5e1e712bc43204 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Thu, 10 Nov 2016 00:26:54 +0300 Subject: Add cat, false and true builtins --- tests/test/script/buildfile | 2 +- tests/test/script/builtin/buildfile | 5 +++ tests/test/script/builtin/cat.test | 57 ++++++++++++++++++++++++++++++++++ tests/test/script/builtin/echo.test | 11 +++++++ tests/test/script/builtin/mkdir.test | 50 +++++++++++++++++++++++++++++ tests/test/script/builtin/touch.test | 45 +++++++++++++++++++++++++++ tests/test/script/runner/buildfile | 5 +-- tests/test/script/runner/mkdir.test | 50 ----------------------------- tests/test/script/runner/redirect.test | 2 +- tests/test/script/runner/status.test | 4 +++ tests/test/script/runner/touch.test | 44 -------------------------- 11 files changed, 175 insertions(+), 100 deletions(-) create mode 100644 tests/test/script/builtin/buildfile create mode 100644 tests/test/script/builtin/cat.test create mode 100644 tests/test/script/builtin/echo.test create mode 100644 tests/test/script/builtin/mkdir.test create mode 100644 tests/test/script/builtin/touch.test delete mode 100644 tests/test/script/runner/mkdir.test delete mode 100644 tests/test/script/runner/touch.test (limited to 'tests') diff --git a/tests/test/script/buildfile b/tests/test/script/buildfile index e613013..82af4dd 100644 --- a/tests/test/script/buildfile +++ b/tests/test/script/buildfile @@ -2,6 +2,6 @@ # copyright : Copyright (c) 2014-2016 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file -d = runner/ integration/ +d = builtin/ runner/ integration/ ./: $d include $d diff --git a/tests/test/script/builtin/buildfile b/tests/test/script/builtin/buildfile new file mode 100644 index 0000000..baa4996 --- /dev/null +++ b/tests/test/script/builtin/buildfile @@ -0,0 +1,5 @@ +# file : tests/test/script/builtin/buildfile +# copyright : Copyright (c) 2014-2016 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +./: test{cat echo mkdir touch} diff --git a/tests/test/script/builtin/cat.test b/tests/test/script/builtin/cat.test new file mode 100644 index 0000000..7797906 --- /dev/null +++ b/tests/test/script/builtin/cat.test @@ -0,0 +1,57 @@ +# file : tests/test/script/runner/cat.test +# copyright : Copyright (c) 2014-2016 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +: in +: +cat <>EOO +foo +bar +EOI +foo +bar +EOO + +: dash +: +cat - <>EOO +foo +bar +EOI +foo +bar +EOO + +: file +: +cat <>>out; +foo +bar +EOI +cat out >>EOO +foo +bar +EOO + +: in-repeat +: +cat - <>EOO +foo +bar +EOI +foo +bar +EOO + +: non-existent +: +cat in 2>- != 0 # @@ REGEX + +: empty-path +: +: Cat an empty path. +: +cat '' 2>"cat: invalid path ''" == 1 + +# @@ When piping is ready test cat on a big file to test it is asynchronous. +# diff --git a/tests/test/script/builtin/echo.test b/tests/test/script/builtin/echo.test new file mode 100644 index 0000000..7f43aac --- /dev/null +++ b/tests/test/script/builtin/echo.test @@ -0,0 +1,11 @@ +# file : tests/test/script/runner/echo.test +# copyright : Copyright (c) 2014-2016 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +: string +: +echo foo >foo + +: strings +: +echo foo bar >"foo bar" diff --git a/tests/test/script/builtin/mkdir.test b/tests/test/script/builtin/mkdir.test new file mode 100644 index 0000000..6b7b5c9 --- /dev/null +++ b/tests/test/script/builtin/mkdir.test @@ -0,0 +1,50 @@ +# file : tests/test/script/runner/mkdir.test +# copyright : Copyright (c) 2014-2016 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +: dirs +: +mkdir a b; +touch a/a b/b + +: parent +: +mkdir -p a/b; +touch a/a a/b/b + +: exists +: +mkdir -p a a a/b a/b + +: double-dash +: +: Make sure '-p' directory is created. +: +mkdir -p -- -p; +touch -p/a + +: no-args +: +: Test passing no arguments. +: +mkdir 2>"mkdir: missing directory" == 1 + +: empty-path +: +: Test creation of empty directory path. +: +mkdir '' 2>"mkdir: invalid path ''" == 1 + +: already-exists +: +: Test creation of an existing directory. Note that error message is +: platform-dependent so is not checked. +: +mkdir a 2>- a == 1 # @@ REGEX + +: not-exists +: +: Test creation of a directory with non-existent parent. Note that error +: message is platform-dependent so is not checked. +: +mkdir a/b 2>- == 1 # @@ REGEX diff --git a/tests/test/script/builtin/touch.test b/tests/test/script/builtin/touch.test new file mode 100644 index 0000000..4d2ff57 --- /dev/null +++ b/tests/test/script/builtin/touch.test @@ -0,0 +1,45 @@ +# file : tests/test/script/runner/touch.test +# copyright : Copyright (c) 2014-2016 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +: file +: +touch a + +: file-create +: +: Test that file is created. If it didn't then 'rm' would fail. +: +touch a &!a; +rm a + +: file-update +: +: Test that existing file touch doesn't fail. +: +cat <"" >>>a; +touch a + +# @@ How we can test that touch of an existing file doesn't register a cleanup? +# + +: no-args +: +: Test passing no arguments. +: +touch 2>"touch: missing file" == 1 + +: empty-path +: +: Test touching an empty path. +: +touch '' 2>"touch: invalid path ''" == 1 + +: dir-update +: +: Test touching an existing directory. +: +a = [path] $~; +a += "a"; +mkdir a; +touch 2>"touch: '$a' exists and is not a file" a == 1 diff --git a/tests/test/script/runner/buildfile b/tests/test/script/runner/buildfile index b9c0e69..e5f2761 100644 --- a/tests/test/script/runner/buildfile +++ b/tests/test/script/runner/buildfile @@ -4,9 +4,6 @@ import libs = libbutl%lib{butl} -exe{driver}: cxx{driver} $libs test{cleanup mkdir redirect status touch} - -if ($cxx.target.class == "windows") # @@ TMP - test{*}: ext = ".exe" +exe{driver}: cxx{driver} $libs test{cleanup redirect status} include ../../../../../build2/ diff --git a/tests/test/script/runner/mkdir.test b/tests/test/script/runner/mkdir.test deleted file mode 100644 index 6b7b5c9..0000000 --- a/tests/test/script/runner/mkdir.test +++ /dev/null @@ -1,50 +0,0 @@ -# file : tests/test/script/runner/mkdir.test -# copyright : Copyright (c) 2014-2016 Code Synthesis Ltd -# license : MIT; see accompanying LICENSE file - -: dirs -: -mkdir a b; -touch a/a b/b - -: parent -: -mkdir -p a/b; -touch a/a a/b/b - -: exists -: -mkdir -p a a a/b a/b - -: double-dash -: -: Make sure '-p' directory is created. -: -mkdir -p -- -p; -touch -p/a - -: no-args -: -: Test passing no arguments. -: -mkdir 2>"mkdir: missing directory" == 1 - -: empty-path -: -: Test creation of empty directory path. -: -mkdir '' 2>"mkdir: invalid path ''" == 1 - -: already-exists -: -: Test creation of an existing directory. Note that error message is -: platform-dependent so is not checked. -: -mkdir a 2>- a == 1 # @@ REGEX - -: not-exists -: -: Test creation of a directory with non-existent parent. Note that error -: message is platform-dependent so is not checked. -: -mkdir a/b 2>- == 1 # @@ REGEX diff --git a/tests/test/script/runner/redirect.test b/tests/test/script/runner/redirect.test index 68cc9aa..16c17d8 100644 --- a/tests/test/script/runner/redirect.test +++ b/tests/test/script/runner/redirect.test @@ -166,6 +166,6 @@ EOO echo - : in-str echo "foo" >foo : out-str echo "foo" 2>foo 1>&2 : err-str - cat foo : inout-str # @@ cat is not a builtin yet. + cat foo : inout-str cat foo 1>&2 : inerr-str } diff --git a/tests/test/script/runner/status.test b/tests/test/script/runner/status.test index f1ad5bf..00d7257 100644 --- a/tests/test/script/runner/status.test +++ b/tests/test/script/runner/status.test @@ -15,6 +15,10 @@ b = $build.driver -q --no-column --buildfile - <"./: test{testscript}" \ c = cat >>>testscript test = \'$test\' ++if ($cxx.target.class == "windows") + ext = ".exe" +end + # Successfull tests. # : eq-true diff --git a/tests/test/script/runner/touch.test b/tests/test/script/runner/touch.test deleted file mode 100644 index e9d9f68..0000000 --- a/tests/test/script/runner/touch.test +++ /dev/null @@ -1,44 +0,0 @@ -# file : tests/test/script/runner/touch.test -# copyright : Copyright (c) 2014-2016 Code Synthesis Ltd -# license : MIT; see accompanying LICENSE file - -: file -: -touch a - -: file-create -: -: Test that file is created. If it didn't then 'rm' would fail. -: -touch a &!a; -rm a - -: file-update -: -: Test that existing file touch doesn't register cleanup. If it did then it -: would be left dangling after 'rm' call and so test would fail. -: -$* -f a; -touch a; -rm a - -: no-args -: -: Test passing no arguments. -: -touch 2>"touch: missing file" == 1 - -: empty-path -: -: Test touching an empty path. -: -touch '' 2>"touch: invalid path ''" == 1 - -: dir-update -: -: Test touching an existing directory. -: -a = [path] $~; -a += "a"; -mkdir a; -touch 2>"touch: '$a' exists and is not a file" a == 1 -- cgit v1.1