Sorting changes
This commit is contained in:
@@ -10582,6 +10582,37 @@ func TestNormalizePartsRowsACBonusUsesConfiguredPolicyBeforeOverrides(t *testing
|
||||
}
|
||||
}
|
||||
|
||||
func TestNormalizePartsRowsACBonusSupportsAscendingRowIDSortKey(t *testing.T) {
|
||||
collected := []nativeCollectedDataset{
|
||||
{
|
||||
Dataset: nativeDataset{Name: "parts/belt", OutputName: "parts_belt.2da"},
|
||||
Columns: []string{"COSTMODIFIER", "ACBONUS"},
|
||||
Rows: []map[string]any{
|
||||
{"id": 1, "COSTMODIFIER": "0", "ACBONUS": "****"},
|
||||
{"id": 117, "COSTMODIFIER": "0", "ACBONUS": "****"},
|
||||
},
|
||||
},
|
||||
}
|
||||
cfg := project.PartsRowsConfig{
|
||||
ACBonus: project.PartsRowsACBonusConfig{
|
||||
Default: project.PartsRowsACBonusPolicy{Strategy: "ascending_row_id_sort_key", Divisor: 100, Format: "%.2f"},
|
||||
},
|
||||
}
|
||||
|
||||
got, err := normalizePartsRowsACBonus(collected, cfg)
|
||||
if err != nil {
|
||||
t.Fatalf("normalizePartsRowsACBonus failed: %v", err)
|
||||
}
|
||||
|
||||
beltRows := rowsByID(got[0].Rows)
|
||||
if got := beltRows[1]["ACBONUS"]; got != "0.01" {
|
||||
t.Fatalf("expected low belt row to get lower sort key 0.01, got %v", got)
|
||||
}
|
||||
if got := beltRows[117]["ACBONUS"]; got != "1.17" {
|
||||
t.Fatalf("expected high belt row to get higher sort key 1.17, got %v", got)
|
||||
}
|
||||
}
|
||||
|
||||
func rowsByID(rows []map[string]any) map[int]map[string]any {
|
||||
out := map[int]map[string]any{}
|
||||
for _, row := range rows {
|
||||
@@ -11509,6 +11540,51 @@ func TestBuildAndPackageNoOpsWhenOutputsAreCurrent(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildAndPackageRebuildsWhenDatasetWasDeleted(t *testing.T) {
|
||||
root := topPackageTestProject(t)
|
||||
mkdirAll(t, filepath.Join(root, "topdata", "data", "skills"))
|
||||
writeFile(t, filepath.Join(root, "topdata", "data", "skills", "base.json"), `{
|
||||
"output": "skills.2da",
|
||||
"columns": ["Label"],
|
||||
"rows": [{"id": 0, "Label": "ATHLETICS"}]
|
||||
}`+"\n")
|
||||
|
||||
proj := testProject(root)
|
||||
proj.Config.TopData.ReferenceBuilder = ""
|
||||
proj.Config.Autogen.Consumers = nil
|
||||
|
||||
result, err := BuildAndPackage(proj, nil)
|
||||
if err != nil {
|
||||
t.Fatalf("initial BuildAndPackage failed: %v", err)
|
||||
}
|
||||
stale2DA := filepath.Join(result.Output2DADir, "repadjust.2da")
|
||||
if _, err := os.Stat(stale2DA); err != nil {
|
||||
t.Fatalf("expected initial repadjust output: %v", err)
|
||||
}
|
||||
|
||||
sourceTime := time.Now().Add(-4 * time.Hour)
|
||||
outputTime := time.Now().Add(-10 * time.Minute)
|
||||
if err := os.RemoveAll(filepath.Join(root, "topdata", "data", "repadjust")); err != nil {
|
||||
t.Fatalf("remove deleted dataset: %v", err)
|
||||
}
|
||||
setTopDataSourceTimes(t, root, sourceTime)
|
||||
setBuildOutputTimes(t, result, outputTime)
|
||||
|
||||
incremental, err := BuildAndPackage(proj, nil)
|
||||
if err != nil {
|
||||
t.Fatalf("incremental BuildAndPackage failed: %v", err)
|
||||
}
|
||||
if incremental.Mode == "incremental-noop" {
|
||||
t.Fatalf("expected deleted dataset to force rebuild, got %q", incremental.Mode)
|
||||
}
|
||||
if _, err := os.Stat(stale2DA); !os.IsNotExist(err) {
|
||||
t.Fatalf("expected stale deleted dataset output to be pruned, got %v", err)
|
||||
}
|
||||
if _, err := os.Stat(filepath.Join(result.Output2DADir, "skills.2da")); err != nil {
|
||||
t.Fatalf("expected remaining dataset output: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildPackageFailsWhenAutogenManifestCacheIsStale(t *testing.T) {
|
||||
root := topPackageTestProject(t)
|
||||
proj := testProject(root)
|
||||
|
||||
Reference in New Issue
Block a user