add integrational tests
This commit is contained in:
parent
830020558b
commit
d789cd77e0
77
pkg/api/api_test.go
Normal file
77
pkg/api/api_test.go
Normal file
@ -0,0 +1,77 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
)
|
||||
|
||||
const testGoSource = `
|
||||
package main
|
||||
|
||||
import (
|
||||
_ "github.com/pkg/errors"
|
||||
_ "golang.org/x/net/websocket"
|
||||
)
|
||||
|
||||
func main() {}
|
||||
`
|
||||
|
||||
func TestBuildWithProxy(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("testing with external VCS might be slow")
|
||||
return
|
||||
}
|
||||
|
||||
// Start a proxy
|
||||
api := New(Log(t.Log), Memory(t.Log, 128*1024*1024))
|
||||
ln, err := net.Listen("tcp", ":0")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer ln.Close()
|
||||
go (&http.Server{Handler: api}).Serve(ln)
|
||||
|
||||
// Create temporary directory for a minimal test Go project
|
||||
tmpDir, err := ioutil.TempDir(os.TempDir(), "gomodproxy_test")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer func() {
|
||||
// Cleanup requires changing the permissions, because some files generated
|
||||
// by "go build" are read-only.
|
||||
filepath.Walk(tmpDir, func(f string, fi os.FileInfo, err error) error {
|
||||
return os.Chmod(f, 0777)
|
||||
})
|
||||
if err := os.RemoveAll(tmpDir); err != nil {
|
||||
t.Log("RemoveAll", tmpDir, err)
|
||||
}
|
||||
}()
|
||||
|
||||
// Generate test main.go and go.mod
|
||||
err = ioutil.WriteFile(filepath.Join(tmpDir, "main.go"), []byte(testGoSource), 0644)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = ioutil.WriteFile(filepath.Join(tmpDir, "go.mod"), []byte("module gomodproxy_test"), 0644)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// Perform Go build
|
||||
cmd := exec.Command("go", "build")
|
||||
cmd.Dir = tmpDir
|
||||
cmd.Env = append(os.Environ(),
|
||||
"GOPATH="+filepath.Join(tmpDir, "_gopath"),
|
||||
"GOCACHE="+filepath.Join(tmpDir, "_gocache"),
|
||||
"GOPROXY=http://"+ln.Addr().String(),
|
||||
"GO111MODULE=on")
|
||||
out, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
t.Fatal(string(out), err)
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user