nix: Add postgrest-with-* tools to run with temporary databases of different versions
This commit is contained in:
committed by
Remo Rechkemmer
parent
522308217a
commit
ab6f90aa78
+6
-10
@@ -200,30 +200,26 @@ jobs:
|
|||||||
when: on_fail
|
when: on_fail
|
||||||
- run:
|
- run:
|
||||||
name: Run the spec tests against PostgreSQL 9.5
|
name: Run the spec tests against PostgreSQL 9.5
|
||||||
command: postgrest-test-spec-postgresql-9.5
|
command: postgrest-with-postgresql-9.5 postgrest-test-spec
|
||||||
when: always
|
when: always
|
||||||
- run:
|
- run:
|
||||||
name: Run the spec tests against PostgreSQL 9.6
|
name: Run the spec tests against PostgreSQL 9.6
|
||||||
command: postgrest-test-spec-postgresql-9.6
|
command: postgrest-with-postgresql-9.6 postgrest-test-spec
|
||||||
when: always
|
when: always
|
||||||
- run:
|
- run:
|
||||||
name: Run the spec tests against PostgreSQL 10
|
name: Run the spec tests against PostgreSQL 10
|
||||||
command: postgrest-test-spec-postgresql-10
|
command: postgrest-with-postgresql-10 postgrest-test-spec
|
||||||
when: always
|
when: always
|
||||||
- run:
|
- run:
|
||||||
name: Run the spec tests against PostgreSQL 11
|
name: Run the spec tests against PostgreSQL 11
|
||||||
command: postgrest-test-spec-postgresql-11
|
command: postgrest-with-postgresql-11 postgrest-test-spec
|
||||||
when: always
|
when: always
|
||||||
- run:
|
- run:
|
||||||
name: Run the spec tests against PostgreSQL 12
|
name: Run the spec tests against PostgreSQL 12
|
||||||
command: postgrest-test-spec-postgresql-12
|
command: postgrest-with-postgresql-12 postgrest-test-spec
|
||||||
when: always
|
when: always
|
||||||
- run:
|
- run:
|
||||||
name: Run the spec tests against PostgreSQL 13
|
name: Check the spec tests for idempotence against PostgreSQL 13
|
||||||
command: postgrest-test-spec-postgresql-13
|
|
||||||
when: always
|
|
||||||
- run:
|
|
||||||
name: Check the spec tests for idempotence
|
|
||||||
command: postgrest-test-spec-idempotence
|
command: postgrest-test-spec-idempotence
|
||||||
when: always
|
when: always
|
||||||
- run:
|
- run:
|
||||||
|
|||||||
+28
-16
@@ -73,12 +73,15 @@ The PostgREST utilities available in `nix-shell` all have names that begin with
|
|||||||
```bash
|
```bash
|
||||||
# Note: The utilities listed here might not be up to date.
|
# Note: The utilities listed here might not be up to date.
|
||||||
[nix-shell]$ postgrest-<tab>
|
[nix-shell]$ postgrest-<tab>
|
||||||
postgrest-lint postgrest-test-spec-postgresql-11
|
postgrest-build postgrest-test-spec
|
||||||
postgrest-style postgrest-test-spec-postgresql-12
|
postgrest-check postgrest-watch
|
||||||
postgrest-style-check postgrest-test-spec-postgresql-13
|
postgrest-clean postgrest-with-all
|
||||||
postgrest-test-spec postgrest-test-spec-postgresql-9.5
|
postgrest-coverage postgrest-with-postgresql-10
|
||||||
postgrest-test-spec-all postgrest-test-spec-postgresql-9.6
|
postgrest-lint postgrest-with-postgresql-11
|
||||||
postgrest-test-spec-postgresql-10
|
postgrest-run postgrest-with-postgresql-12
|
||||||
|
postgrest-style postgrest-with-postgresql-13
|
||||||
|
postgrest-style-check postgrest-with-postgresql-9.5
|
||||||
|
postgrest-test-io postgrest-with-postgresql-9.6
|
||||||
...
|
...
|
||||||
|
|
||||||
[nix-shell]$
|
[nix-shell]$
|
||||||
@@ -94,12 +97,16 @@ is not used. You can activate those by passing a flag to `nix-shell` with
|
|||||||
```bash
|
```bash
|
||||||
$ nix-shell --arg memoryTests true
|
$ nix-shell --arg memoryTests true
|
||||||
[nix-shell]$ postgrest-<tab>
|
[nix-shell]$ postgrest-<tab>
|
||||||
postgrest-lint postgrest-test-spec-postgresql-10
|
postgrest-build postgrest-test-spec
|
||||||
postgrest-style postgrest-test-spec-postgresql-11
|
postgrest-check postgrest-watch
|
||||||
postgrest-style-check postgrest-test-spec-postgresql-12
|
postgrest-clean postgrest-with-all
|
||||||
postgrest-test-memory postgrest-test-spec-postgresql-13
|
postgrest-coverage postgrest-with-postgresql-10
|
||||||
postgrest-test-spec postgrest-test-spec-postgresql-9.5
|
postgrest-lint postgrest-with-postgresql-11
|
||||||
postgrest-test-spec-all postgrest-test-spec-postgresql-9.6
|
postgrest-run postgrest-with-postgresql-12
|
||||||
|
postgrest-style postgrest-with-postgresql-13
|
||||||
|
postgrest-style-check postgrest-with-postgresql-9.5
|
||||||
|
postgrest-test-io postgrest-with-postgresql-9.6
|
||||||
|
postgrest-test-memory
|
||||||
...
|
...
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -156,11 +163,11 @@ temporary test databases:
|
|||||||
$ nix-shell --run postgrest-test-spec
|
$ nix-shell --run postgrest-test-spec
|
||||||
|
|
||||||
# Run the tests against all supported versions of PostgreSQL:
|
# Run the tests against all supported versions of PostgreSQL:
|
||||||
$ nix-shell --run postgrest-test-spec-all
|
$ nix-shell --run "postgrest-with-all postgrest-test-spec"
|
||||||
|
|
||||||
# Run the tests against a specific version of PostgreSQL (use tab-completion in
|
# Run the tests against a specific version of PostgreSQL (use tab-completion in
|
||||||
# nix-shell to see all available versions):
|
# nix-shell to see all available versions):
|
||||||
$ nix-shell --run postgrest-test-spec-postgresql-13
|
$ nix-shell --run "postgrest-with-postgresql-13 postgrest-test-spec"
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -202,9 +209,14 @@ Tools like `postgrest-build`, `postgrest-run` etc. are simple wrappers around
|
|||||||
also run in CI, with the exception of the IO and Memory checks that need to be run
|
also run in CI, with the exception of the IO and Memory checks that need to be run
|
||||||
separately.
|
separately.
|
||||||
|
|
||||||
|
`postgrest-with-postgresql-*` take a command as an argument and will run it
|
||||||
|
with a temporary database. `postgrest-with-all` will run the command against
|
||||||
|
all supported PostgreSQL versions. Tests run without `postgrest-with-*` are
|
||||||
|
run against the latest PostgreSQL version by default.
|
||||||
|
|
||||||
`postgrest-watch` takes a command as an argument that it will re-run if any source
|
`postgrest-watch` takes a command as an argument that it will re-run if any source
|
||||||
file is changed. For example, `postgrest-watch postgrest-test-spec-all` will re-run
|
file is changed. For example, `postgrest-watch postgrest-with-all postgrest-test-spec`
|
||||||
the full spec test suite against all PostgreSQL versions on every change.
|
will re-run the full spec test suite against all PostgreSQL versions on every change.
|
||||||
|
|
||||||
## Tour
|
## Tour
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -90,7 +90,7 @@ let
|
|||||||
inRootDir = true;
|
inRootDir = true;
|
||||||
}
|
}
|
||||||
''
|
''
|
||||||
${tests}/bin/postgrest-test-spec-all
|
${tests}/bin/postgrest-with-all ${tests}/bin/postgrest-test-spec
|
||||||
${tests}/bin/postgrest-test-spec-idempotence
|
${tests}/bin/postgrest-test-spec-idempotence
|
||||||
${tests}/bin/postgrest-test-io
|
${tests}/bin/postgrest-test-io
|
||||||
${style}/bin/postgrest-lint
|
${style}/bin/postgrest-lint
|
||||||
|
|||||||
+65
-45
@@ -30,42 +30,84 @@ let
|
|||||||
inRootDir = true;
|
inRootDir = true;
|
||||||
}
|
}
|
||||||
''
|
''
|
||||||
export PATH=${postgresql}/bin:"$PATH"
|
# avoid starting multiple layers of with_tmp_db
|
||||||
|
if test ! -v PGRST_DB_URI; then
|
||||||
|
export PATH=${postgresql}/bin:"$PATH"
|
||||||
|
|
||||||
exec test/with_tmp_db "$@"
|
exec test/with_tmp_db "$@"
|
||||||
|
else
|
||||||
|
"$@"
|
||||||
|
fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# Script to run the Haskell test suite against a specific version of
|
# Create a `withPostgresql` for each PostgreSQL version that we want to test
|
||||||
# PostgreSQL.
|
# against.
|
||||||
|
withPostgresqlVersions =
|
||||||
|
builtins.map
|
||||||
|
({ name, postgresql }:
|
||||||
|
(checkedShellScript
|
||||||
|
{
|
||||||
|
name = "postgrest-with-${name}";
|
||||||
|
docs = "Run the given command in a temporary database with ${name}";
|
||||||
|
inRootDir = false;
|
||||||
|
}
|
||||||
|
''
|
||||||
|
${withTmpDb postgresql} "$@"
|
||||||
|
''
|
||||||
|
).bin
|
||||||
|
)
|
||||||
|
postgresqlVersions;
|
||||||
|
|
||||||
|
# Helper script for running a command against all PostgreSQL versions.
|
||||||
|
withAllVersions =
|
||||||
|
name:
|
||||||
|
let
|
||||||
|
runners =
|
||||||
|
builtins.map
|
||||||
|
({ name, postgresql }:
|
||||||
|
''
|
||||||
|
cat << EOF
|
||||||
|
|
||||||
|
Running against ${name}...
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
trap 'echo "Failed on ${name}"' exit
|
||||||
|
|
||||||
|
${withTmpDb postgresql} "$@"
|
||||||
|
|
||||||
|
trap "" exit
|
||||||
|
|
||||||
|
cat << EOF
|
||||||
|
|
||||||
|
Done running against ${name}.
|
||||||
|
|
||||||
|
EOF
|
||||||
|
'')
|
||||||
|
postgresqlVersions;
|
||||||
|
in
|
||||||
|
checkedShellScript
|
||||||
|
{
|
||||||
|
inherit name;
|
||||||
|
docs = "Run command against all supported PostgreSQL versions.";
|
||||||
|
inRootDir = true;
|
||||||
|
}
|
||||||
|
(lib.concatStringsSep "\n\n" runners);
|
||||||
|
|
||||||
|
# Script to run the Haskell test suite
|
||||||
testSpec =
|
testSpec =
|
||||||
name: postgresql:
|
name: postgresql:
|
||||||
checkedShellScript
|
checkedShellScript
|
||||||
{
|
{
|
||||||
inherit name;
|
inherit name;
|
||||||
docs = "Run the Haskell test suite against ${postgresql.name}.";
|
docs = "Run the Haskell test suite";
|
||||||
inRootDir = true;
|
inRootDir = true;
|
||||||
}
|
}
|
||||||
''
|
''
|
||||||
env="$(cat ${postgrest.env})"
|
env="$(cat ${postgrest.env})"
|
||||||
export PATH="$env/bin:$PATH"
|
export PATH="$env/bin:$PATH"
|
||||||
|
|
||||||
cat << EOF
|
|
||||||
|
|
||||||
Running spec against ${postgresql.name}...
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
trap 'echo "Failed on ${postgresql.name}"' exit
|
|
||||||
|
|
||||||
${withTmpDb postgresql} ${cabal-install}/bin/cabal v2-test ${devCabalOptions}
|
${withTmpDb postgresql} ${cabal-install}/bin/cabal v2-test ${devCabalOptions}
|
||||||
|
|
||||||
trap "" exit
|
|
||||||
|
|
||||||
cat << EOF
|
|
||||||
|
|
||||||
Done running spec against ${postgresql.name}.
|
|
||||||
|
|
||||||
EOF
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
testSpecIdempotence =
|
testSpecIdempotence =
|
||||||
@@ -85,28 +127,6 @@ let
|
|||||||
${cabal-install}/bin/cabal v2-test ${devCabalOptions}"
|
${cabal-install}/bin/cabal v2-test ${devCabalOptions}"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# Create a `testSpec` for each PostgreSQL version that we want to test
|
|
||||||
# against.
|
|
||||||
testSpecVersions =
|
|
||||||
builtins.map
|
|
||||||
({ name, postgresql }:
|
|
||||||
(testSpec "postgrest-test-spec-${name}" postgresql).bin)
|
|
||||||
postgresqlVersions;
|
|
||||||
|
|
||||||
# Helper script for running the tests against all PostgreSQL versions.
|
|
||||||
testSpecAllVersions =
|
|
||||||
let
|
|
||||||
testRunners =
|
|
||||||
map (test: "${test}/bin/${test.name}") testSpecVersions;
|
|
||||||
in
|
|
||||||
checkedShellScript
|
|
||||||
{
|
|
||||||
name = "postgrest-test-spec-all";
|
|
||||||
docs = "Run the Haskell tests against all supported PostgreSQL versions.";
|
|
||||||
inRootDir = true;
|
|
||||||
}
|
|
||||||
(lib.concatStringsSep "\n" testRunners);
|
|
||||||
|
|
||||||
ioTestPython =
|
ioTestPython =
|
||||||
python3.withPackages (ps: [
|
python3.withPackages (ps: [
|
||||||
ps.pyjwt
|
ps.pyjwt
|
||||||
@@ -262,12 +282,12 @@ buildEnv
|
|||||||
[
|
[
|
||||||
(testSpec "postgrest-test-spec" postgresql).bin
|
(testSpec "postgrest-test-spec" postgresql).bin
|
||||||
(testSpecIdempotence "postgrest-test-spec-idempotence" postgresql).bin
|
(testSpecIdempotence "postgrest-test-spec-idempotence" postgresql).bin
|
||||||
testSpecAllVersions.bin
|
|
||||||
(testIO "postgrest-test-io" postgresql).bin
|
(testIO "postgrest-test-io" postgresql).bin
|
||||||
(dumpSchema "postgrest-dump-schema" postgresql).bin
|
(dumpSchema "postgrest-dump-schema" postgresql).bin
|
||||||
(coverage "postgrest-coverage" postgresql).bin
|
(coverage "postgrest-coverage" postgresql).bin
|
||||||
(coverageDraftOverlay "postgrest-coverage-draft-overlay").bin
|
(coverageDraftOverlay "postgrest-coverage-draft-overlay").bin
|
||||||
] ++ testSpecVersions;
|
(withAllVersions "postgrest-with-all").bin
|
||||||
|
] ++ withPostgresqlVersions;
|
||||||
}
|
}
|
||||||
# The memory tests have large dependencies (a profiled build of PostgREST)
|
# 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
|
# and are run less often than the spec tests, so we don't include them in
|
||||||
|
|||||||
@@ -40,6 +40,13 @@ lib.overrideDerivation postgrest.env (
|
|||||||
''
|
''
|
||||||
source ${pkgs.bashCompletion}/etc/profile.d/bash_completion.sh
|
source ${pkgs.bashCompletion}/etc/profile.d/bash_completion.sh
|
||||||
complete -F _command postgrest-watch
|
complete -F _command postgrest-watch
|
||||||
|
complete -F _command postgrest-with-all
|
||||||
|
complete -F _command postgrest-with-postgresql-13
|
||||||
|
complete -F _command postgrest-with-postgresql-12
|
||||||
|
complete -F _command postgrest-with-postgresql-11
|
||||||
|
complete -F _command postgrest-with-postgresql-10
|
||||||
|
complete -F _command postgrest-with-postgresql-9.6
|
||||||
|
complete -F _command postgrest-with-postgresql-9.5
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user