diff --git a/_testdata/rootfind/manifest.json b/_testdata/rootfind/manifest.json new file mode 100644 index 0000000000..e69de29bb2 diff --git a/_testdata/rootfind/subdir/.gitkeep b/_testdata/rootfind/subdir/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/main_test.go b/main_test.go new file mode 100644 index 0000000000..fc65cb8a2e --- /dev/null +++ b/main_test.go @@ -0,0 +1,42 @@ +package main + +import ( + "os" + "path/filepath" + "testing" +) + +func TestFindRoot(t *testing.T) { + wd, err := os.Getwd() + if err != nil { + t.Fatal(err) + } + + expect := filepath.Join(wd, "_testdata", "rootfind") + + got1, err := findProjectRoot(expect) + if err != nil { + t.Errorf("Unexpected error while finding root: %s", err) + } else if expect != got1 { + t.Errorf("findProjectRoot directly on root dir should have found %s, got %s", expect, got1) + } + + got2, err := findProjectRoot(filepath.Join(expect, "subdir")) + if err != nil { + t.Errorf("Unexpected error while finding root: %s", err) + } else if expect != got2 { + t.Errorf("findProjectRoot on subdir should have found %s, got %s", expect, got2) + } + + got3, err := findProjectRoot(filepath.Join(expect, "nonexistent")) + if err != nil { + t.Errorf("Unexpected error while finding root: %s", err) + } else if expect != got3 { + t.Errorf("findProjectRoot on nonexistent subdir should still work and give %s, got %s", expect, got3) + } + + got4, err := findProjectRoot(filepath.Join(expect, ManifestName)) + if err == nil { + t.Errorf("Should have err'd when trying subdir of file, but returned %s", got4) + } +}