postgresqlTestHook: run postgresqlTestSetupPost hook after setting up

This commit is contained in:
Nick Cao 2023-01-25 16:40:14 +08:00
parent a5088fdb72
commit 0ea2d480e4
No known key found for this signature in database
3 changed files with 12 additions and 1 deletions

View File

@ -46,6 +46,12 @@ Bash-only variables:
- `postgresqlEnableTCP`: set to `1` to enable TCP listening. Flaky; not recommended.
- `postgresqlStartCommands`: defaults to `pg_ctl start`.
## Hooks {#sec-postgresqlTestHook-hooks}
A number of additional hooks are ran in postgresqlTestHook
- `postgresqlTestSetupPost`: ran after postgresql has been set up.
## TCP and the Nix sandbox {#sec-postgresqlTestHook-tcp}
`postgresqlEnableTCP` relies on network sandboxing, which is not available on macOS and some custom Nix installations, resulting in flaky tests.

View File

@ -71,6 +71,8 @@ EOF
header 'setting up postgresql'
eval "$postgresqlTestSetupCommands"
runHook postgresqlTestSetupPost
}
postgresqlStop() {

View File

@ -14,6 +14,9 @@ stdenv.mkDerivation {
INSERT INTO hello VALUES ('it '||'worked');
SELECT * FROM hello;
'';
postgresqlTestSetupPost = ''
TEST_POST_HOOK_RAN=1
'';
checkPhase = ''
runHook preCheck
psql <$sqlPath | grep 'it worked'
@ -21,7 +24,7 @@ stdenv.mkDerivation {
runHook postCheck
'';
installPhase = ''
[[ $TEST_RAN == 1 ]]
[[ $TEST_RAN == 1 && $TEST_POST_HOOK_RAN == 1 ]]
touch $out
'';
}