forked from rojo-rbx/rojo
fix: lack of .model.json support
This commit is contained in:
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
source: tests/tests/build.rs
|
||||||
|
assertion_line: 109
|
||||||
|
expression: contents
|
||||||
|
---
|
||||||
|
<roblox version="4">
|
||||||
|
<Item class="DataModel" referent="0">
|
||||||
|
<Properties>
|
||||||
|
<string name="Name">model_json_name_input</string>
|
||||||
|
</Properties>
|
||||||
|
<Item class="Workspace" referent="1">
|
||||||
|
<Properties>
|
||||||
|
<string name="Name">Workspace</string>
|
||||||
|
<bool name="NeedsPivotMigration">false</bool>
|
||||||
|
</Properties>
|
||||||
|
<Item class="StringValue" referent="2">
|
||||||
|
<Properties>
|
||||||
|
<string name="Name">/Bar</string>
|
||||||
|
</Properties>
|
||||||
|
</Item>
|
||||||
|
</Item>
|
||||||
|
</Item>
|
||||||
|
</roblox>
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "model_json_name_input",
|
||||||
|
"tree": {
|
||||||
|
"$className": "DataModel",
|
||||||
|
"Workspace": {
|
||||||
|
"$className": "Workspace",
|
||||||
|
"$path": "src"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"name": "/Bar",
|
||||||
|
"className": "StringValue"
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
source: tests/rojo_test/syncback_util.rs
|
||||||
|
assertion_line: 101
|
||||||
|
expression: "String::from_utf8_lossy(&output.stdout)"
|
||||||
|
---
|
||||||
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
source: tests/tests/syncback.rs
|
||||||
|
assertion_line: 31
|
||||||
|
expression: src/foo.model.json
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"name": "/Bar",
|
||||||
|
"className": "StringValue"
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "model_json_name",
|
||||||
|
"tree": {
|
||||||
|
"$className": "DataModel",
|
||||||
|
"Workspace": {
|
||||||
|
"$className": "Workspace",
|
||||||
|
"$path": "src"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"name": "/Bar",
|
||||||
|
"className": "StringValue"
|
||||||
|
}
|
||||||
|
|
||||||
BIN
rojo-test/syncback-tests/model_json_name/input.rbxl
Normal file
BIN
rojo-test/syncback-tests/model_json_name/input.rbxl
Normal file
Binary file not shown.
@@ -35,19 +35,12 @@ pub fn snapshot_json_model(
|
|||||||
format!("File is not a valid JSON model: {}", path.display())
|
format!("File is not a valid JSON model: {}", path.display())
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
if let Some(top_level_name) = &instance.name {
|
// If the JSON has a name property, preserve it in metadata for syncback
|
||||||
let new_name = format!("{}.model.json", top_level_name);
|
let specified_name = instance.name.clone();
|
||||||
|
|
||||||
log::warn!(
|
// Use the name from JSON if present, otherwise fall back to filename-derived name
|
||||||
"Model at path {} had a top-level Name field. \
|
let instance_name = specified_name.clone().unwrap_or_else(|| name.to_owned());
|
||||||
This field has been ignored since Rojo 6.0.\n\
|
instance.name = Some(instance_name);
|
||||||
Consider removing this field and renaming the file to {}.",
|
|
||||||
new_name,
|
|
||||||
path.display()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
instance.name = Some(name.to_owned());
|
|
||||||
|
|
||||||
let id = instance.id.take().map(RojoRef::new);
|
let id = instance.id.take().map(RojoRef::new);
|
||||||
let schema = instance.schema.take();
|
let schema = instance.schema.take();
|
||||||
@@ -62,7 +55,8 @@ pub fn snapshot_json_model(
|
|||||||
.relevant_paths(vec![path.to_path_buf()])
|
.relevant_paths(vec![path.to_path_buf()])
|
||||||
.context(context)
|
.context(context)
|
||||||
.specified_id(id)
|
.specified_id(id)
|
||||||
.schema(schema);
|
.schema(schema)
|
||||||
|
.specified_name(specified_name);
|
||||||
|
|
||||||
Ok(Some(snapshot))
|
Ok(Some(snapshot))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ gen_build_tests! {
|
|||||||
server_in_folder,
|
server_in_folder,
|
||||||
server_init,
|
server_init,
|
||||||
slugified_name_roundtrip,
|
slugified_name_roundtrip,
|
||||||
|
model_json_name_input,
|
||||||
txt,
|
txt,
|
||||||
txt_in_folder,
|
txt_in_folder,
|
||||||
unresolved_values,
|
unresolved_values,
|
||||||
|
|||||||
@@ -89,4 +89,6 @@ syncback_tests! {
|
|||||||
// Ensures that instances with names containing illegal characters get slugified filenames
|
// Ensures that instances with names containing illegal characters get slugified filenames
|
||||||
// and preserve their original names in meta.json
|
// and preserve their original names in meta.json
|
||||||
slugified_name => ["src/_Script/init.meta.json", "src/_Script/init.server.luau", "src/_Folder/init.meta.json"],
|
slugified_name => ["src/_Script/init.meta.json", "src/_Script/init.server.luau", "src/_Folder/init.meta.json"],
|
||||||
|
// Ensures that .model.json files preserve the name property
|
||||||
|
model_json_name => ["src/foo.model.json"],
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user