48 lines
837 B
Go
48 lines
837 B
Go
package api
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"os"
|
|
"testing"
|
|
|
|
"go.uber.org/goleak"
|
|
)
|
|
|
|
const apiTestVscodeFixtureEnv = "KANDEV_API_TEST_VSCODE_FIXTURE"
|
|
|
|
func TestMain(m *testing.M) {
|
|
if os.Getenv(apiTestVscodeFixtureEnv) != "" {
|
|
runAPITestVscodeFixture()
|
|
return
|
|
}
|
|
goleak.VerifyTestMain(m)
|
|
}
|
|
|
|
func runAPITestVscodeFixture() {
|
|
address := ""
|
|
for i, arg := range os.Args[:len(os.Args)-1] {
|
|
if arg == "--bind-addr" {
|
|
address = os.Args[i+1]
|
|
break
|
|
}
|
|
}
|
|
if address == "" {
|
|
fmt.Fprintln(os.Stderr, "VS Code fixture: missing --bind-addr")
|
|
os.Exit(2)
|
|
}
|
|
listener, err := net.Listen("tcp", address)
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "VS Code fixture: listen: %v\n", err)
|
|
os.Exit(2)
|
|
}
|
|
defer func() { _ = listener.Close() }()
|
|
for {
|
|
conn, err := listener.Accept()
|
|
if err != nil {
|
|
return
|
|
}
|
|
_ = conn.Close()
|
|
}
|
|
}
|