about summary refs log tree commit diff
path: root/tvix/derivation/src/tests/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tvix/derivation/src/tests/mod.rs')
-rw-r--r--tvix/derivation/src/tests/mod.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/tvix/derivation/src/tests/mod.rs b/tvix/derivation/src/tests/mod.rs
new file mode 100644
index 0000000000..9c8ffd061c
--- /dev/null
+++ b/tvix/derivation/src/tests/mod.rs
@@ -0,0 +1,32 @@
+use super::{serialize_derivation, Derivation};
+use std::fs::File;
+use std::io::Read;
+use std::path::Path;
+use test_generator::test_resources;
+
+fn read_file(path: &str) -> String {
+    let path = Path::new(path);
+    let mut file = File::open(path).unwrap();
+    let mut data = String::new();
+
+    file.read_to_string(&mut data).unwrap();
+
+    return data;
+}
+
+fn assert_derivation_ok(path_to_drv_file: &str) {
+    let data = read_file(&format!("{}.json", path_to_drv_file));
+    let derivation: Derivation = serde_json::from_str(&data).expect("JSON was not well-formatted");
+
+    let mut serialized_derivation = String::new();
+    serialize_derivation(derivation, &mut serialized_derivation).unwrap();
+
+    let expected = read_file(path_to_drv_file);
+
+    assert_eq!(expected, serialized_derivation);
+}
+
+#[test_resources("src/tests/derivation_tests/*.drv")]
+fn derivation_files_ok(path: &str) {
+    assert_derivation_ok(path);
+}