summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile33
-rw-r--r--default.nix4
-rw-r--r--srv/default.nix8
-rw-r--r--test.sh23
4 files changed, 45 insertions, 23 deletions
diff --git a/Makefile b/Makefile
index d074a3d..de7e4f1 100644
--- a/Makefile
+++ b/Makefile
@@ -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}
+ '';
+ };
}
diff --git a/test.sh b/test.sh
new file mode 100644
index 0000000..e204f91
--- /dev/null
+++ b/test.sh
@@ -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"