From e616ea50438e74017dd6658cf081bde481c021ed Mon Sep 17 00:00:00 2001 From: vickydotbat Date: Thu, 14 May 2026 10:19:45 +0200 Subject: [PATCH] Fixed freshness check --- internal/topdata/top_package.go | 3 --- internal/topdata/topdata_test.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/internal/topdata/top_package.go b/internal/topdata/top_package.go index 50e7dda..9c08230 100644 --- a/internal/topdata/top_package.go +++ b/internal/topdata/top_package.go @@ -267,9 +267,6 @@ func newestTopDataSource(p *project.Project) (time.Time, string, error) { if d.IsDir() && shouldSkipTopDataSourceDir(path, skipDirs) { return filepath.SkipDir } - if d.IsDir() { - return nil - } info, err := d.Info() if err != nil { return err diff --git a/internal/topdata/topdata_test.go b/internal/topdata/topdata_test.go index ef667b9..d807889 100644 --- a/internal/topdata/topdata_test.go +++ b/internal/topdata/topdata_test.go @@ -10692,6 +10692,34 @@ func TestBuildPackageFailsWhenCompiledOutputIsStale(t *testing.T) { } } +func TestBuildPackageFailsWhenTopDataSourceFileIsDeleted(t *testing.T) { + root := testProjectRoot(t) + mkdirAll(t, filepath.Join(root, "topdata", "data", "repadjust")) + writeFile(t, filepath.Join(root, "topdata", "base_dialog.json"), "{}\n") + writeFile(t, filepath.Join(root, "topdata", "data", "repadjust", "base.json"), `{ + "output": "repadjust.2da", + "columns": ["Label"], + "rows": [{"id": 0, "Label": "TEST_LABEL"}] +}`+"\n") + lockPath := filepath.Join(root, "topdata", "data", "repadjust", "lock.json") + writeFile(t, lockPath, "{}\n") + + proj := testProject(root) + proj.Config.TopData.ReferenceBuilder = "" + + if _, err := BuildNative(proj, nil); err != nil { + t.Fatalf("BuildNative failed: %v", err) + } + + if err := os.Remove(lockPath); err != nil { + t.Fatalf("delete topdata source file: %v", err) + } + + if _, err := BuildPackage(proj, nil); err == nil || !strings.Contains(err.Error(), "older than source file") { + t.Fatalf("expected deleted source file to invalidate compiled output, got %v", err) + } +} + func TestBuildPackageIgnoresTemplateSourcesForFreshness(t *testing.T) { root := testProjectRoot(t) mkdirAll(t, filepath.Join(root, "topdata", "data", "repadjust"))