at master 3.2 kB view raw
1# nix-build -A nixosTests.docker-tools-nix-shell 2{ config, lib, ... }: 3let 4 inherit (config.node.pkgs.dockerTools) examples; 5in 6{ 7 name = "docker-tools-nix-shell"; 8 meta = with lib.maintainers; { 9 maintainers = [ 10 infinisil 11 roberth 12 ]; 13 }; 14 15 nodes = { 16 docker = 17 { ... }: 18 { 19 virtualisation = { 20 diskSize = 4000; 21 docker.enable = true; 22 }; 23 }; 24 }; 25 26 testScript = '' 27 docker.wait_for_unit("sockets.target") 28 29 with subtest("buildImageWithNixDB: Has a nix database"): 30 docker.succeed( 31 "docker load --input='${examples.nix}'", 32 "docker run --rm ${examples.nix.imageName} nix-store -q --references /bin/bash" 33 ) 34 35 with subtest("buildNixShellImage: Can build a basic derivation"): 36 docker.succeed( 37 "${examples.nix-shell-basic} | docker load", 38 "docker run --rm nix-shell-basic bash -c 'buildDerivation && $out/bin/hello' | grep '^Hello, world!$'" 39 ) 40 41 with subtest("buildNixShellImage: Runs the shell hook"): 42 docker.succeed( 43 "${examples.nix-shell-hook} | docker load", 44 "docker run --rm -it nix-shell-hook | grep 'This is the shell hook!'" 45 ) 46 47 with subtest("buildNixShellImage: Sources stdenv, making build inputs available"): 48 docker.succeed( 49 "${examples.nix-shell-inputs} | docker load", 50 "docker run --rm -it nix-shell-inputs | grep 'Hello, world!'" 51 ) 52 53 with subtest("buildNixShellImage: passAsFile works"): 54 docker.succeed( 55 "${examples.nix-shell-pass-as-file} | docker load", 56 "docker run --rm -it nix-shell-pass-as-file | grep 'this is a string'" 57 ) 58 59 with subtest("buildNixShellImage: run argument works"): 60 docker.succeed( 61 "${examples.nix-shell-run} | docker load", 62 "docker run --rm -it nix-shell-run | grep 'This shell is not interactive'" 63 ) 64 65 with subtest("buildNixShellImage: command argument works"): 66 docker.succeed( 67 "${examples.nix-shell-command} | docker load", 68 "docker run --rm -it nix-shell-command | grep 'This shell is interactive'" 69 ) 70 71 with subtest("buildNixShellImage: home directory is writable by default"): 72 docker.succeed( 73 "${examples.nix-shell-writable-home} | docker load", 74 "docker run --rm -it nix-shell-writable-home" 75 ) 76 77 with subtest("buildNixShellImage: home directory can be made non-existent"): 78 docker.succeed( 79 "${examples.nix-shell-nonexistent-home} | docker load", 80 "docker run --rm -it nix-shell-nonexistent-home" 81 ) 82 83 with subtest("buildNixShellImage: can build derivations"): 84 docker.succeed( 85 "${examples.nix-shell-build-derivation} | docker load", 86 "docker run --rm -it nix-shell-build-derivation" 87 ) 88 89 with subtest("streamLayeredImage: with nix db"): 90 docker.succeed( 91 "${examples.nix-layered} | docker load", 92 "docker run --rm ${examples.nix-layered.imageName} nix-store -q --references /bin/bash" 93 ) 94 ''; 95}