postgresql_embedded 0.20.2

Install and run a PostgreSQL database locally on Linux, MacOS or Windows. PostgreSQL can be bundled with your application, or downloaded on demand.
Documentation
use postgresql_commands::pg_dump::PgDumpBuilder;
use postgresql_commands::psql::PsqlBuilder;
use postgresql_commands::{CommandBuilder, CommandExecutor};
use postgresql_embedded::PostgreSQL;
use std::fs;
use tempfile::NamedTempFile;
use test_log::test;

#[test(tokio::test)]
async fn dump_command() -> anyhow::Result<()> {
    let mut postgresql = PostgreSQL::default();

    postgresql.setup().await?;
    postgresql.start().await?;
    let settings = postgresql.settings();

    let database_name = "test";
    postgresql.create_database(database_name).await?;

    let mut psql = PsqlBuilder::from(settings)
        .command("CREATE TABLE person42 (id INTEGER, name VARCHAR(20))")
        .dbname(database_name)
        .no_psqlrc()
        .no_align()
        .tuples_only()
        .build();
    let (_stdout, _stderr) = psql.execute()?;

    let temp_file = NamedTempFile::new()?;
    let file = temp_file.as_ref();
    let mut pgdump = PgDumpBuilder::from(settings)
        .dbname(database_name)
        .schema_only()
        .file(file.to_string_lossy().to_string())
        .build();
    let (_stdout, _stderr) = pgdump.execute()?;

    let contents = fs::read_to_string(file)?;
    assert!(contents.contains("person42"));

    Ok(())
}