mirror of
https://github.com/kopia/kopia.git
synced 2025-12-23 22:57:50 -05:00
* policy: introduced OptionalBool - refactoring * policy: added logging policy * testing: added support for symlinks and modtime to mockfs * logging: exposed NullLogger instance * upload: emit debug logs according to logging policies * cli: logging policy support
58 lines
2.5 KiB
Go
58 lines
2.5 KiB
Go
package cli_test
|
|
|
|
import (
|
|
"bytes"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/kopia/kopia/internal/testutil"
|
|
"github.com/kopia/kopia/tests/testenv"
|
|
)
|
|
|
|
func TestSnapshotEstimate(t *testing.T) {
|
|
env := testenv.NewCLITest(t, testenv.RepoFormatNotImportant, testenv.NewInProcRunner(t))
|
|
|
|
dir := testutil.TempDirectory(t)
|
|
require.NoError(t, os.WriteFile(filepath.Join(dir, "file1.txt"), bytes.Repeat([]byte{1, 2, 3, 4, 5}, 15000), 0o600))
|
|
require.NoError(t, os.WriteFile(filepath.Join(dir, "file2.txt"), bytes.Repeat([]byte{2, 3, 4, 5, 6}, 10000), 0o600))
|
|
require.NoError(t, os.MkdirAll(filepath.Join(dir, "subdir"), 0o755))
|
|
require.NoError(t, os.WriteFile(filepath.Join(dir, "subdir", "file2.txt"), bytes.Repeat([]byte{3, 4, 5, 6, 7}, 5000), 0o600))
|
|
|
|
env.RunAndExpectSuccess(t, "repo", "create", "filesystem", "--path", env.RepoDir)
|
|
out := env.RunAndExpectSuccess(t, "snapshot", "estimate", dir)
|
|
require.Contains(t, out, "Snapshot includes 3 file(s), total size 150 KB")
|
|
require.Contains(t, out, "Snapshot excludes no files.")
|
|
require.Contains(t, out, "Snapshot excludes no directories.")
|
|
|
|
// ignore some files
|
|
env.RunAndExpectSuccess(t, "policy", "set", "--add-ignore", "*2.txt", dir)
|
|
out = env.RunAndExpectSuccess(t, "snapshot", "estimate", dir)
|
|
require.Contains(t, out, "Snapshot includes 1 file(s), total size 75 KB")
|
|
require.Contains(t, out, "Snapshot excludes 2 file(s), total size 75 KB")
|
|
require.Contains(t, out, " - file2.txt - 50 KB")
|
|
require.Contains(t, out, " - subdir/file2.txt - 25 KB")
|
|
require.Contains(t, out, "Snapshot excludes no directories.")
|
|
|
|
// ignore a dir
|
|
env.RunAndExpectSuccess(t, "policy", "set", "--add-ignore", "subdir", dir)
|
|
out = env.RunAndExpectSuccess(t, "snapshot", "estimate", dir)
|
|
require.Contains(t, out, "Snapshot includes 1 file(s), total size 75 KB")
|
|
require.Contains(t, out, "Snapshot excludes 1 file(s), total size 50 KB")
|
|
require.Contains(t, out, " - file2.txt - 50 KB")
|
|
require.Contains(t, out, " - subdir")
|
|
require.Contains(t, out, "Snapshot excludes 1 directories. Examples:")
|
|
}
|
|
|
|
func TestSnapshotEstimate_NotADirectory(t *testing.T) {
|
|
env := testenv.NewCLITest(t, testenv.RepoFormatNotImportant, testenv.NewInProcRunner(t))
|
|
|
|
dir := testutil.TempDirectory(t)
|
|
require.NoError(t, os.WriteFile(filepath.Join(dir, "file1.txt"), []byte{1, 2, 3}, 0o600))
|
|
|
|
env.RunAndExpectSuccess(t, "repo", "create", "filesystem", "--path", env.RepoDir)
|
|
env.RunAndExpectFailure(t, "snapshot", "estimate", filepath.Join(dir, "file1.txt"))
|
|
}
|