Skip to content

Commit 33c563f

Browse files
authored
Merge pull request #8742 from Turbo87/schema-sql
tests/dump_db: Add `schema.sql` to the test
2 parents e972a9b + fefd9a0 commit 33c563f

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

crates/crates_io_test_db/src/lib.rs

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,26 @@ impl TestDatabase {
7979
/// the database is automatically deleted.
8080
#[instrument]
8181
pub fn new() -> TestDatabase {
82+
Self::new_inner(|name, conn| {
83+
let template = TemplateDatabase::instance();
84+
create_database_from_template(name, &template.template_name, conn)
85+
})
86+
}
87+
88+
/// Creates a new Postgres database. Once the `TestDatabase` instance is
89+
/// dropped, the database is automatically deleted.
90+
#[instrument]
91+
pub fn empty() -> TestDatabase {
92+
Self::new_inner(create_database)
93+
}
94+
95+
fn new_inner(f: impl Fn(&str, &mut PgConnection) -> QueryResult<()>) -> TestDatabase {
8296
let template = TemplateDatabase::instance();
8397

8498
let name = format!("{}_{}", template.prefix, generate_name().to_lowercase());
8599

86100
let mut conn = template.get_connection();
87-
create_database_from_template(&name, &template.template_name, &mut conn)
88-
.expect("failed to create test database");
101+
f(&name, &mut conn).expect("Failed to create test database");
89102

90103
let mut url = template.base_url.clone();
91104
url.set_path(&format!("/{name}"));
@@ -131,6 +144,13 @@ fn connect(database_url: &str) -> ConnectionResult<PgConnection> {
131144
PgConnection::establish(database_url)
132145
}
133146

147+
#[instrument(skip(conn))]
148+
fn create_database(name: &str, conn: &mut PgConnection) -> QueryResult<()> {
149+
debug!("Creating new database…");
150+
sql_query(format!("CREATE DATABASE {name}")).execute(conn)?;
151+
Ok(())
152+
}
153+
134154
#[instrument(skip(conn))]
135155
fn create_template_database(name: &str, conn: &mut PgConnection) -> QueryResult<()> {
136156
table! {
@@ -146,8 +166,7 @@ fn create_template_database(name: &str, conn: &mut PgConnection) -> QueryResult<
146166
.get_result(conn)?;
147167

148168
if count == 0 {
149-
debug!("Creating new template database…");
150-
sql_query(format!("CREATE DATABASE {name}")).execute(conn)?;
169+
create_database(name, conn)?;
151170
} else {
152171
debug!(%count, "Skipping template database creation");
153172
}

src/tests/dump_db.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ fn dump_db_and_reimport_dump() {
2121
let directory = dump_db::DumpDirectory::create().unwrap();
2222
directory.populate(db_one.url()).unwrap();
2323

24-
let db_two = TestDatabase::new();
24+
let db_two = TestDatabase::empty();
25+
26+
let schema_script = directory.export_dir.join("schema.sql");
27+
dump_db::run_psql(&schema_script, db_two.url()).unwrap();
2528

2629
let import_script = directory.export_dir.join("import.sql");
2730
dump_db::run_psql(&import_script, db_two.url()).unwrap();

0 commit comments

Comments
 (0)