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.wip/yesman
parent
8f66dc94a7
commit
d4b7efe531
@ -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