about summary refs log tree commit diff
path: root/tests/sandbox.nix
diff options
context:
space:
mode:
authoraszlig <aszlig@nix.build>2017-11-21 07:51:25 +0100
committeraszlig <aszlig@nix.build>2017-11-21 07:51:25 +0100
commit6201f67e9ec30ec7d39270c0da27cd282a5e8cb4 (patch)
tree5b6d0a77301ee2bf21ea9982aa23a3ba8c2bc53b /tests/sandbox.nix
parentda3aa9a273544efc8d13864439cf73c35d30855c (diff)
tests/games/sandbox: Rename to tests/sandbox
We have excluded all tests within the games directory from being built
by Hydra, rightfully so because they're proprietary. However our sandbox
is *not* proprietary so we want to have it tested.

Besides, we might want to use that sandbox for other things rather than
just games in the future, which saves us that rename later ;-)

Signed-off-by: aszlig <aszlig@nix.build>
Diffstat (limited to 'tests/sandbox.nix')
-rw-r--r--tests/sandbox.nix42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/sandbox.nix b/tests/sandbox.nix
new file mode 100644
index 00000000..98d29870
--- /dev/null
+++ b/tests/sandbox.nix
@@ -0,0 +1,42 @@
+{
+  name = "sandbox";
+
+  machine = { pkgs, lib, ... }: {
+    nixpkgs.config.vuizvui.games = {};
+    system.activationScripts.inject-link = ''
+      ln -svf ${pkgs.hello} /run/foo-test-sandbox
+      ln -svf ${pkgs.gnused} /run/bar-test-sandbox
+      ln -svf ${pkgs.gnugrep} /run/baz-test-sandbox
+    '';
+    environment.sessionVariables.COLLECT_ME = [
+      "/run/foo-test-sandbox"
+      "/run/bar-test-sandbox"
+      "/run/baz-test-sandbox"
+    ];
+    environment.systemPackages = let
+      testProgram = pkgs.writeScriptBin "test-sandbox" ''
+        #!${pkgs.stdenv.shell} -ex
+        ! echo foo | grep -qF foo
+        export PATH=/run/baz-test-sandbox/bin
+        echo foo > /home/foo/existing/bar
+        test ! -d /home/foo/nonexisting
+        /run/foo-test-sandbox/bin/hello
+        echo aaa | /run/bar-test-sandbox/bin/sed -e 's/a/b/g'
+      '';
+    in lib.singleton (pkgs.vuizvui.games.buildSandbox testProgram {
+      paths.required = [ "/home/foo/existing" ];
+      paths.wanted = [ "/home/foo/nonexisting" ];
+      paths.runtimeVars = [ "COLLECT_ME" ];
+    });
+    users.users.foo.isNormalUser = true;
+  };
+
+  testScript = ''
+    $machine->waitForUnit('multi-user.target');
+    $machine->succeed('su - -c test-sandbox foo >&2');
+
+    $machine->succeed('test -d /home/foo/existing');
+    $machine->succeed('grep -qF foo /home/foo/existing/bar');
+    $machine->fail('test -d /home/foo/nonexisting');
+  '';
+}