From f2cb91740ef71c87c178187d368a480deeeb1e2c Mon Sep 17 00:00:00 2001 From: Wolfgang Walther Date: Tue, 1 Dec 2020 00:37:45 +0100 Subject: [PATCH] Use cabal v2-exec to run io tests, include io tests in nix-shell by default; remove obsolete ncat dependency (#1673) Use cabal v2-exec to run io tests, include io tests in nix-shell by default; remove obsolete ncat dependency --- .circleci/config.yml | 2 +- nix/README.md | 14 +++++++------- nix/tests.nix | 20 +++++++++----------- shell.nix | 3 +-- test/io-tests.sh | 3 +-- 5 files changed, 19 insertions(+), 23 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0e8de1409..1bdc9d677 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -194,7 +194,7 @@ jobs: fi - run: name: Install testing scripts - command: nix-env -f default.nix -iA tests tests.ioTests tests.memoryTests + command: nix-env -f default.nix -iA tests tests.memoryTests - run: name: Skip tests on build failure command: circleci-agent step halt diff --git a/nix/README.md b/nix/README.md index 1970f12f1..b0b111bf5 100644 --- a/nix/README.md +++ b/nix/README.md @@ -80,26 +80,26 @@ postgrest-test-spec-postgresql-10 ``` -Some additional modules like `ioTests`, `memoryTests`, `docker` and `release` +Some additional modules like `memoryTests`, `docker` and `release` have large dependencies that would need to be built before the shell becomes available, which could take an especially long time if the cachix binary cache is not used. You can activate those by passing a flag to `nix-shell`, which will make the respective utilites available: ``` -$ nix-shell --arg ioTests true +$ nix-shell --arg memoryTests true [nix-shell]$ postgrest- postgrest-lint postgrest-test-spec-postgresql-10 postgrest-style postgrest-test-spec-postgresql-11 postgrest-style-check postgrest-test-spec-postgresql-12 -postgrest-test-io postgrest-test-spec-postgresql-13 +postgrest-test-memory postgrest-test-spec-postgresql-13 postgrest-test-spec postgrest-test-spec-postgresql-9.5 postgrest-test-spec-all postgrest-test-spec-postgresql-9.6 ... ``` -Note that `postgrest-test-io` is now also available. +Note that `postgrest-test-memory` is now also available. To run one-off commands, you can also use `nix-shell --run `, which will lauch the Nix shell, run that one command and exit. Note that the tab @@ -138,14 +138,14 @@ temporary test databases: ```bash # Run the tests against the most recent version of PostgreSQL: -$ nix-shell --arg tests true --run postgrest-test-spec +$ nix-shell --run postgrest-test-spec # Run the tests against all supported versions of PostgreSQL: -$ nix-shell --arg tests true --run postgrest-test-spec-all +$ nix-shell --run postgrest-test-spec-all # Run the tests against a specific version of PostgreSQL (use tab-completion in # nix-shell to see all available versions): -$ nix-shell --arg tests true --run postgrest-test-spec-postgresql-9.5 +$ nix-shell --run postgrest-test-spec-postgresql-9.5 ``` diff --git a/nix/tests.nix b/nix/tests.nix index 4c7397113..c91c30498 100644 --- a/nix/tests.nix +++ b/nix/tests.nix @@ -8,7 +8,6 @@ , git , haskell , lib -, ncat , postgresql , postgresqlVersions , postgrest @@ -78,12 +77,14 @@ let checkedShellScript name '' + env="$(cat ${postgrest.env})" + export PATH="$env/bin:${curl}/bin:$PATH" + rootdir="$(${git}/bin/git rev-parse --show-toplevel)" cd "$rootdir" - export PATH="${postgrestStatic}/bin:${curl}/bin:${ncat}/bin:$PATH" - - ${withTmpDb postgresql} "$rootdir"/test/io-tests.sh + ${cabal-install}/bin/cabal v2-build ${devCabalOptions} + ${cabal-install}/bin/cabal v2-exec ${withTmpDb postgresql} "$rootdir"/test/io-tests.sh ''; testMemory = @@ -110,16 +111,13 @@ buildEnv [ (testSpec "postgrest-test-spec" postgresql).bin testSpecAllVersions.bin + (testIO "postgrest-test-io" postgresql).bin ] ++ testSpecVersions; } - # The IO an memory tests have large dependencies (a static and a profiled - # build of PostgREST respectively) and are run less often than the spec - # tests, so we don't include them in the default test environment. We make - # them available through separate attributes: + # The memory tests have large dependencies (a profiled build of PostgREST) + # and are run less often than the spec tests, so we don't include them in + # the default test environment. We make them available through a separate attribute: // { - ioTests = - (testIO "postgrest-test-io" postgresql).bin; - memoryTests = (testMemory "postgrest-test-memory" postgresql).bin; } diff --git a/shell.nix b/shell.nix index 1a26390a9..5876a5228 100644 --- a/shell.nix +++ b/shell.nix @@ -9,7 +9,7 @@ # # We highly recommend that use the PostgREST binary cache by installing cachix # (https://app.cachix.org/) and running `cachix use postgrest`. -{ ioTests ? false, memoryTests ? false, docker ? false, release ? false }: +{ memoryTests ? false, docker ? false, release ? false }: let postgrest = import ./default.nix; @@ -32,7 +32,6 @@ lib.overrideDerivation postgrest.env ( postgrest.tests postgrest.style ] - ++ lib.optional ioTests postgrest.tests.ioTests ++ lib.optional memoryTests postgrest.tests.memoryTests ++ lib.optional docker postgrest.docker ++ lib.optional release postgrest.release; diff --git a/test/io-tests.sh b/test/io-tests.sh index 8df00431b..898573fb0 100755 --- a/test/io-tests.sh +++ b/test/io-tests.sh @@ -2,8 +2,7 @@ # Run unit tests for Input/Ouput of PostgREST seen as a black box # with test output in Test Anything Protocol format. # -# These tests expect that `postgrest` is on the PATH, as well as `curl` and -# `ncat` (from the nmap package in some distribution). +# These tests expect that `postgrest` is on the PATH, as well as `curl` # # References: # [1] Test Anything Protocol