{ liminix , nixpkgs }: let img = (import liminix { device = import "${liminix}/devices/qemu"; liminix-config = ./configuration.nix; }).outputs.default; pkgs = import nixpkgs { overlays = [(import ../../overlay.nix)]; }; inherit (pkgs.pkgsBuildBuild) routeros; in pkgs.runCommand "check" { nativeBuildInputs = with pkgs; [ python3Packages.scapy expect jq socat routeros.routeros ] ; } '' serverstatedir=$(mktemp -d -t routeros-XXXXXX) # python scapy drags in matplotlib which doesn't enjoy running in # a sandbox with no $HOME, hence this environment variable export MPLCONFIGDIR=$(mktemp -d -t routeros-XXXXXX) . ${../test-helpers.sh} routeros $serverstatedir mkdir vm ${img}/run.sh --background ./vm expect ${./getaddress.expect} set -o pipefail response=$(python ${./test-dhcp-service.py}) echo "$response" | jq -e 'select((.router == "192.168.19.1") and (.server_id=="192.168.19.1"))' echo $response > $out ''