• Dmitri Shuralyov's avatar
    cmd/go: fix vcsFromDir returning bad root on Windows · b6cd6d7d
    Dmitri Shuralyov authored
    Apply golang/tools@5804fef4c0556d3e5e7d2440740a3d7aced7d58b.
    
    In the context of cmd/go build tool, import path is a '/'-separated path.
    This can be inferred from `go help importpath` and `go help packages`.
    vcsFromDir documentation says on return, root is the import path
    corresponding to the root of the repository. On Windows and other
    OSes where os.PathSeparator is not '/', that wasn't true since root
    would contain characters other than '/', and therefore it wasn't a
    valid import path corresponding to the root of the repository.
    Fix that by using filepath.ToSlash.
    
    Add test coverage for vcsFromDir, it was previously not tested.
    It's taken from golang.org/x/tools/go/vcs tests, and modified to
    improve style.
    
    Additionally, remove an unneccessary statement from the documentation
    "(thus root is a prefix of importPath)". There is no variable
    importPath that is being referred to (it's possible p.ImportPath
    was being referred to). Without it, the description of root value
    matches the documentation of repoRoot.root struct field:
    
    	// root is the import path corresponding to the root of the
    	// repository
    	root string
    
    Rename and change signature of vcsForDir(p *Package) to
    vcsFromDir(dir, srcRoot string). This is more in sync with the x/tools
    version. It's also simpler, since vcsFromDir only needs those two
    values from Package, and nothing more. Change "for" to "from" in name
    because it's more consistent and clear.
    
    Update usage of vcsFromDir to match the new signature, and respect
    that returned root is a '/'-separated path rather than a os.PathSeparator
    separated path.
    
    Fixes #15040.
    Updates #7723.
    Helps #11490.
    
    Change-Id: Idf51b9239f57248739daaa200aa1c6e633cb5f7f
    Reviewed-on: https://go-review.googlesource.com/21345Reviewed-by: 's avatarAlex Brainman <alex.brainman@gmail.com>
    Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    b6cd6d7d
Name
Last commit
Last update
.github Loading commit data...
api Loading commit data...
doc Loading commit data...
lib/time Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README.md Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...