Add integration test

Tests the minimal example, up command, network connectivity.
Introduces overlay.
This commit is contained in:
Robert Hensing 2019-01-02 09:54:46 +01:00
parent ebb714c69d
commit c39d7db5cd
5 changed files with 66 additions and 23 deletions

18
arion.nix Normal file
View 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
'';
}

View file

@ -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
View file

@ -0,0 +1,3 @@
import <nixpkgs> {
overlays = [ (self: super: { arion = super.callPackage ./arion.nix {}; }) ];
}

View 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
View file

@ -0,0 +1,8 @@
{ pkgs ? import ../pkgs.nix }:
let
inherit (pkgs) nixosTest recurseIntoAttrs;
in
recurseIntoAttrs {
test = nixosTest ./arion-test;
}