From b44548ae6ac7f353d03366d7d115508500b00f0e Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 12 Oct 2016 15:26:21 -0400 Subject: [PATCH] go/vcs: accept plain file for .vcs (instead of directory) Sometimes .git is a plain file; maybe others will follow. Fixes golang/go#10322. Change-Id: Id57424998c207080c3ed5826b1e5e091fa26aad5 Reviewed-on: https://go-review.googlesource.com/21430 Run-TryBot: Russ Cox Reviewed-by: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- go/vcs/vcs.go | 2 +- go/vcs/vcs_test.go | 20 ++++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/go/vcs/vcs.go b/go/vcs/vcs.go index 58299046..e14da0be 100644 --- a/go/vcs/vcs.go +++ b/go/vcs/vcs.go @@ -347,7 +347,7 @@ func FromDir(dir, srcRoot string) (vcs *Cmd, root string, err error) { origDir := dir for len(dir) > len(srcRoot) { for _, vcs := range vcsList { - if fi, err := os.Stat(filepath.Join(dir, "."+vcs.Cmd)); err == nil && fi.IsDir() { + if _, err := os.Stat(filepath.Join(dir, "."+vcs.Cmd)); err == nil { return vcs, filepath.ToSlash(dir[len(srcRoot)+1:]), nil } } diff --git a/go/vcs/vcs_test.go b/go/vcs/vcs_test.go index 9eab67be..5817ded1 100644 --- a/go/vcs/vcs_test.go +++ b/go/vcs/vcs_test.go @@ -56,11 +56,23 @@ func TestFromDir(t *testing.T) { } defer os.RemoveAll(tempDir) - for _, vcs := range vcsList { + for j, vcs := range vcsList { dir := filepath.Join(tempDir, "example.com", vcs.Name, "."+vcs.Cmd) - err := os.MkdirAll(dir, 0755) - if err != nil { - t.Fatal(err) + if j&1 == 0 { + err := os.MkdirAll(dir, 0755) + if err != nil { + t.Fatal(err) + } + } else { + err := os.MkdirAll(filepath.Dir(dir), 0755) + if err != nil { + t.Fatal(err) + } + f, err := os.Create(dir) + if err != nil { + t.Fatal(err) + } + f.Close() } want := RepoRoot{