tmp-postgres provides functions creating a temporary postgres instance.
By default it will create a temporary directory for the data,
a random port for listening and a temporary directory for a UNIX
domain socket.
Here is an example using the expection safe with function:
with $ \db -> bracket (connectPostgreSQL (toConnectionString db)) close $ \conn ->
execute_ conn "CREATE TABLE foo (id int)"
MacOS and Linux are support. Windows is not.
Requires PostgreSQL 9.3+
WARNING!!
Ubuntu's PostgreSQL installation does not put initdb on the PATH. We need to add it manually. The necessary binaries are in the /usr/lib/postgresql/VERSION/bin/ directory, and should be added to the PATH
echo "export PATH=$PATH:/usr/lib/postgresql/VERSION/bin/" >> /home/ubuntu/.bashrc
[
Skip to Readme]
| Versions |
0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.0.4, 0.1.0.5, 0.1.0.6, 0.1.0.7, 0.1.0.8, 0.1.1.0, 0.1.1.1, 0.1.2.0, 0.1.2.1, 0.1.2.2, 0.2.0.0, 0.3.0.0, 0.3.0.1, 1.0.0.0, 1.0.0.0, 1.0.0.1, 1.0.0.2, 1.0.1.0, 1.2.0.0, 1.2.0.1, 1.2.1.0, 1.3.0.0, 1.4.0.0, 1.5.0.0, 1.6.0.0, 1.7.0.0, 1.7.0.1, 1.7.1.0, 1.8.0.0, 1.9.0.0, 1.9.0.1, 1.9.0.2, 1.10.0.0, 1.11.0.0, 1.12.0.0, 1.12.0.1, 1.13.0.0, 1.13.1.0, 1.13.1.1, 1.13.1.2, 1.14.0.0, 1.14.0.1, 1.14.1.0, 1.15.0.0, 1.15.1.0, 1.15.1.1, 1.16.0.0, 1.16.1.0, 1.17.0.0, 1.18.0.0, 1.19.0.0, 1.19.0.1, 1.20.0.0, 1.20.0.1, 1.21.0.0, 1.21.1.0, 1.21.1.1, 1.22.0.0, 1.23.0.0, 1.23.0.1, 1.23.0.2, 1.23.0.3, 1.24.0.0, 1.25.0.0, 1.25.0.1, 1.26.0.0, 1.27.0.0, 1.27.0.1, 1.27.0.2, 1.27.0.3, 1.27.0.4, 1.28.0.0, 1.28.1.0, 1.29.0.0, 1.29.0.1, 1.30.0.0, 1.30.0.1, 1.31.0.0, 1.31.0.1, 1.31.0.2, 1.31.0.3, 1.32.0.0, 1.32.0.1, 1.33.0.0, 1.34.0.0, 1.34.0.1, 1.34.1.0 |
| Change log |
None available |
| Dependencies |
async, base (>=4.6 && <5), bytestring, directory, either, generic-monoid, network, port-utils, postgres-options, postgresql-simple, postgresql-simple-opts, process (>=1.2.0.0), temporary, transformers, unix [details] |
| License |
BSD-3-Clause |
| Copyright |
2017-2019 Jonathan Fischoff |
| Author |
Jonathan Fischoff |
| Maintainer |
[email protected] |
| Category |
Web |
| Home page |
https://github.com/jfischoff/tmp-postgres#readme
|
| Source repo |
head: git clone https://github.com/jfischoff/tmp-postgres |
| Uploaded |
by JonathanFischoff at 2019-10-31T21:00:11Z |

tmp-postgres
tmp-postgres provides functions creating a temporary @postgres@ instance.
By default it will create a temporary directory for the data,
a random port for listening and a temporary directory for a UNIX
domain socket.
Here is an example using the expection safe 'with' function:
with $ \db -> bracket (connectPostgreSQL (toConnectionString db)) close $ \conn ->
execute_ conn "CREATE TABLE foo (id int)"
To extend or override the defaults use withPlan (or startWith).
tmp-postgres ultimately calls initdb, postgres and createdb.
All of the command line, environment variables and configuration files
that are generated by default for the respective executables can be
extended or overrided.
All tmp-postgres by default is most useful for creating tests by
configuring "tmp-postgres" differently it can be used for other purposes.
- By disabling
initdb and createdb one could run a temporary
postgres on a base backup to test a migration.
- By using the
stopPostgres and withRestart functions one can test
backup strategies.
The level of custom configuration is extensive but with great power comes
ability to screw everything up. tmp-postgres doesn't validate any custom
configuration and one can easily create a Config that would not allow
postgres to start.
Installation
macOS
$ brew install postgres
$ stack install tmp-postgres
Ubuntu
Ubuntu's PostgreSQL installation does not put initdb on the PATH. We need to add it manually.
$ sudo apt-get install postgresql-VERSION
$ echo "export PATH=$PATH:/usr/lib/postgresql/VERSION/bin/" >> /home/ubuntu/.bashrc
$ stack install tmp-postgres