aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2017-10-25 13:01:50 +0200
committerEelco Dolstra <edolstra@gmail.com>2017-10-25 13:01:50 +0200
commit2d5b1b24bf70a498e4c0b378704cfdb6471cc699 (patch)
tree80e7c28cb3431ed6a3fbb080f769f9016ea564c5 /tests
parentac12517f3e969db9fb4834fdfd2da63101ffd3de (diff)
Pass lists/attrsets to bash as (associative) arrays
Diffstat (limited to 'tests')
-rw-r--r--tests/config.nix2
-rw-r--r--tests/local.mk3
-rw-r--r--tests/structured-attrs.nix47
-rw-r--r--tests/structured-attrs.sh7
4 files changed, 57 insertions, 2 deletions
diff --git a/tests/config.nix b/tests/config.nix
index 76388fdd5..6ba91065b 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 19d6f1893..6160b04c2 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 000000000..2adc6b6c3
--- /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 000000000..9ba2672b6
--- /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 ]]