diff options
author | Leon Barrett <Leon.Barrett@sony.com> | 2023-03-31 14:51:38 -0700 |
---|---|---|
committer | Leon Barrett <Leon.Barrett@sony.com> | 2023-04-16 09:54:45 -0700 |
commit | 15c760d6b8fd425c4f10cda6f82959dd98ea191c (patch) | |
tree | 083ab48e541133fcd619985ccf4c46545aab6985 /nixos/tests/image-contents.nix | |
parent | a711e445cc057ac06160816b848f5752a6b4b753 (diff) |
nixos/make-disk-image: fix contents dir paths
`make-disk-image` is a tool for creating VM images. It takes an argument `contents` that allows one to specify files and directories that should be copied into the VM image. However, directories end up not at the specified target, but instead at a subdirectory of the target, with a nix-store-like path, e.g. `/target/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-source`. See issue https://github.com/NixOS/nixpkgs/issues/226203 . This change adds a test for make-disk-image's contents directory handling and adds a fix (appending `/` to rsync input directory names). This closes issue https://github.com/NixOS/nixpkgs/issues/226203 .
Diffstat (limited to 'nixos/tests/image-contents.nix')
-rw-r--r-- | nixos/tests/image-contents.nix | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/nixos/tests/image-contents.nix b/nixos/tests/image-contents.nix index 90908968a7e27..858f7d8c68f40 100644 --- a/nixos/tests/image-contents.nix +++ b/nixos/tests/image-contents.nix @@ -27,13 +27,19 @@ let inherit pkgs config; lib = pkgs.lib; format = "qcow2"; - contents = [{ - source = pkgs.writeText "testFile" "contents"; - target = "/testFile"; - user = "1234"; - group = "5678"; - mode = "755"; - }]; + contents = [ + { + source = pkgs.writeText "testFile" "contents"; + target = "/testFile"; + user = "1234"; + group = "5678"; + mode = "755"; + } + { + source = ./.; + target = "/testDir"; + } + ]; }) + "/nixos.qcow2"; in makeEc2Test { @@ -42,10 +48,15 @@ in makeEc2Test { userData = null; script = '' machine.start() + # Test that if contents includes a file, it is copied to the target. assert "content" in machine.succeed("cat /testFile") fileDetails = machine.succeed("ls -l /testFile") assert "1234" in fileDetails assert "5678" in fileDetails assert "rwxr-xr-x" in fileDetails + + # Test that if contents includes a directory, it is copied to the target. + dirList = machine.succeed("ls /testDir") + assert "image-contents.nix" in dirList ''; } |