Skip to content

Commit

Permalink
cli: using fs::create_dir_all in create_migrations_directory
Browse files Browse the repository at this point in the history
To recursively create a directory and all of its parent components if they are missing.
  • Loading branch information
dennybiasiolli committed Feb 19, 2024
1 parent 58ccd4d commit 6cd9b7e
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 2 deletions.
2 changes: 1 addition & 1 deletion diesel_cli/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ fn generate_completions_command(matches: &ArgMatches) {
/// Returns a `DatabaseError::ProjectRootNotFound` if no Cargo.toml is found.
fn create_migrations_directory(path: &Path) -> Result<PathBuf, crate::errors::Error> {
println!("Creating migrations directory at: {}", path.display());
fs::create_dir(path)?;
fs::create_dir_all(path)?;
fs::File::create(path.join(".keep"))?;
Ok(path.to_owned())
}
Expand Down
33 changes: 33 additions & 0 deletions diesel_cli/tests/database_setup.rs
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,39 @@ fn database_setup_respects_migration_dir_by_arg() {
assert!(db.table_exists("users"));
}

#[test]
fn database_setup_respects_migration_nested_dir_by_arg() {
let p = project("database_setup_respects_migration_nested_dir_by_arg")
.folder("foo/bar")
.build();
let db = database(&p.database_url());

p.create_migration_in_directory(
"foo/bar",
"12345_create_users_table",
"CREATE TABLE users ( id INTEGER )",
Some("DROP TABLE users"),
None,
);

// sanity check
assert!(!db.exists());

let result = p
.command("database")
.arg("setup")
.arg("--migration-dir=foo/bar")
.run();

assert!(result.is_success(), "Result was unsuccessful {:?}", result);
assert!(
result.stdout().contains("Running migration 12345"),
"Unexpected stdout {}",
result.stdout()
);
assert!(db.table_exists("users"));
}

#[test]
fn database_setup_respects_migration_dir_by_env() {
let p = project("database_setup_respects_migration_dir_by_env")
Expand Down
2 changes: 1 addition & 1 deletion diesel_cli/tests/support/project_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ impl ProjectBuilder {
File::create(tempdir.path().join("Cargo.toml")).unwrap();

for folder in self.folders {
fs::create_dir(tempdir.path().join(folder)).unwrap();
fs::create_dir_all(tempdir.path().join(folder)).unwrap();
}

for (file, contents) in self.files {
Expand Down

0 comments on commit 6cd9b7e

Please sign in to comment.