summary refs log tree commit diff
path: root/pkgs/test
diff options
context:
space:
mode:
authorTobias Bergkvist <tobias@bergkv.ist>2021-12-02 04:03:36 +0100
committerTobias Bergkvist <tobias@bergkv.ist>2021-12-02 04:03:36 +0100
commitd8375fbccb2d8f7b8279374fa84645494e1a0942 (patch)
treecdf3ba7fd886c8d5ce295db74daff1a4861e0425 /pkgs/test
parent64da82731d44371a88625af875848482b3b436bc (diff)
downloadnixpkgs-d8375fbccb2d8f7b8279374fa84645494e1a0942.tar
nixpkgs-d8375fbccb2d8f7b8279374fa84645494e1a0942.tar.gz
nixpkgs-d8375fbccb2d8f7b8279374fa84645494e1a0942.tar.bz2
nixpkgs-d8375fbccb2d8f7b8279374fa84645494e1a0942.tar.lz
nixpkgs-d8375fbccb2d8f7b8279374fa84645494e1a0942.tar.xz
nixpkgs-d8375fbccb2d8f7b8279374fa84645494e1a0942.tar.zst
nixpkgs-d8375fbccb2d8f7b8279374fa84645494e1a0942.zip
Add tests for `--inherit-argv0` and `--chdir DIR`
Diffstat (limited to 'pkgs/test')
-rw-r--r--pkgs/test/make-binary-wrapper/chdir.c14
-rw-r--r--pkgs/test/make-binary-wrapper/default.nix10
-rw-r--r--pkgs/test/make-binary-wrapper/inherit-argv0.c9
3 files changed, 29 insertions, 4 deletions
diff --git a/pkgs/test/make-binary-wrapper/chdir.c b/pkgs/test/make-binary-wrapper/chdir.c
new file mode 100644
index 00000000000..ff1f91a03ba
--- /dev/null
+++ b/pkgs/test/make-binary-wrapper/chdir.c
@@ -0,0 +1,14 @@
+// makeCWrapper /path/to/executable \
+    --chdir /usr/local/bin
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#define assert_success(e) do { if ((e) < 0) { perror(#e); abort(); } } while (0)
+
+int main(int argc, char **argv) {
+    assert_success(chdir("/usr/local/bin"));
+    argv[0] = "/path/to/executable";
+    return execv("/path/to/executable", argv);
+}
\ No newline at end of file
diff --git a/pkgs/test/make-binary-wrapper/default.nix b/pkgs/test/make-binary-wrapper/default.nix
index 1972b03da25..eddab15fd31 100644
--- a/pkgs/test/make-binary-wrapper/default.nix
+++ b/pkgs/test/make-binary-wrapper/default.nix
@@ -22,14 +22,16 @@ let
     };
   };
   tests = {
-    add-flags = makeGoldenTest { name = "add-flags"; filename = ./add-flags.c; };
-    argv0 = makeGoldenTest { name = "argv0"; filename = ./argv0.c; };
     basic = makeGoldenTest { name = "basic"; filename = ./basic.c; };
-    combination = makeGoldenTest { name = "combination"; filename = ./combination.c; };
+    argv0 = makeGoldenTest { name = "argv0"; filename = ./argv0.c; };
+    inherit_argv0 = makeGoldenTest { name = "inherit-argv0"; filename = ./inherit-argv0.c; };
     env = makeGoldenTest { name = "env"; filename = ./env.c; };
+    invalid_env = makeGoldenTest { name = "invalid-env"; filename = ./invalid-env.c; };
     prefix = makeGoldenTest { name = "prefix"; filename = ./prefix.c; };
     suffix = makeGoldenTest { name = "suffix"; filename = ./suffix.c; };
-    invalid-env = makeGoldenTest { name = "invalid-env"; filename = ./invalid-env.c; };
+    add_flags = makeGoldenTest { name = "add-flags"; filename = ./add-flags.c; };
+    chdir = makeGoldenTest { name = "chdir"; filename = ./chdir.c; };
+    combination = makeGoldenTest { name = "combination"; filename = ./combination.c; };
   };
 in runCommand "make-binary-wrapper-test" {
   passthru = tests;
diff --git a/pkgs/test/make-binary-wrapper/inherit-argv0.c b/pkgs/test/make-binary-wrapper/inherit-argv0.c
new file mode 100644
index 00000000000..71e12d9b024
--- /dev/null
+++ b/pkgs/test/make-binary-wrapper/inherit-argv0.c
@@ -0,0 +1,9 @@
+// makeCWrapper /path/to/executable \
+    --inherit-argv0
+
+#include <unistd.h>
+#include <stdlib.h>
+
+int main(int argc, char **argv) {
+    return execv("/path/to/executable", argv);
+}
\ No newline at end of file