summary refs log tree commit diff
path: root/pkgs/test
diff options
context:
space:
mode:
authorArtturi <Artturin@artturin.com>2023-02-03 12:49:08 +0200
committerGitHub <noreply@github.com>2023-02-03 12:49:08 +0200
commitdcc7df7fe6e74ac3b2895a1f2c6873b00278c83a (patch)
treee102e2eb4f76c7c884cb05763f425584e5f8a7f4 /pkgs/test
parent931f54ceff33e3dce7edd0b853e36e7444294419 (diff)
parenta0f4e8746d15683d75e590b08334df7faf4c7621 (diff)
downloadnixpkgs-dcc7df7fe6e74ac3b2895a1f2c6873b00278c83a.tar
nixpkgs-dcc7df7fe6e74ac3b2895a1f2c6873b00278c83a.tar.gz
nixpkgs-dcc7df7fe6e74ac3b2895a1f2c6873b00278c83a.tar.bz2
nixpkgs-dcc7df7fe6e74ac3b2895a1f2c6873b00278c83a.tar.lz
nixpkgs-dcc7df7fe6e74ac3b2895a1f2c6873b00278c83a.tar.xz
nixpkgs-dcc7df7fe6e74ac3b2895a1f2c6873b00278c83a.tar.zst
nixpkgs-dcc7df7fe6e74ac3b2895a1f2c6873b00278c83a.zip
Merge pull request #211685 from Artturin/splicingstuff1-split
Diffstat (limited to 'pkgs/test')
-rw-r--r--pkgs/test/default.nix2
-rw-r--r--pkgs/test/overriding.nix56
2 files changed, 58 insertions, 0 deletions
diff --git a/pkgs/test/default.nix b/pkgs/test/default.nix
index 39039c5950e..71d065179d1 100644
--- a/pkgs/test/default.nix
+++ b/pkgs/test/default.nix
@@ -61,6 +61,8 @@ with pkgs;
 
   nixos-functions = callPackage ./nixos-functions {};
 
+  overriding = callPackage ./overriding.nix { };
+
   patch-shebangs = callPackage ./patch-shebangs {};
 
   texlive = callPackage ./texlive {};
diff --git a/pkgs/test/overriding.nix b/pkgs/test/overriding.nix
new file mode 100644
index 00000000000..edc1b27cf4f
--- /dev/null
+++ b/pkgs/test/overriding.nix
@@ -0,0 +1,56 @@
+{ lib, pkgs, stdenvNoCC }:
+
+let
+  tests =
+    let
+      p = pkgs.python3Packages.xpybutil.overridePythonAttrs (_: { dontWrapPythonPrograms = true; });
+    in
+    [
+      ({
+        name = "overridePythonAttrs";
+        expr = !lib.hasInfix "wrapPythonPrograms" p.postFixup;
+        expected = true;
+      })
+      ({
+        name = "repeatedOverrides-pname";
+        expr = repeatedOverrides.pname == "a-better-hello-with-blackjack";
+        expected = true;
+      })
+      ({
+        name = "repeatedOverrides-entangled-pname";
+        expr = repeatedOverrides.entangled.pname == "a-better-figlet-with-blackjack";
+        expected = true;
+      })
+    ];
+
+  addEntangled = origOverrideAttrs: f:
+    origOverrideAttrs (
+      lib.composeExtensions f (self: super: {
+        passthru = super.passthru // {
+          entangled = super.passthru.entangled.overrideAttrs f;
+          overrideAttrs = addEntangled self.overrideAttrs;
+        };
+      })
+    );
+
+  entangle = pkg1: pkg2: pkg1.overrideAttrs (self: super: {
+    passthru = super.passthru // {
+      entangled = pkg2;
+      overrideAttrs = addEntangled self.overrideAttrs;
+    };
+  });
+
+  example = entangle pkgs.hello pkgs.figlet;
+
+  overrides1 = example.overrideAttrs (_: super: { pname = "a-better-${super.pname}"; });
+
+  repeatedOverrides = overrides1.overrideAttrs (_: super: { pname = "${super.pname}-with-blackjack"; });
+in
+
+stdenvNoCC.mkDerivation {
+  name = "test-overriding";
+  passthru = { inherit tests; };
+  buildCommand = ''
+    touch $out
+  '' + lib.concatMapStringsSep "\n" (t: "([[ ${lib.boolToString t.expr} == ${lib.boolToString t.expected} ]] && echo '${t.name} success') || (echo '${t.name} fail' && exit 1)") tests;
+}