From 5d59cfd2c914223b5eea158ee8db305e106557b1 Mon Sep 17 00:00:00 2001 From: James Shubin Date: Mon, 22 Jul 2019 06:38:02 -0400 Subject: [PATCH] util: Ensure the afero copy function is working as intended The destination should be a dir sometimes. --- util/afero_test.go | 64 +++++++++++++++++++ .../afero_test/TestCopyDiskToFs2/simple1.tree | 13 ++++ util/afero_test/TestCopyDiskToFs2/simple1/1 | 0 util/afero_test/TestCopyDiskToFs2/simple1/2 | 0 util/afero_test/TestCopyDiskToFs2/simple1/3 | 0 .../TestCopyDiskToFs2/simple1/foo/bar/baz/a | 0 .../TestCopyDiskToFs2/simple1/foo/bar/baz/b | 0 .../TestCopyDiskToFs2/simple1/foo/bar/baz/c | 0 .../TestCopyDiskToFs2/simple1/foo/bar/z | 0 9 files changed, 77 insertions(+) create mode 100644 util/afero_test/TestCopyDiskToFs2/simple1.tree create mode 100644 util/afero_test/TestCopyDiskToFs2/simple1/1 create mode 100644 util/afero_test/TestCopyDiskToFs2/simple1/2 create mode 100644 util/afero_test/TestCopyDiskToFs2/simple1/3 create mode 100644 util/afero_test/TestCopyDiskToFs2/simple1/foo/bar/baz/a create mode 100644 util/afero_test/TestCopyDiskToFs2/simple1/foo/bar/baz/b create mode 100644 util/afero_test/TestCopyDiskToFs2/simple1/foo/bar/baz/c create mode 100644 util/afero_test/TestCopyDiskToFs2/simple1/foo/bar/z diff --git a/util/afero_test.go b/util/afero_test.go index 978988be..17c47c66 100644 --- a/util/afero_test.go +++ b/util/afero_test.go @@ -179,6 +179,70 @@ func TestCopyDiskToFs1(t *testing.T) { } } +func TestCopyDiskToFs2(t *testing.T) { + dir, err := TestDirFull() + if err != nil { + t.Errorf("could not get tests directory: %+v", err) + return + } + t.Logf("tests directory is: %s", dir) + files, err := ioutil.ReadDir(dir) + if err != nil { + t.Errorf("could not read through tests directory: %+v", err) + return + } + sorted := []string{} + for _, f := range files { + if !f.IsDir() { + continue + } + sorted = append(sorted, f.Name()) + } + sort.Strings(sorted) + for _, f := range sorted { + treeFile := f + ".tree" // expected tree file + treeFileFull := dir + treeFile + info, err := os.Stat(treeFileFull) + if err != nil || info.IsDir() { + //t.Logf("skipping: %s -> %+v", treeFile, err) + continue + } + content, err := ioutil.ReadFile(treeFileFull) + if err != nil { + t.Errorf("could not read tree file: %+v", err) + return + } + str := string(content) // expected tree + + t.Logf("testing: %s", treeFile) + + mmFs := afero.NewMemMapFs() + afs := &afero.Afero{Fs: mmFs} // wrap so that we're implementing ioutil + fs := &Fs{afs} + + src := dir + f + "/" + dst := "/dest/" + t.Logf("cp `%s` -> `%s`", src, dst) + if err := CopyDiskToFs(fs, src, dst, false); err != nil { + t.Errorf("copying to fs failed: %+v", err) + return + } + + // this shows us what we pulled in from the test dir: + tree, err := FsTree(fs, "/") + if err != nil { + t.Errorf("tree failed: %+v", err) + return + } + t.Logf("tree:\n%s", tree) + + if tree != str { + t.Errorf("trees differ for: %s", treeFile) + return + } + } +} + func TestCopyDiskContentsToFs1(t *testing.T) { dir, err := TestDirFull() if err != nil { diff --git a/util/afero_test/TestCopyDiskToFs2/simple1.tree b/util/afero_test/TestCopyDiskToFs2/simple1.tree new file mode 100644 index 00000000..75a93617 --- /dev/null +++ b/util/afero_test/TestCopyDiskToFs2/simple1.tree @@ -0,0 +1,13 @@ +. +└── dest/ + └── simple1/ + ├── 1 + ├── 2 + ├── 3 + └── foo/ + └── bar/ + ├── baz/ + │ ├── a + │ ├── b + │ └── c + └── z diff --git a/util/afero_test/TestCopyDiskToFs2/simple1/1 b/util/afero_test/TestCopyDiskToFs2/simple1/1 new file mode 100644 index 00000000..e69de29b diff --git a/util/afero_test/TestCopyDiskToFs2/simple1/2 b/util/afero_test/TestCopyDiskToFs2/simple1/2 new file mode 100644 index 00000000..e69de29b diff --git a/util/afero_test/TestCopyDiskToFs2/simple1/3 b/util/afero_test/TestCopyDiskToFs2/simple1/3 new file mode 100644 index 00000000..e69de29b diff --git a/util/afero_test/TestCopyDiskToFs2/simple1/foo/bar/baz/a b/util/afero_test/TestCopyDiskToFs2/simple1/foo/bar/baz/a new file mode 100644 index 00000000..e69de29b diff --git a/util/afero_test/TestCopyDiskToFs2/simple1/foo/bar/baz/b b/util/afero_test/TestCopyDiskToFs2/simple1/foo/bar/baz/b new file mode 100644 index 00000000..e69de29b diff --git a/util/afero_test/TestCopyDiskToFs2/simple1/foo/bar/baz/c b/util/afero_test/TestCopyDiskToFs2/simple1/foo/bar/baz/c new file mode 100644 index 00000000..e69de29b diff --git a/util/afero_test/TestCopyDiskToFs2/simple1/foo/bar/z b/util/afero_test/TestCopyDiskToFs2/simple1/foo/bar/z new file mode 100644 index 00000000..e69de29b