nixosTests.docker-tools-cross: init
Not everyone has a suitable remote builder set up, so the cross-compilation tests that _include_ running the result are separate. That way, most people can run the majority of the test suite without the extra setup.
This commit is contained in:
parent
8f66dc94a7
commit
d4b7efe531
@ -91,6 +91,7 @@ in
|
|||||||
docker-edge = handleTestOn ["x86_64-linux"] ./docker-edge.nix {};
|
docker-edge = handleTestOn ["x86_64-linux"] ./docker-edge.nix {};
|
||||||
docker-registry = handleTest ./docker-registry.nix {};
|
docker-registry = handleTest ./docker-registry.nix {};
|
||||||
docker-tools = handleTestOn ["x86_64-linux"] ./docker-tools.nix {};
|
docker-tools = handleTestOn ["x86_64-linux"] ./docker-tools.nix {};
|
||||||
|
docker-tools-cross = handleTestOn ["x86_64-linux" "aarch64-linux"] ./docker-tools-cross.nix {};
|
||||||
docker-tools-overlay = handleTestOn ["x86_64-linux"] ./docker-tools-overlay.nix {};
|
docker-tools-overlay = handleTestOn ["x86_64-linux"] ./docker-tools-overlay.nix {};
|
||||||
documize = handleTest ./documize.nix {};
|
documize = handleTest ./documize.nix {};
|
||||||
dokuwiki = handleTest ./dokuwiki.nix {};
|
dokuwiki = handleTest ./dokuwiki.nix {};
|
||||||
|
76
nixos/tests/docker-tools-cross.nix
Normal file
76
nixos/tests/docker-tools-cross.nix
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
# Not everyone has a suitable remote builder set up, so the cross-compilation
|
||||||
|
# tests that _include_ running the result are separate. That way, most people
|
||||||
|
# can run the majority of the test suite without the extra setup.
|
||||||
|
|
||||||
|
|
||||||
|
import ./make-test-python.nix ({ pkgs, ... }:
|
||||||
|
let
|
||||||
|
|
||||||
|
remoteSystem =
|
||||||
|
if pkgs.system == "aarch64-linux"
|
||||||
|
then "x86_64-linux"
|
||||||
|
else "aarch64-linux";
|
||||||
|
|
||||||
|
remoteCrossPkgs = import ../.. /*nixpkgs*/ {
|
||||||
|
# NOTE: This is the machine that runs the build - local from the
|
||||||
|
# 'perspective' of the build script.
|
||||||
|
localSystem = remoteSystem;
|
||||||
|
|
||||||
|
# NOTE: Since this file can't control where the test will be _run_ we don't
|
||||||
|
# cross-compile _to_ a different system but _from_ a different system
|
||||||
|
crossSystem = pkgs.system;
|
||||||
|
};
|
||||||
|
|
||||||
|
hello1 = remoteCrossPkgs.dockerTools.buildImage {
|
||||||
|
name = "hello1";
|
||||||
|
tag = "latest";
|
||||||
|
contents = remoteCrossPkgs.hello;
|
||||||
|
};
|
||||||
|
|
||||||
|
hello2 = remoteCrossPkgs.dockerTools.buildLayeredImage {
|
||||||
|
name = "hello2";
|
||||||
|
tag = "latest";
|
||||||
|
contents = remoteCrossPkgs.hello;
|
||||||
|
};
|
||||||
|
|
||||||
|
in {
|
||||||
|
name = "docker-tools";
|
||||||
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
|
maintainers = [ roberth ];
|
||||||
|
};
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
docker = { ... }: {
|
||||||
|
virtualisation = {
|
||||||
|
diskSize = 2048;
|
||||||
|
docker.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
docker.wait_for_unit("sockets.target")
|
||||||
|
|
||||||
|
with subtest("Ensure cross compiled buildImage image can run."):
|
||||||
|
docker.succeed(
|
||||||
|
"docker load --input='${hello1}'"
|
||||||
|
)
|
||||||
|
assert "Hello, world!" in docker.succeed(
|
||||||
|
"docker run --rm ${hello1.imageName} hello",
|
||||||
|
)
|
||||||
|
docker.succeed(
|
||||||
|
"docker rmi ${hello1.imageName}",
|
||||||
|
)
|
||||||
|
|
||||||
|
with subtest("Ensure cross compiled buildLayeredImage image can run."):
|
||||||
|
docker.succeed(
|
||||||
|
"docker load --input='${hello2}'"
|
||||||
|
)
|
||||||
|
assert "Hello, world!" in docker.succeed(
|
||||||
|
"docker run --rm ${hello2.imageName} hello",
|
||||||
|
)
|
||||||
|
docker.succeed(
|
||||||
|
"docker rmi ${hello2.imageName}",
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
})
|
Loading…
Reference in New Issue
Block a user