d4b7efe531
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.
77 lines
2.0 KiB
Nix
77 lines
2.0 KiB
Nix
# 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}",
|
|
)
|
|
'';
|
|
})
|