scenario: testConfig: { vm = import ./make-test-vm.nix (pkgs: { name = "nix-bitcoin-${scenario}"; machine = { imports = [ testConfig ]; # Needed because duplicity requires 270 MB of free temp space, regardless of backup size virtualisation.diskSize = 1024; }; testScript = nodes: let cfg = nodes.nodes.machine.config; data = { data = cfg.test.data; tests = cfg.tests; }; dataFile = pkgs.writeText "test-data" (builtins.toJSON data); initData = '' import json with open("${dataFile}") as f: data = json.load(f) enabled_tests = set(test for (test, enabled) in data["tests"].items() if enabled) test_data = data["data"] ''; in builtins.concatStringsSep "\n\n" [ initData (builtins.readFile ./../tests.py) # Don't run tests in interactive mode. # is_interactive is set in ../run-tests.sh '' if not "is_interactive" in vars(): run_tests() '' ]; }); container = { # The container name has a 11 char length limit containers.nb-test = { config, ... }: { config = { extra = config.config.test.container; config = testConfig; }; }; }; config = testConfig; }