From 246fd5f6c45b403164ca5c87053b125e4495399d Mon Sep 17 00:00:00 2001 From: Lucien Greathouse Date: Mon, 18 Nov 2019 18:28:36 -0800 Subject: [PATCH] Add init scripts as relevant paths to all directories. This doesn't feel ideal. Though it's true that all directories are influenced by any init scripts they have, the directory middleware shouldn't need to know about Lua. I don't really want to go back into working on the middleware chain since it mostly feels like busywork when there are other things to build on in Rojo. also all of this feels really complicated --- src/snapshot_middleware/dir.rs | 13 ++++++++++- src/snapshot_middleware/lua.rs | 18 +++++++++++++++ .../snapshots/test__empty_folder.snap | 3 +++ .../snapshots/test__folder_in_folder.snap | 6 +++++ .../snapshots/test__init_module_from_vfs.snap | 22 +++++++++++++++++++ ...rve_session__change_script_meta_after.snap | 3 +++ ...ve_session__change_script_meta_before.snap | 3 +++ src/snapshots/serve_session__just_folder.snap | 3 +++ .../serve_session__project_with_folder.snap | 3 +++ .../serve_session__script_with_meta.snap | 3 +++ 10 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 src/snapshot_middleware/snapshots/test__init_module_from_vfs.snap diff --git a/src/snapshot_middleware/dir.rs b/src/snapshot_middleware/dir.rs index 7d1bed84..63303717 100644 --- a/src/snapshot_middleware/dir.rs +++ b/src/snapshot_middleware/dir.rs @@ -47,11 +47,22 @@ impl SnapshotMiddleware for SnapshotDir { let meta_path = entry.path().join("init.meta.json"); + let relevant_paths = vec![ + entry.path().to_path_buf(), + meta_path.clone(), + // TODO: We shouldn't need to know about Lua existing in this + // middleware. Should we figure out a way for that function to add + // relevant paths to this middleware? + entry.path().join("init.lua"), + entry.path().join("init.server.lua"), + entry.path().join("init.client.lua"), + ]; + let mut snapshot = InstanceSnapshot { snapshot_id: None, metadata: InstanceMetadata { instigating_source: Some(entry.path().to_path_buf().into()), - relevant_paths: vec![entry.path().to_path_buf(), meta_path.clone()], + relevant_paths, ..Default::default() }, name: Cow::Owned(instance_name), diff --git a/src/snapshot_middleware/lua.rs b/src/snapshot_middleware/lua.rs index abeb5773..d5239cb3 100644 --- a/src/snapshot_middleware/lua.rs +++ b/src/snapshot_middleware/lua.rs @@ -204,6 +204,24 @@ mod test { assert_yaml_snapshot!(instance_snapshot); } + #[test] + fn init_module_from_vfs() { + let mut vfs = Vfs::new(NoopFetcher); + let dir = VfsSnapshot::dir(hashmap! { + "init.lua" => VfsSnapshot::file("Hello!"), + }); + + vfs.debug_load_snapshot("/root", dir); + + let entry = vfs.get("/root").unwrap(); + let instance_snapshot = + SnapshotLua::from_vfs(&mut InstanceSnapshotContext::default(), &mut vfs, &entry) + .unwrap() + .unwrap(); + + assert_yaml_snapshot!(instance_snapshot); + } + #[test] fn module_with_meta() { let mut vfs = Vfs::new(NoopFetcher); diff --git a/src/snapshot_middleware/snapshots/test__empty_folder.snap b/src/snapshot_middleware/snapshots/test__empty_folder.snap index 8001ff69..8728c624 100644 --- a/src/snapshot_middleware/snapshots/test__empty_folder.snap +++ b/src/snapshot_middleware/snapshots/test__empty_folder.snap @@ -10,6 +10,9 @@ metadata: relevant_paths: - /foo - /foo/init.meta.json + - /foo/init.lua + - /foo/init.server.lua + - /foo/init.client.lua name: foo class_name: Folder properties: {} diff --git a/src/snapshot_middleware/snapshots/test__folder_in_folder.snap b/src/snapshot_middleware/snapshots/test__folder_in_folder.snap index 01c6b288..0f0af127 100644 --- a/src/snapshot_middleware/snapshots/test__folder_in_folder.snap +++ b/src/snapshot_middleware/snapshots/test__folder_in_folder.snap @@ -10,6 +10,9 @@ metadata: relevant_paths: - /foo - /foo/init.meta.json + - /foo/init.lua + - /foo/init.server.lua + - /foo/init.client.lua name: foo class_name: Folder properties: {} @@ -22,6 +25,9 @@ children: relevant_paths: - /foo/Child - /foo/Child/init.meta.json + - /foo/Child/init.lua + - /foo/Child/init.server.lua + - /foo/Child/init.client.lua name: Child class_name: Folder properties: {} diff --git a/src/snapshot_middleware/snapshots/test__init_module_from_vfs.snap b/src/snapshot_middleware/snapshots/test__init_module_from_vfs.snap new file mode 100644 index 00000000..9321a249 --- /dev/null +++ b/src/snapshot_middleware/snapshots/test__init_module_from_vfs.snap @@ -0,0 +1,22 @@ +--- +source: src/snapshot_middleware/lua.rs +expression: instance_snapshot +--- +snapshot_id: ~ +metadata: + ignore_unknown_instances: false + instigating_source: + Path: /root + relevant_paths: + - /root + - /root/init.meta.json + - /root/init.lua + - /root/init.server.lua + - /root/init.client.lua +name: root +class_name: ModuleScript +properties: + Source: + Type: String + Value: Hello! +children: [] diff --git a/src/snapshots/serve_session__change_script_meta_after.snap b/src/snapshots/serve_session__change_script_meta_after.snap index 386be8bf..02dd0fbe 100644 --- a/src/snapshots/serve_session__change_script_meta_after.snap +++ b/src/snapshots/serve_session__change_script_meta_after.snap @@ -13,6 +13,9 @@ metadata: relevant_paths: - /root - /root/init.meta.json + - /root/init.lua + - /root/init.server.lua + - /root/init.client.lua children: - id: id-2 name: test diff --git a/src/snapshots/serve_session__change_script_meta_before.snap b/src/snapshots/serve_session__change_script_meta_before.snap index 9acef5ee..649ac820 100644 --- a/src/snapshots/serve_session__change_script_meta_before.snap +++ b/src/snapshots/serve_session__change_script_meta_before.snap @@ -13,6 +13,9 @@ metadata: relevant_paths: - /root - /root/init.meta.json + - /root/init.lua + - /root/init.server.lua + - /root/init.client.lua children: - id: id-2 name: test diff --git a/src/snapshots/serve_session__just_folder.snap b/src/snapshots/serve_session__just_folder.snap index 584509b8..1817c3e4 100644 --- a/src/snapshots/serve_session__just_folder.snap +++ b/src/snapshots/serve_session__just_folder.snap @@ -13,4 +13,7 @@ metadata: relevant_paths: - /foo - /foo/init.meta.json + - /foo/init.lua + - /foo/init.server.lua + - /foo/init.client.lua children: [] diff --git a/src/snapshots/serve_session__project_with_folder.snap b/src/snapshots/serve_session__project_with_folder.snap index ae1914d6..598522e8 100644 --- a/src/snapshots/serve_session__project_with_folder.snap +++ b/src/snapshots/serve_session__project_with_folder.snap @@ -13,6 +13,9 @@ metadata: relevant_paths: - /foo/src - /foo/src/init.meta.json + - /foo/src/init.lua + - /foo/src/init.server.lua + - /foo/src/init.client.lua - /foo/default.project.json children: - id: id-2 diff --git a/src/snapshots/serve_session__script_with_meta.snap b/src/snapshots/serve_session__script_with_meta.snap index 016006b9..9e2a4dcf 100644 --- a/src/snapshots/serve_session__script_with_meta.snap +++ b/src/snapshots/serve_session__script_with_meta.snap @@ -13,6 +13,9 @@ metadata: relevant_paths: - /root - /root/init.meta.json + - /root/init.lua + - /root/init.server.lua + - /root/init.client.lua children: - id: id-2 name: test