summary refs log tree commit diff
path: root/lib/tests/misc.nix
diff options
context:
space:
mode:
authorJoe Hermaszewski <git@monoid.al>2020-11-11 10:36:19 +0800
committerPeter Simons <simons@cryp.to>2020-11-13 21:37:57 +0100
commitc3b35f21f78a3d23aaf40b70fe8865598ddc6729 (patch)
treecb243bc900a386be28cb73dd437f8f7aaa44cc97 /lib/tests/misc.nix
parentbacdeffd804c1da6700d2ab424cf2b74ca7e5355 (diff)
downloadnixpkgs-c3b35f21f78a3d23aaf40b70fe8865598ddc6729.tar
nixpkgs-c3b35f21f78a3d23aaf40b70fe8865598ddc6729.tar.gz
nixpkgs-c3b35f21f78a3d23aaf40b70fe8865598ddc6729.tar.bz2
nixpkgs-c3b35f21f78a3d23aaf40b70fe8865598ddc6729.tar.lz
nixpkgs-c3b35f21f78a3d23aaf40b70fe8865598ddc6729.tar.xz
nixpkgs-c3b35f21f78a3d23aaf40b70fe8865598ddc6729.tar.zst
nixpkgs-c3b35f21f78a3d23aaf40b70fe8865598ddc6729.zip
lib: Add composeManyExtensions
Diffstat (limited to 'lib/tests/misc.nix')
-rw-r--r--lib/tests/misc.nix20
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix
index 6175f15819a..35a5801c724 100644
--- a/lib/tests/misc.nix
+++ b/lib/tests/misc.nix
@@ -87,6 +87,26 @@ runTests {
     expected = true;
   };
 
+  testComposeManyExtensions0 = {
+    expr = let obj = makeExtensible (self: { foo = true; });
+               emptyComposition = composeManyExtensions [];
+               composed = obj.extend emptyComposition;
+           in composed.foo;
+    expected = true;
+  };
+
+  testComposeManyExtensions =
+    let f = self: super: { bar = false; baz = true; };
+        g = self: super: { bar = super.baz or false; };
+        h = self: super: { qux = super.bar or false; };
+        obj = makeExtensible (self: { foo = self.qux; });
+    in {
+    expr = let composition = composeManyExtensions [f g h];
+               composed = obj.extend composition;
+           in composed.foo;
+    expected = (obj.extend (composeExtensions f (composeExtensions g h))).foo;
+  };
+
   testBitAnd = {
     expr = (bitAnd 3 10);
     expected = 2;