package dotfiles import ( "os" "path/filepath" "testing" ) func TestDirectory(t *testing.T) { testdir := "test" Directory = testdir if directory() != testdir { t.Fatalf("%s != %s", directory(), testdir) } } func TestDir(t *testing.T) { tmpdir, err := os.MkdirTemp("", "out-of-tree_") if err != nil { return } defer os.RemoveAll(tmpdir) Directory = tmpdir for _, testdir := range []string{"a", "a/b", "a/b/c"} { expected := filepath.Join(tmpdir, testdir) t.Log(testdir, "->", expected) resdir := Dir(testdir) if resdir != expected { t.Fatalf("%s != %s", resdir, expected) } fi, err := os.Stat(expected) if err != nil { t.Fatal(err) } if !fi.IsDir() { t.Fatal("not a directory") } } testdir := []string{"a", "b", "c", "d"} expected := filepath.Join(append([]string{tmpdir}, testdir...)...) t.Log(testdir, "->", expected) resdir := Dir(testdir...) if resdir != expected { t.Fatalf("%s != %s", resdir, expected) } fi, err := os.Stat(expected) if err != nil { t.Fatal(err) } if !fi.IsDir() { t.Fatal("not a directory") } } func TestFile(t *testing.T) { tmpdir, err := os.MkdirTemp("", "out-of-tree_") if err != nil { return } defer os.RemoveAll(tmpdir) Directory = tmpdir for _, testfile := range []string{"a", "a/b", "a/b/c"} { expected := filepath.Join(tmpdir, testfile) t.Log(testfile, "->", expected) resfile := File(testfile) if resfile != expected { t.Fatalf("%s != %s", resfile, expected) } _, err := os.Stat(expected) if err == nil { t.Fatal("should not exist") } fi, err := os.Stat(filepath.Dir(expected)) if err != nil { t.Fatal(err) } if !fi.IsDir() { t.Fatal("not a directory") } } testfile := []string{"a", "b", "c"} expected := filepath.Join(append([]string{tmpdir}, testfile...)...) t.Log(testfile, "->", expected) resdir := Dir(testfile...) if resdir != expected { t.Fatalf("%s != %s", resdir, expected) } fi, err := os.Stat(expected) if err != nil { t.Fatal(err) } if !fi.IsDir() { t.Fatal("not a directory") } }