| 1 | package apperr |
| 2 | |
| 3 | import ( |
| 4 | "context" |
| 5 | "errors" |
| 6 | "testing" |
| 7 | |
| 8 | "github.com/carlosframework/platform/internal/applog" |
| 9 | "github.com/carlosframework/platform/internal/release" |
| 10 | ) |
| 11 | |
| 12 | // TestErrorsKeysRefuseEmptyApp: the errors family's own builders refuse |
| 13 | // the empty app an app-less route is filed under, and a read for it fails |
| 14 | // rather than listing apps/<sqid>//errors/. |
| 15 | func TestErrorsKeysRefuseEmptyApp(t *testing.T) { |
| 16 | if k, err := Prefix("bab", ""); !errors.Is(err, applog.ErrBadKeySegment) || k != "" { |
| 17 | t.Fatalf("Prefix = (%q, %v)", k, err) |
| 18 | } |
| 19 | if k, err := BoxPrefix("bab", "", "leo-climbing"); !errors.Is(err, applog.ErrBadKeySegment) || k != "" { |
| 20 | t.Fatalf("BoxPrefix = (%q, %v)", k, err) |
| 21 | } |
| 22 | if k, err := ChunkKey("bab", "", "leo-climbing", "2026-10-16-06", 1, 2); !errors.Is(err, applog.ErrBadKeySegment) || k != "" { |
| 23 | t.Fatalf("ChunkKey = (%q, %v)", k, err) |
| 24 | } |
| 25 | if _, _, err := ReadWindow(context.Background(), release.NewDirStore(t.TempDir()), "bab", "", Filter{}, 10); !errors.Is(err, applog.ErrBadKeySegment) { |
| 26 | t.Fatalf("ReadWindow = %v", err) |
| 27 | } |
| 28 | if got := must(t)(ChunkKey("bab", "web", "leo-climbing", "2026-10-16-06", 1792015319229, 257)); got != "apps/bab/web/errors/leo-climbing/2026-10-16-06/0001792015319229-257.jsonl.gz" { |
| 29 | t.Fatalf("valid ChunkKey moved: %q", got) |
| 30 | } |
| 31 | } |
| 32 | |