diff options
Diffstat (limited to 'pkg/osutil/osutil_test.go')
| -rw-r--r-- | pkg/osutil/osutil_test.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/pkg/osutil/osutil_test.go b/pkg/osutil/osutil_test.go index 4d9bf4cf8..460cc85ca 100644 --- a/pkg/osutil/osutil_test.go +++ b/pkg/osutil/osutil_test.go @@ -4,6 +4,7 @@ package osutil import ( + "bytes" "fmt" "os" "path/filepath" @@ -150,3 +151,44 @@ func TestReadWriteJSON(t *testing.T) { t.Fatal(diff) } } + +func TestDiskUsage(t *testing.T) { + dir := t.TempDir() + var currentUsage uint64 + expectUsage := func(minIncrease, maxIncrease uint64) { + usage, err := DiskUsage(dir) + if err != nil { + t.Fatal(err) + } + expectMin := currentUsage + minIncrease + expectMax := currentUsage + maxIncrease + t.Logf("got usage %v when expected (%v, %v)", usage, expectMin, expectMax) + if usage <= expectMin || usage >= expectMax { + t.Fatalf("bad usage %v, expect (%v, %v)", usage, expectMin, expectMax) + } + currentUsage = usage + } + expectUsage(1, 5<<10) + if err := MkdirAll(filepath.Join(dir, "nested")); err != nil { + t.Fatal(err) + } + expectUsage(1, 5<<10) + if err := WriteFile(filepath.Join(dir, "nested", "foo"), bytes.Repeat([]byte{'a'}, 1<<10)); err != nil { + t.Fatal(err) + } + expectUsage(1<<10, 5<<10) + if err := WriteFile(filepath.Join(dir, "nested", "bar"), bytes.Repeat([]byte{'a'}, 10<<10)); err != nil { + t.Fatal(err) + } + expectUsage(10<<10, 14<<10) + // Symlinks must not be counted twice. + if err := os.Symlink(filepath.Join(dir, "nested"), filepath.Join(dir, "dirlink")); err != nil { + t.Fatal(err) + } + expectUsage(1, 1<<10) + + if err := os.Symlink(filepath.Join(dir, "nested", "bar"), filepath.Join(dir, "filelink")); err != nil { + t.Fatal(err) + } + expectUsage(1, 1<<10) +} |
