From ae0f3b0b02b78d2e802f8690352cc0c2333583f3 Mon Sep 17 00:00:00 2001 From: Lucien Greathouse Date: Thu, 3 Oct 2019 17:34:33 -0700 Subject: [PATCH] Assign contributing paths in simple cases for snapshots --- src/snapshot_middleware/csv.rs | 23 ++++++------------- src/snapshot_middleware/rbxlx.rs | 2 +- src/snapshot_middleware/rbxm.rs | 2 +- src/snapshot_middleware/rbxmx.rs | 2 +- .../snapshots/test__csv_from_imfs.snap | 17 ++++++++++++++ .../snapshots/test__instance_from_imfs.snap | 17 ++++++++++++++ src/snapshot_middleware/txt.rs | 19 ++++++--------- 7 files changed, 51 insertions(+), 31 deletions(-) create mode 100644 src/snapshot_middleware/snapshots/test__csv_from_imfs.snap create mode 100644 src/snapshot_middleware/snapshots/test__instance_from_imfs.snap diff --git a/src/snapshot_middleware/csv.rs b/src/snapshot_middleware/csv.rs index 804a03e5..29a07b59 100644 --- a/src/snapshot_middleware/csv.rs +++ b/src/snapshot_middleware/csv.rs @@ -6,7 +6,7 @@ use serde::Serialize; use crate::{ imfs::{Imfs, ImfsEntry, ImfsFetcher}, - snapshot::InstanceSnapshot, + snapshot::{InstanceMetadata, InstanceSnapshot}, }; use super::middleware::{SnapshotFileResult, SnapshotInstanceResult, SnapshotMiddleware}; @@ -39,7 +39,10 @@ impl SnapshotMiddleware for SnapshotCsv { Ok(Some(InstanceSnapshot { snapshot_id: None, - metadata: Default::default(), // TODO + metadata: InstanceMetadata { + contributing_paths: vec![entry.path().to_path_buf()], + ..Default::default() + }, name: Cow::Owned(instance_name), class_name: Cow::Borrowed("LocalizationTable"), properties: hashmap! { @@ -137,6 +140,7 @@ mod test { use super::*; use crate::imfs::{ImfsDebug, ImfsSnapshot, NoopFetcher}; + use insta::assert_yaml_snapshot; #[test] fn csv_from_imfs() { @@ -152,19 +156,6 @@ Ack,Ack!,,An exclamation of despair,¡Ay!"#, let entry = imfs.get("/foo.csv").unwrap(); let instance_snapshot = SnapshotCsv::from_imfs(&mut imfs, &entry).unwrap().unwrap(); - let expected_contents = - r#"[{"key":"Ack","example":"An exclamation of despair","source":"Ack!","values":{"es":"¡Ay!"}}]"#; - - assert_eq!(instance_snapshot.name, "foo"); - assert_eq!(instance_snapshot.class_name, "LocalizationTable"); - assert_eq!(instance_snapshot.children, Vec::new()); - assert_eq!( - instance_snapshot.properties, - hashmap! { - "Contents".to_owned() => RbxValue::String { - value: expected_contents.to_owned(), - }, - } - ); + assert_yaml_snapshot!(instance_snapshot); } } diff --git a/src/snapshot_middleware/rbxlx.rs b/src/snapshot_middleware/rbxlx.rs index 66282fc8..9408aa74 100644 --- a/src/snapshot_middleware/rbxlx.rs +++ b/src/snapshot_middleware/rbxlx.rs @@ -43,7 +43,7 @@ impl SnapshotMiddleware for SnapshotRbxlx { let mut snapshot = InstanceSnapshot::from_tree(&temp_tree, root_id); snapshot.name = Cow::Owned(instance_name); - // TODO: Assign snapshot.source + snapshot.metadata.contributing_paths = vec![entry.path().to_path_buf()]; Ok(Some(snapshot)) } diff --git a/src/snapshot_middleware/rbxm.rs b/src/snapshot_middleware/rbxm.rs index d14f7279..02e13ad9 100644 --- a/src/snapshot_middleware/rbxm.rs +++ b/src/snapshot_middleware/rbxm.rs @@ -49,7 +49,7 @@ impl SnapshotMiddleware for SnapshotRbxm { if children.len() == 1 { let mut snapshot = InstanceSnapshot::from_tree(&temp_tree, children[0]); snapshot.name = Cow::Owned(instance_name); - // TODO: Assign snapshot.source + snapshot.metadata.contributing_paths = vec![entry.path().to_path_buf()]; Ok(Some(snapshot)) } else { diff --git a/src/snapshot_middleware/rbxmx.rs b/src/snapshot_middleware/rbxmx.rs index fde908bd..fbea42f8 100644 --- a/src/snapshot_middleware/rbxmx.rs +++ b/src/snapshot_middleware/rbxmx.rs @@ -45,7 +45,7 @@ impl SnapshotMiddleware for SnapshotRbxmx { if children.len() == 1 { let mut snapshot = InstanceSnapshot::from_tree(&temp_tree, children[0]); snapshot.name = Cow::Owned(instance_name); - // TODO: Assign snapshot.source + snapshot.metadata.contributing_paths = vec![entry.path().to_path_buf()]; Ok(Some(snapshot)) } else { diff --git a/src/snapshot_middleware/snapshots/test__csv_from_imfs.snap b/src/snapshot_middleware/snapshots/test__csv_from_imfs.snap new file mode 100644 index 00000000..f932eadc --- /dev/null +++ b/src/snapshot_middleware/snapshots/test__csv_from_imfs.snap @@ -0,0 +1,17 @@ +--- +source: src/snapshot_middleware/csv.rs +expression: instance_snapshot +--- +snapshot_id: ~ +metadata: + ignore_unknown_instances: false + contributing_paths: + - /foo.csv + project_node: ~ +name: foo +class_name: LocalizationTable +properties: + Contents: + Type: String + Value: "[{\"key\":\"Ack\",\"example\":\"An exclamation of despair\",\"source\":\"Ack!\",\"values\":{\"es\":\"¡Ay!\"}}]" +children: [] diff --git a/src/snapshot_middleware/snapshots/test__instance_from_imfs.snap b/src/snapshot_middleware/snapshots/test__instance_from_imfs.snap new file mode 100644 index 00000000..5d7dca15 --- /dev/null +++ b/src/snapshot_middleware/snapshots/test__instance_from_imfs.snap @@ -0,0 +1,17 @@ +--- +source: src/snapshot_middleware/txt.rs +expression: instance_snapshot +--- +snapshot_id: ~ +metadata: + ignore_unknown_instances: false + contributing_paths: + - /foo.txt + project_node: ~ +name: foo +class_name: StringValue +properties: + Value: + Type: String + Value: Hello there! +children: [] diff --git a/src/snapshot_middleware/txt.rs b/src/snapshot_middleware/txt.rs index f35495ae..4f085641 100644 --- a/src/snapshot_middleware/txt.rs +++ b/src/snapshot_middleware/txt.rs @@ -5,7 +5,7 @@ use rbx_dom_weak::{RbxId, RbxTree, RbxValue}; use crate::{ imfs::{FileSnapshot, Imfs, ImfsEntry, ImfsFetcher, ImfsSnapshot}, - snapshot::InstanceSnapshot, + snapshot::{InstanceMetadata, InstanceSnapshot}, }; use super::middleware::{SnapshotFileResult, SnapshotInstanceResult, SnapshotMiddleware}; @@ -51,7 +51,10 @@ impl SnapshotMiddleware for SnapshotTxt { Ok(Some(InstanceSnapshot { snapshot_id: None, - metadata: Default::default(), // TODO + metadata: InstanceMetadata { + contributing_paths: vec![entry.path().to_path_buf()], + ..Default::default() + }, name: Cow::Owned(instance_name), class_name: Cow::Borrowed("StringValue"), properties, @@ -91,6 +94,7 @@ impl SnapshotMiddleware for SnapshotTxt { mod test { use super::*; + use insta::assert_yaml_snapshot; use maplit::hashmap; use rbx_dom_weak::RbxInstanceProperties; @@ -106,16 +110,7 @@ mod test { let entry = imfs.get("/foo.txt").unwrap(); let instance_snapshot = SnapshotTxt::from_imfs(&mut imfs, &entry).unwrap().unwrap(); - assert_eq!(instance_snapshot.name, "foo"); - assert_eq!(instance_snapshot.class_name, "StringValue"); - assert_eq!( - instance_snapshot.properties, - hashmap! { - "Value".to_owned() => RbxValue::String { - value: "Hello there!".to_owned(), - }, - } - ); + assert_yaml_snapshot!(instance_snapshot); } #[test]