Asset-owned topdata
This commit is contained in:
@@ -1457,10 +1457,11 @@ func validateGeneratedConfig(cfg GeneratedConfig) []error {
|
||||
failures = append(failures, fmt.Errorf("%s.include_datasets must contain at least one pattern", fieldPrefix))
|
||||
}
|
||||
failures = append(failures, validateGlobList(fieldPrefix+".include_datasets", top2da.IncludeDatasets)...)
|
||||
switch strings.TrimSpace(top2da.Autogen.Mode) {
|
||||
autogenMode := strings.TrimSpace(top2da.Autogen.Mode)
|
||||
switch autogenMode {
|
||||
case "parts_rows", "cachedmodels_rows":
|
||||
case "":
|
||||
failures = append(failures, fmt.Errorf("%s.autogen.mode is required", fieldPrefix))
|
||||
continue
|
||||
default:
|
||||
failures = append(failures, fmt.Errorf("%s.autogen.mode %q is not supported", fieldPrefix, top2da.Autogen.Mode))
|
||||
}
|
||||
@@ -1473,7 +1474,7 @@ func validateGeneratedConfig(cfg GeneratedConfig) []error {
|
||||
}
|
||||
failures = append(failures, validateGlobList(fieldPrefix+".autogen.include", top2da.Autogen.Include)...)
|
||||
failures = append(failures, validateAutogenDeriveConfig(fieldPrefix+".autogen.derive", top2da.Autogen.Derive)...)
|
||||
if strings.TrimSpace(top2da.Autogen.Mode) == "parts_rows" && partsRowsConfigConfigured(top2da.Autogen.PartsRows) {
|
||||
if autogenMode == "parts_rows" && partsRowsConfigConfigured(top2da.Autogen.PartsRows) {
|
||||
failures = append(failures, validatePartsRowsConfig(fieldPrefix+".autogen.parts_rows", top2da.Autogen.PartsRows)...)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1092,6 +1092,13 @@ func TestValidateLayoutAcceptsGeneratedTopData2DAConfig(t *testing.T) {
|
||||
Derive: AutogenDeriveConfig{Kind: "model_stem", GroupFrom: "first_path_segment"},
|
||||
},
|
||||
},
|
||||
{
|
||||
ID: "static_topdata",
|
||||
Source: "topdata",
|
||||
Output: "{paths.cache}/generated-assets/static-topdata-2da",
|
||||
IncludeDatasets: []string{"tailmodel", "wingmodel"},
|
||||
PackageRoot: "part",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -1106,6 +1113,41 @@ func TestValidateLayoutAcceptsGeneratedTopData2DAConfig(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidateLayoutRejectsUnsupportedGeneratedTopDataAutogenMode(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
mkdirAll(t, filepath.Join(root, "assets"))
|
||||
mkdirAll(t, filepath.Join(root, "build"))
|
||||
proj := Project{
|
||||
Root: root,
|
||||
Config: Config{
|
||||
Module: ModuleConfig{Name: "Test", ResRef: "testmod"},
|
||||
Paths: PathConfig{Assets: "assets"},
|
||||
Generated: GeneratedConfig{
|
||||
TopData2DA: []GeneratedTopData2DAConfig{
|
||||
{
|
||||
ID: "bad",
|
||||
Source: "topdata",
|
||||
Output: "{paths.cache}/generated-assets/bad-2da",
|
||||
IncludeDatasets: []string{"tailmodel"},
|
||||
PackageRoot: "part",
|
||||
Autogen: AutogenConsumerConfig{
|
||||
Mode: "unknown_rows",
|
||||
Root: "part",
|
||||
Include: []string{"**/*.mdl"},
|
||||
Derive: AutogenDeriveConfig{Kind: "model_stem", GroupFrom: "first_path_segment"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
err := proj.ValidateLayout()
|
||||
if err == nil || !strings.Contains(err.Error(), `generated_assets.topdata_2da[0].autogen.mode "unknown_rows" is not supported`) {
|
||||
t.Fatalf("expected unsupported generated autogen mode validation error, got %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidateLayoutRejectsEscapingGeneratedTopData2DAConfig(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
mkdirAll(t, filepath.Join(root, "assets"))
|
||||
|
||||
Reference in New Issue
Block a user