Improve Windows compatibility (#118)

- Use travis build matrix to test on Windows and macOS
- Make utility func compatible with host OS. Use filepath package to
  manipulate path strings for stripping $GOPATH from working directory.
- Delegate to go/build pkg for getting Go paths

Co-authored-by: Mike Lee <mike.lee@safeguardproperties.com>
Co-authored-by: Lucas Bremgartner <lucas@bremis.ch>
This commit is contained in:
Suhas Karanth 2020-01-25 16:51:10 +05:30 committed by GitHub
parent 072c0cd09b
commit 7615cbe602
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 16 deletions

View File

@ -6,11 +6,20 @@ branches:
only:
- master
go:
- 1.11.x
- 1.12.x
- 1.13.x
- tip
jobs:
include:
- os: linux
go: 1.11.x
- os: linux
go: 1.12.x
- os: linux
go: 1.13.x
- os: linux
go: tip
- os: osx
go: 1.13.x
- os: windows
go: 1.13.x
before_install:
- go get golang.org/x/lint/golint

View File

@ -4,6 +4,7 @@ import (
"bytes"
"errors"
"fmt"
"go/build"
"go/format"
"go/types"
"io"
@ -355,18 +356,15 @@ func stripVendorPath(p string) string {
return strings.TrimLeft(path.Join(parts[1:]...), "/")
}
// stripGopath takes the directory to a package and remove the gopath to get the
// canonical package name.
//
// taken from https://github.com/ernesto-jimenez/gogen
// Copyright (c) 2015 Ernesto Jiménez
// stripGopath takes the directory to a package and removes the
// $GOPATH/src path to get the canonical package name.
func stripGopath(p string) string {
for _, gopath := range gopaths() {
p = strings.TrimPrefix(p, path.Join(gopath, "src")+"/")
for _, srcDir := range build.Default.SrcDirs() {
rel, err := filepath.Rel(srcDir, p)
if err != nil || strings.HasPrefix(rel, "..") {
continue
}
return filepath.ToSlash(rel)
}
return p
}
func gopaths() []string {
return strings.Split(os.Getenv("GOPATH"), string(filepath.ListSeparator))
}