diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2016-11-18 17:28:46 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2016-11-18 17:30:47 +0200 |
commit | 6b7075adc71104c5f6ad652b99fb753565eb67d8 (patch) | |
tree | 1f4d91b7cd9ee7cca793f0ecc504ccc4d8dde0d2 /tests/function | |
parent | dd008d6e48b0bb66e1b9fdc489d9d1d9b4cb8d25 (diff) |
Add function machinery, implement path.normalize()
Note that multi-argument functions are not yet "callable" since there is
no support for value packs.
Diffstat (limited to 'tests/function')
-rw-r--r-- | tests/function/buildfile | 7 | ||||
-rw-r--r-- | tests/function/call/buildfile | 17 | ||||
-rw-r--r-- | tests/function/call/test.out | 9 | ||||
-rwxr-xr-x | tests/function/call/test.sh | 3 | ||||
-rw-r--r-- | tests/function/path/buildfile | 7 | ||||
-rw-r--r-- | tests/function/path/testscript | 39 |
6 files changed, 53 insertions, 29 deletions
diff --git a/tests/function/buildfile b/tests/function/buildfile new file mode 100644 index 0000000..52288ca --- /dev/null +++ b/tests/function/buildfile @@ -0,0 +1,7 @@ +# file : tests/function/buildfile +# copyright : Copyright (c) 2014-2016 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +d = path/ +./: $d +include $d diff --git a/tests/function/call/buildfile b/tests/function/call/buildfile deleted file mode 100644 index 136f652..0000000 --- a/tests/function/call/buildfile +++ /dev/null @@ -1,17 +0,0 @@ -$identity() -$identity (a) -$identity (a b c) -$identity(sub/dir{x y z}) - -print a$identity (b)c - -# Verify we can inhibit function call with quoting. -# -foo = FOO -bar = BAR - -print $foo"($bar)" -print "$foo"($bar) -print "$foo""($bar)" - -./: diff --git a/tests/function/call/test.out b/tests/function/call/test.out deleted file mode 100644 index 88a852b..0000000 --- a/tests/function/call/test.out +++ /dev/null @@ -1,9 +0,0 @@ -identity() -identity(a) -identity(a b c) -identity(sub/dir{x} sub/dir{y} sub/dir{z}) -identity(b) -ac -FOOBAR -FOOBAR -FOOBAR diff --git a/tests/function/call/test.sh b/tests/function/call/test.sh deleted file mode 100755 index c745b76..0000000 --- a/tests/function/call/test.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -b -q | diff --strip-trailing-cr -u test.out - diff --git a/tests/function/path/buildfile b/tests/function/path/buildfile new file mode 100644 index 0000000..db40358 --- /dev/null +++ b/tests/function/path/buildfile @@ -0,0 +1,7 @@ +# file : tests/function/path/buildfile +# copyright : Copyright (c) 2014-2016 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +./: test{testscript} + +test{*}: test = $build.driver diff --git a/tests/function/path/testscript b/tests/function/path/testscript new file mode 100644 index 0000000..5656446 --- /dev/null +++ b/tests/function/path/testscript @@ -0,0 +1,39 @@ +# file : tests/function/path/testscript +# copyright : Copyright (c) 2014-2016 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + ++mkdir build ++cat <<EOI >>>build/boostrap.build +project = test +amalgamation = +EOI + +test.options += -q --buildfile - noop + ++if ($cxx.target.class != windows) # @@ TMP ternarry + s = '/' +else + s = '\' +end + +: normalize +: +{ + $* <'print $normalize([path] a/../b/)' >"b" : path + $* <'print $normalize([paths] a/../b/ a/../c)' >"b c" : paths + $* <'print $normalize([dir_path] a/../b)' >"b$s" : dir-path + $* <'print $normalize([dir_paths] a/../b a/../c/)' >"b$s c$s" : dir-paths + $* <'print $path.normalize(a/../b)' >"b" : untyped + $* <'print $path.normalize(a/../b/ a/../b)' >"b$s b" : mixed +} + +: invalid-path +: +if ($cxx.target.class != windows) # @@ TMP ternarry + p = /../foo +else + p = c:/../foo +end; +$* <"\$path.normalize\($p)" 2>>EOE != 0 +error: invalid path: '$p' +EOE |