aboutsummaryrefslogtreecommitdiff
path: root/lib/tests/systems.nix
diff options
context:
space:
mode:
authorJohn Ericson <Ericson2314@Yahoo.com>2017-02-09 16:09:47 -0500
committerJohn Ericson <Ericson2314@Yahoo.com>2017-04-17 17:13:01 -0400
commit8c99aab3ea4a9ddbd3918282da7861e674b4e7c4 (patch)
tree5c8a663c775e02ad7c7c714d89095f3cd500e0a0 /lib/tests/systems.nix
parentfffcee35f9b2042d4edc5dccb3379972e03ffd84 (diff)
lib: Fix system parsing, and use for doubles lists
The old hard-coded lists are now used to test system parsing. In the process, make an `assertTrue` in release lib for eval tests; also use it in release-cross
Diffstat (limited to 'lib/tests/systems.nix')
-rw-r--r--lib/tests/systems.nix31
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/tests/systems.nix b/lib/tests/systems.nix
new file mode 100644
index 00000000000..02e316c19fe
--- /dev/null
+++ b/lib/tests/systems.nix
@@ -0,0 +1,31 @@
+# We assert that the new algorithmic way of generating these lists matches the
+# way they were hard-coded before.
+#
+# One might think "if we exhaustively test, what's the point of procedurally
+# calculating the lists anyway?". The answer is one can mindlessly update these
+# tests as new platforms become supported, and then just give the diff a quick
+# sanity check before committing :).
+{ lib, assertTrue }:
+
+with lib.systems.doubles;
+
+let mseteq = x: y: lib.sort lib.lessThan x == lib.sort lib.lessThan y; in
+
+{
+ all = assertTrue (mseteq all (linux ++ darwin ++ cygwin ++ freebsd ++ openbsd ++ netbsd ++ illumos));
+
+ arm = assertTrue (mseteq arm [ "armv5tel-linux" "armv6l-linux" "armv7l-linux" ]);
+ i686 = assertTrue (mseteq i686 [ "i686-linux" "i686-freebsd" "i686-netbsd" "i686-cygwin" ]);
+ mips = assertTrue (mseteq mips [ "mips64el-linux" ]);
+ x86_64 = assertTrue (mseteq x86_64 [ "x86_64-linux" "x86_64-darwin" "x86_64-freebsd" "x86_64-openbsd" "x86_64-netbsd" "x86_64-cygwin" ]);
+
+ cygwin = assertTrue (mseteq cygwin [ "i686-cygwin" "x86_64-cygwin" ]);
+ darwin = assertTrue (mseteq darwin [ "x86_64-darwin" ]);
+ freebsd = assertTrue (mseteq freebsd [ "i686-freebsd" "x86_64-freebsd" ]);
+ gnu = assertTrue (mseteq gnu (linux /* ++ hurd ++ kfreebsd ++ ... */));
+ illumos = assertTrue (mseteq illumos [ "x86_64-solaris" ]);
+ linux = assertTrue (mseteq linux [ "i686-linux" "x86_64-linux" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux" "mips64el-linux" ]);
+ netbsd = assertTrue (mseteq netbsd [ "i686-netbsd" "x86_64-netbsd" ]);
+ openbsd = assertTrue (mseteq openbsd [ "i686-openbsd" "x86_64-openbsd" ]);
+ unix = assertTrue (mseteq unix (linux ++ darwin ++ freebsd ++ openbsd ++ netbsd ++ illumos));
+}