Fix non-portable path serialization in ProjectNode.

This was failing snapshot tests on the Linux CI machines,
since I committed snapshots with backslashes.

I think the old path serializer was still the wrong approach,
this one is sort of a middleground but I'm still not super
happy with it.
This commit is contained in:
Lucien Greathouse
2019-10-18 19:40:47 -07:00
parent 07801a0283
commit 114c93fa46
4 changed files with 18 additions and 2 deletions

View File

@@ -36,3 +36,17 @@ where
seq.end()
}
pub fn serialize_option_absolute<S, T>(
maybe_path: &Option<T>,
serializer: S,
) -> Result<S::Ok, S::Error>
where
S: Serializer,
T: AsRef<Path>,
{
match maybe_path {
Some(path) => serialize_absolute(path, serializer),
None => serializer.serialize_none(),
}
}

View File

@@ -269,6 +269,8 @@ pub struct ProjectNode {
pub children: BTreeMap<String, ProjectNode>,
pub properties: HashMap<String, UnresolvedRbxValue>,
pub ignore_unknown_instances: Option<bool>,
#[serde(serialize_with = "crate::path_serializer::serialize_option_absolute")]
pub path: Option<PathBuf>,
}

View File

@@ -29,7 +29,7 @@ children:
children: {}
properties: {}
ignore_unknown_instances: ~
path: "/foo\\file.txt"
path: /foo/file.txt
relevant_paths:
- /foo/file.txt
- /foo/file.meta.json

View File

@@ -29,7 +29,7 @@ children:
children: {}
properties: {}
ignore_unknown_instances: ~
path: "/foo\\file.txt"
path: /foo/file.txt
relevant_paths:
- /foo/file.txt
- /foo/file.meta.json