From 6b7075adc71104c5f6ad652b99fb753565eb67d8 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 18 Nov 2016 17:28:46 +0200 Subject: Add function machinery, implement path.normalize() Note that multi-argument functions are not yet "callable" since there is no support for value packs. --- tests/function/buildfile | 7 +++++++ tests/function/call/buildfile | 17 ----------------- tests/function/call/test.out | 9 --------- tests/function/call/test.sh | 3 --- tests/function/path/buildfile | 7 +++++++ tests/function/path/testscript | 39 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 53 insertions(+), 29 deletions(-) create mode 100644 tests/function/buildfile delete mode 100644 tests/function/call/buildfile delete mode 100644 tests/function/call/test.out delete mode 100755 tests/function/call/test.sh create mode 100644 tests/function/path/buildfile create mode 100644 tests/function/path/testscript (limited to 'tests/function') 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 <>>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 -- cgit v1.1