From 9bc36be513d973bed10adbf2b23abf1a7ef8eaad Mon Sep 17 00:00:00 2001 From: James Shubin Date: Mon, 17 Dec 2018 11:44:36 -0500 Subject: [PATCH] util: Add a test for CopyFs This adds a test case for the standalone CopyFs function, and an easy to use test case infra. --- util/afero_test.go | 87 +++++++++++++++++++ .../afero_test/TestCopyDiskToFs1/simple1.tree | 12 +++ util/afero_test/TestCopyDiskToFs1/simple1/1 | 0 util/afero_test/TestCopyDiskToFs1/simple1/2 | 0 util/afero_test/TestCopyDiskToFs1/simple1/3 | 0 .../TestCopyDiskToFs1/simple1/foo/bar/baz/a | 0 .../TestCopyDiskToFs1/simple1/foo/bar/baz/b | 0 .../TestCopyDiskToFs1/simple1/foo/bar/baz/c | 0 .../TestCopyDiskToFs1/simple1/foo/bar/z | 0 9 files changed, 99 insertions(+) create mode 100644 util/afero_test.go create mode 100644 util/afero_test/TestCopyDiskToFs1/simple1.tree create mode 100644 util/afero_test/TestCopyDiskToFs1/simple1/1 create mode 100644 util/afero_test/TestCopyDiskToFs1/simple1/2 create mode 100644 util/afero_test/TestCopyDiskToFs1/simple1/3 create mode 100644 util/afero_test/TestCopyDiskToFs1/simple1/foo/bar/baz/a create mode 100644 util/afero_test/TestCopyDiskToFs1/simple1/foo/bar/baz/b create mode 100644 util/afero_test/TestCopyDiskToFs1/simple1/foo/bar/baz/c create mode 100644 util/afero_test/TestCopyDiskToFs1/simple1/foo/bar/z diff --git a/util/afero_test.go b/util/afero_test.go new file mode 100644 index 00000000..5c36bcb6 --- /dev/null +++ b/util/afero_test.go @@ -0,0 +1,87 @@ +// Mgmt +// Copyright (C) 2013-2018+ James Shubin and the project contributors +// Written by James Shubin and the project contributors +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +// +build !root + +package util + +import ( + "io/ioutil" + "os" + "testing" + + "github.com/spf13/afero" +) + +func TestCopyDiskToFs1(t *testing.T) { + if true { + return // XXX: remove me once this test passes + } + 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 + } + for _, f := range files { + if !f.IsDir() { + continue + } + treeFile := f.Name() + ".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} + + if err := CopyDiskToFs(fs, dir+f.Name()+"/", "/", 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 + } + } +} diff --git a/util/afero_test/TestCopyDiskToFs1/simple1.tree b/util/afero_test/TestCopyDiskToFs1/simple1.tree new file mode 100644 index 00000000..f84dbd97 --- /dev/null +++ b/util/afero_test/TestCopyDiskToFs1/simple1.tree @@ -0,0 +1,12 @@ +. +└── simple1/ + ├── 1 + ├── 2 + ├── 3 + └── foo/ + └── bar/ + ├── baz/ + │ ├── a + │ ├── b + │ └── c + └── z diff --git a/util/afero_test/TestCopyDiskToFs1/simple1/1 b/util/afero_test/TestCopyDiskToFs1/simple1/1 new file mode 100644 index 00000000..e69de29b diff --git a/util/afero_test/TestCopyDiskToFs1/simple1/2 b/util/afero_test/TestCopyDiskToFs1/simple1/2 new file mode 100644 index 00000000..e69de29b diff --git a/util/afero_test/TestCopyDiskToFs1/simple1/3 b/util/afero_test/TestCopyDiskToFs1/simple1/3 new file mode 100644 index 00000000..e69de29b diff --git a/util/afero_test/TestCopyDiskToFs1/simple1/foo/bar/baz/a b/util/afero_test/TestCopyDiskToFs1/simple1/foo/bar/baz/a new file mode 100644 index 00000000..e69de29b diff --git a/util/afero_test/TestCopyDiskToFs1/simple1/foo/bar/baz/b b/util/afero_test/TestCopyDiskToFs1/simple1/foo/bar/baz/b new file mode 100644 index 00000000..e69de29b diff --git a/util/afero_test/TestCopyDiskToFs1/simple1/foo/bar/baz/c b/util/afero_test/TestCopyDiskToFs1/simple1/foo/bar/baz/c new file mode 100644 index 00000000..e69de29b diff --git a/util/afero_test/TestCopyDiskToFs1/simple1/foo/bar/z b/util/afero_test/TestCopyDiskToFs1/simple1/foo/bar/z new file mode 100644 index 00000000..e69de29b