test(pg-from): generate sql matches to expected sql
This commit is contained in:
@@ -6,3 +6,7 @@ edition = "2021"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
rusqlite = { version = "0.32.0", features = ["bundled"] }
|
rusqlite = { version = "0.32.0", features = ["bundled"] }
|
||||||
tempfile = "3.16.0"
|
tempfile = "3.16.0"
|
||||||
|
|
||||||
|
[[test]]
|
||||||
|
name = "test_generate_sql"
|
||||||
|
path = "test/generate_sql.rs"
|
||||||
|
|||||||
1
package/postgres/pg-from/test/fixture/.gitignore
vendored
Normal file
1
package/postgres/pg-from/test/fixture/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
generated.sql
|
||||||
62
package/postgres/pg-from/test/generate_sql.rs
Normal file
62
package/postgres/pg-from/test/generate_sql.rs
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
use std::process::Command;
|
||||||
|
use std::fs;
|
||||||
|
use std::path::Path;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn generated_sql_matches_expected() {
|
||||||
|
// Adjust this path if your fixture folder is located somewhere else.
|
||||||
|
let fixture_dir = "test/fixture";
|
||||||
|
let input_db = format!("{}/test.db", fixture_dir);
|
||||||
|
let expected_sql_path = format!("{}/expected.sql", fixture_dir);
|
||||||
|
let output_sql_path = format!("{}/generated.sql", fixture_dir);
|
||||||
|
|
||||||
|
// Remove any previously generated file.
|
||||||
|
let _ = fs::remove_file(&output_sql_path);
|
||||||
|
|
||||||
|
// Check that fixture files exist.
|
||||||
|
assert!(
|
||||||
|
Path::new(&input_db).exists(),
|
||||||
|
"Input DB does not exist: {}",
|
||||||
|
input_db
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
Path::new(&expected_sql_path).exists(),
|
||||||
|
"Expected SQL does not exist: {}",
|
||||||
|
expected_sql_path
|
||||||
|
);
|
||||||
|
|
||||||
|
// The following env var is set automatically by Cargo when building binaries.
|
||||||
|
// It points to the location of the built binary (assuming your binary is named "pg-from").
|
||||||
|
let exe = env!("CARGO_BIN_EXE_pg-from");
|
||||||
|
|
||||||
|
// Run your binary with the required arguments.
|
||||||
|
let status = Command::new(exe)
|
||||||
|
.args(&[
|
||||||
|
&input_db,
|
||||||
|
&output_sql_path,
|
||||||
|
"legacy",
|
||||||
|
"--inherit=created_at",
|
||||||
|
"--inherit=updated_at",
|
||||||
|
])
|
||||||
|
.status()
|
||||||
|
.expect("Failed to execute pg-from binary");
|
||||||
|
|
||||||
|
assert!(
|
||||||
|
status.success(),
|
||||||
|
"pg-from did not run successfully (exit status: {:?})",
|
||||||
|
status.code()
|
||||||
|
);
|
||||||
|
|
||||||
|
// Read the generated output and the expected output.
|
||||||
|
let generated = fs::read_to_string(&output_sql_path)
|
||||||
|
.expect("Failed to read generated SQL file");
|
||||||
|
let expected = fs::read_to_string(&expected_sql_path)
|
||||||
|
.expect("Failed to read expected SQL file");
|
||||||
|
|
||||||
|
// Compare the two strings.
|
||||||
|
assert_eq!(
|
||||||
|
generated, expected,
|
||||||
|
"Generated SQL does not match expected SQL"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user