From 56f5a6136207064e56b41f61234f2041a14748f1 Mon Sep 17 00:00:00 2001 From: Lucien Greathouse Date: Wed, 16 Oct 2019 16:55:55 -0700 Subject: [PATCH] Add test for folder of scripts being mutated --- .../serve_test__empty-2.snap | 4 +- .../serve_test__empty.snap | 6 +-- .../serve_test__just_txt-2.snap | 4 +- .../serve_test__just_txt.snap | 6 +-- .../serve_test__scripts-2.snap | 42 +++++++++++++++++++ .../serve_test__scripts-3.snap | 18 ++++++++ .../serve_test__scripts-4.snap | 42 +++++++++++++++++++ .../serve_test__scripts.snap | 9 ++++ rojo-test/serve-tests/scripts/bar.server.lua | 1 + rojo-test/serve-tests/scripts/foo.lua | 1 + rojo-test/src/serve_test.rs | 32 +++++++++++--- rojo-test/src/serve_util.rs | 17 ++++++++ 12 files changed, 167 insertions(+), 15 deletions(-) create mode 100644 rojo-test/serve-test-snapshots/serve_test__scripts-2.snap create mode 100644 rojo-test/serve-test-snapshots/serve_test__scripts-3.snap create mode 100644 rojo-test/serve-test-snapshots/serve_test__scripts-4.snap create mode 100644 rojo-test/serve-test-snapshots/serve_test__scripts.snap create mode 100644 rojo-test/serve-tests/scripts/bar.server.lua create mode 100644 rojo-test/serve-tests/scripts/foo.lua diff --git a/rojo-test/serve-test-snapshots/serve_test__empty-2.snap b/rojo-test/serve-test-snapshots/serve_test__empty-2.snap index 7cd6e0f9..4535414a 100644 --- a/rojo-test/serve-test-snapshots/serve_test__empty-2.snap +++ b/rojo-test/serve-test-snapshots/serve_test__empty-2.snap @@ -2,8 +2,6 @@ source: rojo-test/src/serve_test.rs expression: read_result --- -sessionId: id-1 -messageCursor: 0 instances: id-2: Id: id-2 @@ -14,3 +12,5 @@ instances: Children: [] Metadata: ignoreUnknownInstances: true +messageCursor: 0 +sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/serve_test__empty.snap b/rojo-test/serve-test-snapshots/serve_test__empty.snap index 5f830821..cb619dc5 100644 --- a/rojo-test/serve-test-snapshots/serve_test__empty.snap +++ b/rojo-test/serve-test-snapshots/serve_test__empty.snap @@ -2,8 +2,8 @@ source: rojo-test/src/serve_test.rs expression: info --- -sessionId: id-1 -serverVersion: 0.6.0-dev -protocolVersion: 3 expectedPlaceIds: ~ +protocolVersion: 3 rootInstanceId: id-2 +serverVersion: 0.6.0-dev +sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/serve_test__just_txt-2.snap b/rojo-test/serve-test-snapshots/serve_test__just_txt-2.snap index 03a0565f..541ce33e 100644 --- a/rojo-test/serve-test-snapshots/serve_test__just_txt-2.snap +++ b/rojo-test/serve-test-snapshots/serve_test__just_txt-2.snap @@ -2,8 +2,6 @@ source: rojo-test/src/serve_test.rs expression: read_result --- -sessionId: id-1 -messageCursor: 0 instances: id-2: Id: id-2 @@ -17,3 +15,5 @@ instances: Children: [] Metadata: ignoreUnknownInstances: false +messageCursor: 0 +sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/serve_test__just_txt.snap b/rojo-test/serve-test-snapshots/serve_test__just_txt.snap index 5f830821..cb619dc5 100644 --- a/rojo-test/serve-test-snapshots/serve_test__just_txt.snap +++ b/rojo-test/serve-test-snapshots/serve_test__just_txt.snap @@ -2,8 +2,8 @@ source: rojo-test/src/serve_test.rs expression: info --- -sessionId: id-1 -serverVersion: 0.6.0-dev -protocolVersion: 3 expectedPlaceIds: ~ +protocolVersion: 3 rootInstanceId: id-2 +serverVersion: 0.6.0-dev +sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/serve_test__scripts-2.snap b/rojo-test/serve-test-snapshots/serve_test__scripts-2.snap new file mode 100644 index 00000000..e012c3b9 --- /dev/null +++ b/rojo-test/serve-test-snapshots/serve_test__scripts-2.snap @@ -0,0 +1,42 @@ +--- +source: rojo-test/src/serve_test.rs +expression: read_result +--- +instances: + id-2: + Id: id-2 + Parent: ~ + Name: scripts + ClassName: Folder + Properties: {} + Children: + - id-3 + - id-4 + Metadata: + ignoreUnknownInstances: false + id-3: + Id: id-3 + Parent: id-2 + Name: bar + ClassName: Script + Properties: + Source: + Type: String + Value: "-- Hello, from bar!" + Children: [] + Metadata: + ignoreUnknownInstances: false + id-4: + Id: id-4 + Parent: id-2 + Name: foo + ClassName: ModuleScript + Properties: + Source: + Type: String + Value: "-- Hello, from foo!" + Children: [] + Metadata: + ignoreUnknownInstances: false +messageCursor: 0 +sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/serve_test__scripts-3.snap b/rojo-test/serve-test-snapshots/serve_test__scripts-3.snap new file mode 100644 index 00000000..9befdbad --- /dev/null +++ b/rojo-test/serve-test-snapshots/serve_test__scripts-3.snap @@ -0,0 +1,18 @@ +--- +source: rojo-test/src/serve_test.rs +expression: subscribe_result +--- +messageCursor: 1 +messages: + - removedInstances: [] + addedInstances: {} + updatedInstances: + - id: id-4 + changedName: ~ + changedClassName: ~ + changedProperties: + Source: + Type: String + Value: Updated foo! + changedMetadata: ~ +sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/serve_test__scripts-4.snap b/rojo-test/serve-test-snapshots/serve_test__scripts-4.snap new file mode 100644 index 00000000..e21e3002 --- /dev/null +++ b/rojo-test/serve-test-snapshots/serve_test__scripts-4.snap @@ -0,0 +1,42 @@ +--- +source: rojo-test/src/serve_test.rs +expression: read_result +--- +instances: + id-2: + Id: id-2 + Parent: ~ + Name: scripts + ClassName: Folder + Properties: {} + Children: + - id-3 + - id-4 + Metadata: + ignoreUnknownInstances: false + id-3: + Id: id-3 + Parent: id-2 + Name: bar + ClassName: Script + Properties: + Source: + Type: String + Value: "-- Hello, from bar!" + Children: [] + Metadata: + ignoreUnknownInstances: false + id-4: + Id: id-4 + Parent: id-2 + Name: foo + ClassName: ModuleScript + Properties: + Source: + Type: String + Value: Updated foo! + Children: [] + Metadata: + ignoreUnknownInstances: false +messageCursor: 1 +sessionId: id-1 diff --git a/rojo-test/serve-test-snapshots/serve_test__scripts.snap b/rojo-test/serve-test-snapshots/serve_test__scripts.snap new file mode 100644 index 00000000..cb619dc5 --- /dev/null +++ b/rojo-test/serve-test-snapshots/serve_test__scripts.snap @@ -0,0 +1,9 @@ +--- +source: rojo-test/src/serve_test.rs +expression: info +--- +expectedPlaceIds: ~ +protocolVersion: 3 +rootInstanceId: id-2 +serverVersion: 0.6.0-dev +sessionId: id-1 diff --git a/rojo-test/serve-tests/scripts/bar.server.lua b/rojo-test/serve-tests/scripts/bar.server.lua new file mode 100644 index 00000000..ae98ab69 --- /dev/null +++ b/rojo-test/serve-tests/scripts/bar.server.lua @@ -0,0 +1 @@ +-- Hello, from bar! \ No newline at end of file diff --git a/rojo-test/serve-tests/scripts/foo.lua b/rojo-test/serve-tests/scripts/foo.lua new file mode 100644 index 00000000..462ac790 --- /dev/null +++ b/rojo-test/serve-tests/scripts/foo.lua @@ -0,0 +1 @@ +-- Hello, from foo! \ No newline at end of file diff --git a/rojo-test/src/serve_test.rs b/rojo-test/src/serve_test.rs index e488cebc..bdcc65ba 100644 --- a/rojo-test/src/serve_test.rs +++ b/rojo-test/src/serve_test.rs @@ -2,7 +2,7 @@ use std::fs; use insta::assert_yaml_snapshot; -use crate::serve_util::run_serve_test; +use crate::serve_util::{intern_read_response, run_serve_test}; #[test] fn empty() { @@ -12,15 +12,37 @@ fn empty() { let root_id = info.root_instance_id; let info = redactions.redacted_yaml(info); - assert_yaml_snapshot!(info); let read_result = session.get_api_read(root_id).unwrap(); - - redactions.intern_iter(read_result.instances.keys().copied()); - + intern_read_response(&mut redactions, &read_result, root_id); let read_result = redactions.redacted_yaml(read_result); + assert_yaml_snapshot!(read_result); + }); +} +#[test] +fn scripts() { + run_serve_test("scripts", |session, mut redactions| { + let info = session.get_api_rojo().unwrap(); + let root_id = info.root_instance_id; + + let info = redactions.redacted_yaml(info); + assert_yaml_snapshot!(info); + + let read_result = session.get_api_read(root_id).unwrap(); + intern_read_response(&mut redactions, &read_result, root_id); + let read_result = redactions.redacted_yaml(read_result); + assert_yaml_snapshot!(read_result); + + fs::write(session.path().join("foo.lua"), "Updated foo!").unwrap(); + + let subscribe_result = session.get_api_subscribe(0).unwrap(); + let subscribe_result = redactions.redacted_yaml(subscribe_result); + assert_yaml_snapshot!(subscribe_result); + + let read_result = session.get_api_read(root_id).unwrap(); + let read_result = redactions.redacted_yaml(read_result); assert_yaml_snapshot!(read_result); }); } diff --git a/rojo-test/src/serve_util.rs b/rojo-test/src/serve_util.rs index 97e307ab..e62e63ba 100644 --- a/rojo-test/src/serve_util.rs +++ b/rojo-test/src/serve_util.rs @@ -22,6 +22,7 @@ pub fn run_serve_test(test_name: &str, callback: impl FnOnce(TestServeSession, R let snapshot_path = Path::new(env!("CARGO_MANIFEST_DIR")).join("serve-test-snapshots"); settings.set_snapshot_path(snapshot_path); + settings.set_sort_maps(true); let mut redactions = RedactionMap::new(); @@ -34,6 +35,22 @@ pub fn run_serve_test(test_name: &str, callback: impl FnOnce(TestServeSession, R settings.bind(move || callback(session, redactions)); } +/// Intern the response to Rojo's read API, doing traversal in a deterministic +/// order. +pub fn intern_read_response( + redactions: &mut RedactionMap, + response: &ReadResponse, + root_id: RbxId, +) { + redactions.intern(root_id); + + let root_instance = response.instances.get(&root_id).unwrap(); + + for &child_id in root_instance.children.iter() { + intern_read_response(redactions, response, child_id); + } +} + fn get_port_number() -> usize { static NEXT_PORT_NUMBER: AtomicUsize = AtomicUsize::new(35103);