Skip to content

Commit 0beef31

Browse files
committed
refactor: secure and simplify /ledger and /volatile directories handling in DummyImmutablesDbBuilder
1 parent 3d0a0c1 commit 0beef31

File tree

1 file changed

+34
-23
lines changed

1 file changed

+34
-23
lines changed

mithril-common/src/digesters/dummy_immutable_db_builder.rs

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ use std::{
66
path::{Path, PathBuf},
77
};
88

9+
const IMMUTABLE_DIR: &str = "immutable";
10+
const LEDGER_DIR: &str = "ledger";
11+
const VOLATILE_DIR: &str = "volatile";
12+
913
/// A [DummyImmutableDb] builder.
1014
pub struct DummyImmutablesDbBuilder {
1115
dir: PathBuf,
@@ -51,7 +55,7 @@ impl DummyImmutablesDbBuilder {
5155
/// system temp directory, if it exists already it will be cleaned.
5256
pub fn new(dir_name: &str) -> Self {
5357
Self {
54-
dir: Self::get_test_dir(dir_name),
58+
dir: get_test_dir(dir_name),
5559
immutables_to_write: vec![],
5660
non_immutables_to_write: vec![],
5761
append_uncompleted_trio: false,
@@ -130,7 +134,7 @@ impl DummyImmutablesDbBuilder {
130134
if self.append_uncompleted_trio {
131135
write_immutable_trio(
132136
self.immutable_file_size,
133-
&self.dir,
137+
&self.dir.join(IMMUTABLE_DIR),
134138
match immutable_numbers.last() {
135139
None => 0,
136140
Some(last) => last + 1,
@@ -141,40 +145,38 @@ impl DummyImmutablesDbBuilder {
141145
for non_immutable in &self.non_immutables_to_write {
142146
non_immutables_files.push(write_dummy_file(
143147
self.immutable_file_size,
144-
&self.dir,
148+
&self.dir.join(IMMUTABLE_DIR),
145149
non_immutable,
146150
));
147151
}
148152

149-
if !self.ledger_files_to_write.is_empty() {
150-
let ledger_dir = self.dir.parent().unwrap().join("ledger");
151-
std::fs::create_dir_all(&ledger_dir).unwrap();
152-
for filename in &self.ledger_files_to_write {
153-
write_dummy_file(self.ledger_file_size, &ledger_dir, filename);
154-
}
155-
};
156-
157-
if !self.volatile_files_to_write.is_empty() {
158-
let volatile_dir = self.dir.parent().unwrap().join("volatile");
159-
std::fs::create_dir_all(&volatile_dir).unwrap();
160-
for filename in &self.volatile_files_to_write {
161-
write_dummy_file(self.volatile_file_size, &volatile_dir, filename);
162-
}
153+
for filename in &self.ledger_files_to_write {
154+
write_dummy_file(self.ledger_file_size, &self.dir.join(LEDGER_DIR), filename);
155+
}
156+
157+
for filename in &self.volatile_files_to_write {
158+
write_dummy_file(
159+
self.volatile_file_size,
160+
&self.dir.join(VOLATILE_DIR),
161+
filename,
162+
);
163163
}
164164

165165
DummyImmutableDb {
166-
dir: self.dir.clone(),
166+
dir: self.dir.join(IMMUTABLE_DIR),
167167
immutables_files: immutable_numbers
168168
.into_iter()
169-
.flat_map(|ifn| write_immutable_trio(self.immutable_file_size, &self.dir, ifn))
169+
.flat_map(|ifn| {
170+
write_immutable_trio(
171+
self.immutable_file_size,
172+
&self.dir.join(IMMUTABLE_DIR),
173+
ifn,
174+
)
175+
})
170176
.collect::<Vec<_>>(),
171177
non_immutables_files,
172178
}
173179
}
174-
175-
fn get_test_dir(subdir_name: &str) -> PathBuf {
176-
TempDir::create(subdir_name, "immutable")
177-
}
178180
}
179181

180182
fn write_immutable_trio(
@@ -213,3 +215,12 @@ fn write_dummy_file(optional_size: Option<u64>, dir: &Path, filename: &str) -> P
213215

214216
file
215217
}
218+
219+
fn get_test_dir(subdir_name: &str) -> PathBuf {
220+
let db_dir = TempDir::create("test_cardano_db", subdir_name);
221+
for subdir_name in [LEDGER_DIR, IMMUTABLE_DIR, VOLATILE_DIR] {
222+
std::fs::create_dir(db_dir.join(subdir_name)).unwrap();
223+
}
224+
225+
db_dir
226+
}

0 commit comments

Comments
 (0)