about summary refs log tree commit diff
path: root/tvix/derivation/src/tests/mod.rs
diff options
context:
space:
mode:
authorJürgen Hahn <juergen_hahn@gmx.net>2022-12-28T09·28+0100
committerjrhahn <mail.jhahn@gmail.com>2022-12-29T14·38+0000
commitbb185b2c6eb8c4e035cddb61be772169df1b0139 (patch)
tree0598b8a1e26d98274c93f52d01b53291e59adb91 /tvix/derivation/src/tests/mod.rs
parent42fe3941c2a02b4b1eb55dad4f83941a2708f77e (diff)
feat(tvix/derivation): serialize Nix Derivation r/5536
This adds a Derivation structure and allows to write it to a structure that implements std::fmt:Write.
The implementation is based on the go-nix version.

Change-Id: Ib54e1202b5c67f5d206b21bc109a751e971064cf
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7659
Reviewed-by: flokli <flokli@flokli.de>
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
Diffstat (limited to '')
-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);
+}