diff --git a/x/xos/env.go b/x/xos/env.go index dbc51c3db..d7e38e319 100644 --- a/x/xos/env.go +++ b/x/xos/env.go @@ -1,20 +1,10 @@ package xos import ( - "os" "sort" "strings" ) -// GetenvDefault retrieves the value of the environment variable named by the key. -// It returns the value, which will be set to fallback if the variable is empty. -func GetenvDefault(key, fallback string) string { - if val := os.Getenv(key); val != "" { - return val - } - return fallback -} - // EnvMapToSlice transform a map of key value to a slice of env in the form "key=value". // Env vars are sorted by names to get an accurate order while testing. func EnvMapToSlice(values map[string]string) []string { diff --git a/x/xos/env_test.go b/x/xos/env_test.go index 70b8f8789..757186b10 100644 --- a/x/xos/env_test.go +++ b/x/xos/env_test.go @@ -1,28 +1,11 @@ package xos import ( - "os" "testing" "github.com/mesg-foundation/engine/x/xstrings" ) -func TestGetenvDefault(t *testing.T) { - os.Setenv("__TEST_KEY__", "1") - for _, tt := range []struct { - key string - fallback string - expected string - }{ - {"__TEST_KEY__", "0", "1"}, - {"__TEST_KE1Y__", "0", "0"}, - } { - if got := GetenvDefault(tt.key, tt.fallback); got != tt.expected { - t.Errorf("GetenvDefault(%q, %q) got %s, want %s", tt.key, tt.fallback, got, tt.expected) - } - } -} - func TestEnvMapToSlice(t *testing.T) { env := EnvMapToSlice(map[string]string{ "a": "1", diff --git a/x/xos/file.go b/x/xos/file.go deleted file mode 100644 index 37a52c355..000000000 --- a/x/xos/file.go +++ /dev/null @@ -1,25 +0,0 @@ -package xos - -import "os" - -// Remove removes all given named file or directory. -func Remove(names ...string) error { - var err error - for _, name := range names { - if err1 := os.Remove(name); err == nil { - err = err1 - } - } - return err -} - -// RemoveAll removes all given path and any children it contains. -func RemoveAll(paths ...string) error { - var err error - for _, path := range paths { - if err1 := os.RemoveAll(path); err == nil { - err = err1 - } - } - return err -} diff --git a/x/xos/os.go b/x/xos/os.go deleted file mode 100644 index b66da4b2f..000000000 --- a/x/xos/os.go +++ /dev/null @@ -1,116 +0,0 @@ -package xos - -import ( - "io" - "io/ioutil" - "os" - "path/filepath" -) - -// Touch creates a new file, truncating it if it already exists. -func Touch(name string) error { - f, err := os.Create(name) - if err != nil { - return err - } - return f.Close() -} - -// Exist return true if given file exists, false otherwise. -func Exist(name string) bool { - _, err := os.Stat(name) - return !os.IsNotExist(err) -} - -// DirExists returns true if given directory exists, false otherwise. -func DirExists(name string) (bool, error) { - fi, err := os.Stat(name) - if err != nil { - if os.IsNotExist(err) { - return false, nil - } - return false, err - } - return fi.IsDir(), nil -} - -// Copy copies file, symlink and file metadata from source to target path. -func Copy(src, dest string) error { - si, err := os.Lstat(src) - if err != nil { - return err - } - - if si.IsDir() { - return CopyDir(src, dest) - } - - // Handle symbolic link. - if si.Mode()&os.ModeSymlink != 0 { - return CopySymlink(src, dest) - } - - if err := CopyFile(src, dest); err != nil { - return err - } - - // Set back file information. - if err := os.Chtimes(dest, si.ModTime(), si.ModTime()); err != nil { - return err - } - - return os.Chmod(dest, si.Mode()) -} - -// CopyDir copies directory from source to target path. -func CopyDir(src, dest string) error { - si, err := os.Lstat(src) - if err != nil { - return err - } - - entries, err := ioutil.ReadDir(src) - if err != nil { - return err - } - - if err := os.MkdirAll(dest, si.Mode()); err != nil { - return err - } - - for _, e := range entries { - newsrc := filepath.Join(src, e.Name()) - newdst := filepath.Join(dest, e.Name()) - if err := Copy(newsrc, newdst); err != nil { - return err - } - } - return nil -} - -// CopyFile copies file from source to target path. -func CopyFile(src, dest string) error { - sr, err := os.Open(src) - if err != nil { - return err - } - defer sr.Close() - - dw, err := os.Create(dest) - if err != nil { - return err - } - defer dw.Close() - - _, err = io.Copy(dw, sr) - return err -} - -// CopySymlink copies file under symbolic link. -func CopySymlink(src, dest string) error { - target, err := os.Readlink(src) - if err != nil { - return err - } - return os.Symlink(target, dest) -} diff --git a/x/xos/os_test.go b/x/xos/os_test.go deleted file mode 100644 index d10e91812..000000000 --- a/x/xos/os_test.go +++ /dev/null @@ -1,166 +0,0 @@ -package xos - -import ( - "io/ioutil" - "os" - "path/filepath" - "testing" -) - -func TestTouch(t *testing.T) { - name := filepath.Join(os.TempDir(), "__test-file") - defer Remove(name) - - if err := Touch(name); err != nil { - t.Fatalf("Touch failed: %s", err) - } - if !Exist(name) { - t.Fatalf("Touched file dosen't exist") - } - - if err := Touch(name); err != nil { - t.Fatalf("Touch failed: %s", err) - } -} - -func TestExist(t *testing.T) { - name := filepath.Join(os.TempDir(), "__test-file") - defer Remove(name) - if err := Touch(name); err != nil { - t.Fatalf("Touch failed: %s", err) - } - - if !Exist(name) { - t.Fatalf("Exist got: %t, want: %t ", false, true) - } - if Exist(name + "0") { - t.Fatalf("Exist got: %t, want: %t ", true, false) - } -} - -// TestDirExist tests the existence of a dir in different ways -// by testing against non existent dir, an existent file and a dir. -func TestDirExists(t *testing.T) { - name := filepath.Join(os.TempDir(), "__test-dir") - defer Remove(name) - - if err := Touch(name); err != nil { - t.Fatalf("Touch failed: %s", err) - } - - exists, err := DirExists(name) - if err != nil { - t.Fatalf("DirExist failed: %s", err) - } - if exists { - t.Fatalf("DirExist got: %t, want: %t ", true, false) - } - - if err := Remove(name); err != nil { - t.Fatalf("Remove failed: %s", err) - } - - if err := os.Mkdir(name, os.ModeDir); err != nil { - t.Fatalf("Mkdir failed: %s", err) - } - - exists, err = DirExists(name) - if err != nil { - t.Fatalf("DirExist failed: %s", err) - } - if !exists { - t.Fatalf("DirExist got: %t, want: %t ", false, true) - } - - exists, err = DirExists(name + "0") - if err != nil { - t.Fatalf("DirExist failed: %s", err) - } - if exists { - t.Fatalf("DirExist got: %t, want: %t ", true, false) - } -} - -func TestCopyDir(t *testing.T) { - var ( - srcdir = filepath.Join(os.TempDir(), "__test-dir-src") - dstdir = filepath.Join(os.TempDir(), "__test-dir-dst") - srcsubdir = filepath.Join(srcdir, "a", "b") - file = filepath.Join(srcsubdir, "__test-file") - content = "test" - ) - defer Remove(srcdir, dstdir, file) - - if err := os.MkdirAll(srcsubdir, 0777); err != nil { - t.Fatalf("Mkdir failed: %s", err) - } - - if err := ioutil.WriteFile(file, []byte(content), 0644); err != nil { - t.Fatalf("WriteFile failed: %s", err) - } - - if err := CopyDir(srcdir, dstdir); err != nil { - t.Fatalf("CopyDir failed: %s", err) - } - - b, err := ioutil.ReadFile(file) - if err != nil { - t.Fatalf("ReadFile failed: %s", err) - } - - if string(b) != content { - t.Fatalf("Copy failed with different content - got: %s, want: %s", string(b), content) - } -} - -func TestCopyFile(t *testing.T) { - content := "test" - srcname := filepath.Join(os.TempDir(), "__test-file_src") - dstname := filepath.Join(os.TempDir(), "__test-file_dst") - defer Remove(srcname, dstname) - - if err := ioutil.WriteFile(srcname, []byte(content), 0644); err != nil { - t.Fatalf("WriteFile failed: %s", err) - } - - if err := CopyFile(srcname, dstname); err != nil { - t.Fatalf("Copy failed: %s", err) - } - - b, err := ioutil.ReadFile(dstname) - if err != nil { - t.Fatalf("ReadFile failed: %s", err) - } - - if string(b) != content { - t.Fatalf("Copy failed with different content - got: %s, want: %s", string(b), content) - } -} - -func TestCopySymlink(t *testing.T) { - name := filepath.Join(os.TempDir(), "__test-file_src") - srcsymlink := filepath.Join(os.TempDir(), "__test-symlink_src") - dstsymlink := filepath.Join(os.TempDir(), "__test-symlink_dst") - defer Remove(srcsymlink, name, dstsymlink) - - if err := Touch(name); err != nil { - t.Fatalf("touch file failed: %s", err) - } - - if err := os.Symlink(name, srcsymlink); err != nil { - t.Fatalf("symlink to file failed: %s", err) - } - - if err := CopySymlink(srcsymlink, dstsymlink); err != nil { - t.Fatalf("CopySymlink failed: %s", err) - } - - fi, err := os.Lstat(dstsymlink) - if err != nil { - t.Fatalf("file info failed: %s", err) - } - - if fi.Mode()&os.ModeSymlink == 0 { - t.Fatalf("new file is not symbolic link") - } -}