diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2017-10-25T11·01+0200 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2017-10-25T11·01+0200 |
commit | 2d5b1b24bf70a498e4c0b378704cfdb6471cc699 (patch) | |
tree | 80e7c28cb3431ed6a3fbb080f769f9016ea564c5 /tests | |
parent | ac12517f3e969db9fb4834fdfd2da63101ffd3de (diff) |
Pass lists/attrsets to bash as (associative) arrays
Diffstat (limited to 'tests')
-rw-r--r-- | tests/config.nix | 2 | ||||
-rw-r--r-- | tests/local.mk | 3 | ||||
-rw-r--r-- | tests/structured-attrs.nix | 47 | ||||
-rw-r--r-- | tests/structured-attrs.sh | 7 |
4 files changed, 57 insertions, 2 deletions
diff --git a/tests/config.nix b/tests/config.nix index 76388fdd5b95..6ba91065b83d 100644 --- a/tests/config.nix +++ b/tests/config.nix @@ -13,7 +13,7 @@ rec { derivation ({ inherit system; builder = shell; - args = ["-e" args.builder or (builtins.toFile "builder.sh" "eval \"$buildCommand\"")]; + args = ["-e" args.builder or (builtins.toFile "builder.sh" "if [ -e .attrs.sh ]; then source .attrs.sh; fi; eval \"$buildCommand\"")]; PATH = path; } // removeAttrs args ["builder" "meta"]) // { meta = args.meta or {}; }; diff --git a/tests/local.mk b/tests/local.mk index 19d6f1893d29..6160b04c2598 100644 --- a/tests/local.mk +++ b/tests/local.mk @@ -14,7 +14,8 @@ nix_tests = \ placeholders.sh nix-shell.sh \ linux-sandbox.sh \ build-remote.sh \ - nar-index.sh + nar-index.sh \ + structured-attrs.sh # parallel.sh install-tests += $(foreach x, $(nix_tests), tests/$(x)) diff --git a/tests/structured-attrs.nix b/tests/structured-attrs.nix new file mode 100644 index 000000000000..2adc6b6c34f3 --- /dev/null +++ b/tests/structured-attrs.nix @@ -0,0 +1,47 @@ +with import ./config.nix; + +mkDerivation { + name = "structured"; + + __structuredAttrs = true; + + buildCommand = '' + set -x + + [[ $int = 123456789 ]] + [[ -z $float ]] + [[ -n $boolTrue ]] + [[ -z $boolFalse ]] + [[ -n ''${hardening[format]} ]] + [[ -z ''${hardening[fortify]} ]] + [[ ''${#buildInputs[@]} = 7 ]] + [[ ''${buildInputs[2]} = c ]] + [[ -v nothing ]] + [[ -z $nothing ]] + + mkdir ''${outputs[out]} + echo bar > $dest + ''; + + buildInputs = [ "a" "b" "c" 123 "'" "\"" null ]; + + hardening.format = true; + hardening.fortify = false; + + outer.inner = [ 1 2 3 ]; + + int = 123456789; + + float = 123.456; + + boolTrue = true; + boolFalse = false; + + nothing = null; + + dest = "${placeholder "out"}/foo"; + + "foo bar" = "BAD"; + "1foobar" = "BAD"; + "foo$" = "BAD"; +} diff --git a/tests/structured-attrs.sh b/tests/structured-attrs.sh new file mode 100644 index 000000000000..9ba2672b6833 --- /dev/null +++ b/tests/structured-attrs.sh @@ -0,0 +1,7 @@ +source common.sh + +clearStore + +outPath=$(nix-build structured-attrs.nix --no-out-link) + +[[ $(cat $outPath/foo) = bar ]] |