Minimum row

This commit is contained in:
2026-05-25 14:50:01 +02:00
parent a646c905e4
commit 37db91314b
7 changed files with 171 additions and 38 deletions
+7 -3
View File
@@ -223,9 +223,10 @@ type TopDataConfig struct {
}
type TopDataRowGenerationConfig struct {
Dataset string `json:"dataset,omitempty" yaml:"dataset,omitempty"`
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
Mode string `json:"mode" yaml:"mode"`
Dataset string `json:"dataset,omitempty" yaml:"dataset,omitempty"`
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
Mode string `json:"mode" yaml:"mode"`
MinimumRow int `json:"minimum_row,omitempty" yaml:"minimum_row,omitempty"`
}
type TopDataClassFeatInjectionConfig struct {
@@ -860,6 +861,9 @@ func validateTopDataRowGeneration(rules []TopDataRowGenerationConfig) []error {
default:
failures = append(failures, fmt.Errorf("%s.mode %q is not supported", prefix, rule.Mode))
}
if rule.MinimumRow < 0 {
failures = append(failures, fmt.Errorf("%s.minimum_row must be zero or greater", prefix))
}
key := filepath.ToSlash(dataset)
if _, ok := seen[key]; ok {
failures = append(failures, fmt.Errorf("%s duplicates an earlier dataset row generation rule", prefix))
+4 -1
View File
@@ -202,6 +202,7 @@ topdata:
row_generation:
- namespace: portraits
mode: first_null_row
minimum_row: 15000
`)
proj, err := Load(root)
@@ -214,7 +215,7 @@ topdata:
t.Fatalf("expected one topdata row generation rule, got %#v", rules)
}
got := rules[0]
if got.Dataset != "portraits" || got.Namespace != "portraits" || got.Mode != "first_null_row" {
if got.Dataset != "portraits" || got.Namespace != "portraits" || got.Mode != "first_null_row" || got.MinimumRow != 15000 {
t.Fatalf("unexpected topdata row generation rule: %#v", got)
}
}
@@ -285,6 +286,7 @@ func TestValidateLayoutRejectsInvalidTopDataValueEncodings(t *testing.T) {
{Dataset: "portraits", Mode: "after_base"},
{Namespace: "placeabletypes", Mode: "unsupported"},
{Mode: "first_null_row"},
{Dataset: "classes", Mode: "first_null_row", MinimumRow: -1},
},
},
},
@@ -308,6 +310,7 @@ func TestValidateLayoutRejectsInvalidTopDataValueEncodings(t *testing.T) {
"topdata.row_generation[1] duplicates an earlier dataset row generation rule",
"topdata.row_generation[2].mode \"unsupported\" is not supported",
"topdata.row_generation[3].dataset is required",
"topdata.row_generation[4].minimum_row must be zero or greater",
} {
if !strings.Contains(text, want) {
t.Fatalf("expected validation error %q, got %v", want, err)