Add integration test
Tests the minimal example, up command, network connectivity. Introduces overlay.
This commit is contained in:
parent
ebb714c69d
commit
c39d7db5cd
5 changed files with 66 additions and 23 deletions
18
arion.nix
Normal file
18
arion.nix
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{ stdenv, lib, jq, coreutils }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "arion";
|
||||||
|
src = ./src;
|
||||||
|
unpackPhase = "";
|
||||||
|
buildPhase = "";
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin $out/share/arion
|
||||||
|
cp -a nix $out/share/arion/
|
||||||
|
cp -a arion-image $out/share/arion/
|
||||||
|
substitute arion $out/bin/arion \
|
||||||
|
--subst-var-by path ${lib.makeBinPath [jq coreutils]} \
|
||||||
|
--subst-var-by nix_dir $out/share/arion/nix \
|
||||||
|
;
|
||||||
|
chmod a+x $out/bin/arion
|
||||||
|
'';
|
||||||
|
}
|
26
default.nix
26
default.nix
|
@ -1,26 +1,6 @@
|
||||||
{ pkgs ? import <nixpkgs> {} }:
|
{ pkgs ? import ./pkgs.nix }:
|
||||||
|
|
||||||
let
|
|
||||||
inherit (pkgs) lib stdenv;
|
|
||||||
|
|
||||||
arion = stdenv.mkDerivation {
|
|
||||||
name = "arion";
|
|
||||||
src = ./src;
|
|
||||||
unpackPhase = "";
|
|
||||||
buildPhase = "";
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out/bin $out/share/arion
|
|
||||||
cp -a nix $out/share/arion/
|
|
||||||
cp -a arion-image $out/share/arion/
|
|
||||||
substitute arion $out/bin/arion \
|
|
||||||
--subst-var-by path ${lib.makeBinPath [pkgs.jq pkgs.coreutils]} \
|
|
||||||
--subst-var-by nix_dir $out/share/arion/nix \
|
|
||||||
;
|
|
||||||
chmod a+x $out/bin/arion
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
inherit arion;
|
inherit (pkgs) arion;
|
||||||
|
tests = pkgs.callPackage ./tests {};
|
||||||
}
|
}
|
||||||
|
|
3
pkgs.nix
Normal file
3
pkgs.nix
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
import <nixpkgs> {
|
||||||
|
overlays = [ (self: super: { arion = super.callPackage ./arion.nix {}; }) ];
|
||||||
|
}
|
34
tests/arion-test/default.nix
Normal file
34
tests/arion-test/default.nix
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
# To make some prebuilt derivations available in the vm
|
||||||
|
preEval = import ../../src/nix/eval-docker-compose.nix {
|
||||||
|
modules = [ ../../examples/minimal/arion-compose.nix ];
|
||||||
|
inherit pkgs;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
name = "arion-test";
|
||||||
|
machine = { pkgs, lib, ... }: {
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.arion
|
||||||
|
pkgs.docker-compose
|
||||||
|
];
|
||||||
|
virtualisation.docker.enable = true;
|
||||||
|
|
||||||
|
# no caches, because no internet
|
||||||
|
nix.binaryCaches = lib.mkForce [];
|
||||||
|
virtualisation.writableStore = true;
|
||||||
|
virtualisation.pathsInNixDB = [
|
||||||
|
# Pre-build the image because we don't want to build the world
|
||||||
|
# in the vm.
|
||||||
|
preEval.config.build.dockerComposeYaml
|
||||||
|
];
|
||||||
|
};
|
||||||
|
testScript = ''
|
||||||
|
$machine->fail("curl localhost:8000");
|
||||||
|
$machine->succeed("docker --version");
|
||||||
|
$machine->succeed("cp -r ${../../examples/minimal} work && cd work && NIX_PATH=nixpkgs='${pkgs.path}' arion up -d");
|
||||||
|
$machine->waitUntilSucceeds("curl localhost:8000");
|
||||||
|
'';
|
||||||
|
}
|
8
tests/default.nix
Normal file
8
tests/default.nix
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{ pkgs ? import ../pkgs.nix }:
|
||||||
|
let
|
||||||
|
inherit (pkgs) nixosTest recurseIntoAttrs;
|
||||||
|
in
|
||||||
|
|
||||||
|
recurseIntoAttrs {
|
||||||
|
test = nixosTest ./arion-test;
|
||||||
|
}
|
Loading…
Reference in a new issue