diff options
author | Brian Picciano <mediocregopher@gmail.com> | 2022-05-08 16:36:28 -0600 |
---|---|---|
committer | Brian Picciano <mediocregopher@gmail.com> | 2022-05-08 16:36:28 -0600 |
commit | a759fc28f715f4c7523a830314e3ccf09e2f0d70 (patch) | |
tree | 7138b26009f4a4dd1ba0ae7d4af1962ee70992fa | |
parent | ddb126db1709b1c7679b8370b508639991387bf0 (diff) |
Add test target to Makefile to run full integration tests
-rw-r--r-- | Makefile | 33 | ||||
-rw-r--r-- | default.nix | 4 | ||||
-rw-r--r-- | srv/default.nix | 8 | ||||
-rw-r--r-- | test.sh | 23 |
4 files changed, 45 insertions, 23 deletions
@@ -1,34 +1,23 @@ -SKIP_SERVICES = [] -all: - nix-build -A entrypoint \ - --arg baseConfig '(import ./config.nix)' \ - --arg baseSkipServices '${SKIP_SERVICES}' - -run: all - ./result +CONFIG = ./config.nix -all.prod: +entrypoint: nix-build -A entrypoint \ - --arg baseConfig '(import ./prod.config.nix)' \ - --arg baseSkipServices '${SKIP_SERVICES}' + --arg baseConfig '(import ${CONFIG})' -run.prod: all.prod +install: + nix-build -A install --arg baseConfig '(import ${CONFIG})' ./result -install.prod: - nix-build -A install --arg baseConfig '(import ./prod.config.nix)' - ./result +test: + $$(nix-build --no-out-link -A pkgs.bash)/bin/bash test.sh + @if [ $$? == 0 ]; then echo "TESTS PASSED!"; else echo "TESTS FAILED!"; fi srv.shell: - nix-shell -A srv.shell --command 'cd srv; return' - -srv.shell.prod: - nix-shell -A srv.shell --arg baseConfig '(import ./prod.config.nix)' --command 'cd srv; return' - -static.shell: - nix-shell -A static.shell --command 'cd static; return' + nix-shell -A srv.shell --arg baseConfig '(import ${CONFIG})' \ + --command 'cd srv; return' +# TODO static is on the way out, these aren't well supported static.serve: nix-shell -A static.shell --run 'cd static; static-serve' diff --git a/default.nix b/default.nix index 78a86fd..8d20c38 100644 --- a/default.nix +++ b/default.nix @@ -1,6 +1,6 @@ { - pkgs ? import (fetchTarball { + pkgsArg ? import (fetchTarball { name = "nixpkgs-21-05"; url = "https://github.com/NixOS/nixpkgs/archive/7e9b0dff974c89e070da1ad85713ff3c20b0ca97.tar.gz"; sha256 = "1ckzhh24mgz6jd1xhfgx0i9mijk6xjqxwsshnvq789xsavrmsc36"; @@ -11,6 +11,8 @@ }: rec { + pkgs = pkgsArg; + config = baseConfig // { redisListenPath = "${config.runDir}/redis"; }; diff --git a/srv/default.nix b/srv/default.nix index 5510744..df54d84 100644 --- a/srv/default.nix +++ b/srv/default.nix @@ -63,4 +63,12 @@ cd src ''; }; + + test = stdenv.mkDerivation { + name = "mediocre-blog-srv-test"; + buildInputs = [ go ]; + shellHook = '' + source ${init} + ''; + }; } @@ -0,0 +1,23 @@ + +test_dir="$(mktemp -d)" + +mkdir -p "$test_dir"/run +mkdir -p "$test_dir"/data + +test_cfg="(import ./config.nix) // { + runDir=\"${test_dir}/run\"; + dataDir=\"${test_dir}/data\"; +}" + +$(nix-build --no-out-link -A entrypoint \ + --arg baseConfig "$test_cfg" \ + --arg baseSkipServices '["srv" "static"]') & + +trap "kill $!; wait; rm -rf $test_dir" EXIT + +# TODO there's a race condition here, we should wait until redis is definitely +# listening before commencing the tests. + +nix-shell -A srv.test \ + --arg baseConfig "$test_cfg" \ + --run "cd srv/src && go test ./... -count=1 -tags integration" |