diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2016-07-16 10:51:35 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2016-07-16 10:51:35 +0200 |
commit | b439803cc5e09188c7b523333f6b71de3ba57dbf (patch) | |
tree | 0ed119a6910c441124b8c053d0df48c8f1127fad /tests | |
parent | 5fac16471ba789965a72ffbbea406b75d8a680dc (diff) |
Add support for prepend/append in target type/pattern-specific vars
Semantically, these are similar to variable overrides and are essentially
treated as "templates" that are applied on lookup to the "stem" value that is
specific to the target type/name. For example:
x = [string] a
file{f*}: x =+ b
sub/:
{
file{*}: x += c
print $(file{foo}:x) # abc
print $(file{bar}:x) # ac
}
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/test.sh | 1 | ||||
-rw-r--r-- | tests/variable/type-pattern-append/buildfile | 59 | ||||
-rw-r--r-- | tests/variable/type-pattern-append/test.out | 7 | ||||
-rwxr-xr-x | tests/variable/type-pattern-append/test.sh | 3 |
4 files changed, 70 insertions, 0 deletions
diff --git a/tests/test.sh b/tests/test.sh index ce115d5..b26dd3b 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -28,3 +28,4 @@ test "variable/override" test "variable/prepend" test "variable/qualified" test "variable/type" +test "variable/type-pattern-append" diff --git a/tests/variable/type-pattern-append/buildfile b/tests/variable/type-pattern-append/buildfile new file mode 100644 index 0000000..a91b340 --- /dev/null +++ b/tests/variable/type-pattern-append/buildfile @@ -0,0 +1,59 @@ +# Typed append/prepend. +# +#dir{a*}: x += [bool] true +#dir{p*}: x =+ [bool] true + +[string] typed = [null] +dir{a*}: typed += abc # ok +dir{p*}: typed =+ abc # ok + +# Prepend/append before/after assignment. +# +[string] x1 = [null] +dir{*}: x1 += A +dir{*}: x1 = b +dir{*}: x1 += c +dir{*}: x1 =+ a +print $(dir{./}:x1) + +# Without stem, mixed prepend/append. +# +dir{*}: x2 += b +dir{*}: x2 += c +#dir{*}: x2 =+ a # error +print $(dir{./}:x2) + +dir{*}: x3 =+ b +dir{*}: x3 =+ a +#dir{*}: x3 += c # error +print $(dir{./}:x3) + +# With stem, typing. +# +x4 = a +dir{*}: x4 += b +dir{*}: x4 += c +print $(dir{./}:x4) + +[string] x5 = b +dir{*}: x5 =+ a +x = $(dir{./}:x5) +print $(dir{./}:x5) + +x6 = [string] a +sub/: +{ + dir{*}: x6 += b + dir{*}: x6 += [null] + print $(dir{./}:x6) +} + +x7 = [string] b +dir{*}: x7 =+ a +sub/: +{ + dir{*}: x7 += c + print $(dir{./}:x7) +} + +./: diff --git a/tests/variable/type-pattern-append/test.out b/tests/variable/type-pattern-append/test.out new file mode 100644 index 0000000..e8e2242 --- /dev/null +++ b/tests/variable/type-pattern-append/test.out @@ -0,0 +1,7 @@ +abc +b c +a b +a b c +ab +ab +abc diff --git a/tests/variable/type-pattern-append/test.sh b/tests/variable/type-pattern-append/test.sh new file mode 100755 index 0000000..c745b76 --- /dev/null +++ b/tests/variable/type-pattern-append/test.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +b -q | diff --strip-trailing-cr -u test.out - |