diff options
Diffstat (limited to 'internal/scan/scan_test.go')
| -rw-r--r-- | internal/scan/scan_test.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/internal/scan/scan_test.go b/internal/scan/scan_test.go index 94f922b..a245893 100644 --- a/internal/scan/scan_test.go +++ b/internal/scan/scan_test.go @@ -261,3 +261,35 @@ func TestIgnoredDirectoryReportedOnce(t *testing.T) { t.Fatalf("skipped = %v, want %v (the directory once, not its three files)", skipped(r), want) } } + +// TestTooBig: with MaxSize set, a file larger than it is skipped as too +// big; a file of exactly MaxSize is kept; MaxSize 0 means no limit. +func TestTooBig(t *testing.T) { + root := tree(t) + for name, size := range map[string]int{"small.bin": 10, "exact.bin": 100, "large.bin": 101} { + p := filepath.Join(root, name) + if err := os.WriteFile(p, make([]byte, size), 0o644); err != nil { + t.Fatal(err) + } + old := now.Add(-time.Hour) + if err := os.Chtimes(p, old, old); err != nil { + t.Fatal(err) + } + } + r, err := Walk(root, Options{MaxSize: 100, Now: now}) + if err != nil { + t.Fatal(err) + } + if want := []string{"exact.bin", "small.bin"}; !reflect.DeepEqual(rels(r), want) { + t.Fatalf("files = %v, want %v", rels(r), want) + } + if got := skipped(r); !reflect.DeepEqual(got, map[string]Reason{"large.bin": TooBig}) { + t.Fatalf("skipped = %v", got) + } + if TooBig.String() != "too big" { + t.Errorf("TooBig reads %q", TooBig.String()) + } + if r, _ := Walk(root, Options{Now: now}); len(rels(r)) != 3 { + t.Errorf("MaxSize 0 skipped files: %v", skipped(r)) + } +} |
