Removed compilation step inside main_test
Inspired by and
@@ -15,7 +15,6 @@ package main
import (
"context"
- "flag"
"fmt"
"net/http"
"os"
@@ -31,35 +30,23 @@ import (
"github.com/prometheus/prometheus/util/testutil"
)
-var promPath string
+var promPath = os.Args[0]
var promConfig = filepath.Join("..", "..", "documentation", "examples", "prometheus.yml")
var promData = filepath.Join(os.TempDir(), "data")
func TestMain(m *testing.M) {
- flag.Parse()
- if testing.Short() {
- os.Exit(m.Run())
+ for i, arg := range os.Args {
+ if arg == "-test.main" {
+ os.Args = append(os.Args[:i], os.Args[i+1:]...)
+ main()
+ return
}
- // On linux with a global proxy the tests will fail as the go client(http,grpc) tries to connect through the proxy.
- os.Setenv("no_proxy", "localhost,127.0.0.1,0.0.0.0,:")
-
- var err error
- promPath, err = os.Getwd()
- if err != nil {
- fmt.Printf("can't get current dir :%s \n", err)
- os.Exit(1)
}
- promPath = filepath.Join(promPath, "prometheus")
- build := exec.Command("go", "build", "-o", promPath)
- output, err := build.CombinedOutput()
- if err != nil {
- fmt.Printf("compilation error :%s \n", output)
- os.Exit(1)
- }
+ // On linux with a global proxy the tests will fail as the go client(http,grpc) tries to connect through the proxy.
+ os.Setenv("no_proxy", "localhost,127.0.0.1,0.0.0.0,:")
exitCode := m.Run()
- os.Remove(promPath)
os.RemoveAll(promData)
os.Exit(exitCode)
}
@@ -70,7 +57,7 @@ func TestStartupInterrupt(t *testing.T) {
t.Skip("skipping test in short mode.")
}
- prom := exec.Command(promPath, "--config.file="+promConfig, "--storage.tsdb.path="+promData)
+ prom := exec.Command(promPath, "-test.main", "--config.file="+promConfig, "--storage.tsdb.path="+promData)
err := prom.Start()
if err != nil {
t.Errorf("execution error: %v", err)
@@ -170,7 +157,7 @@ func TestFailedStartupExitCode(t *testing.T) {
fakeInputFile := "fake-input-file"
expectedExitStatus := 1
- prom := exec.Command(promPath, "--config.file="+fakeInputFile)
+ prom := exec.Command(promPath, "-test.main", "--config.file="+fakeInputFile)
err := prom.Run()
testutil.NotOk(t, err)
@@ -258,7 +245,7 @@ func TestWALSegmentSizeBounds(t *testing.T) {
}
for size, expectedExitStatus := range map[string]int{"9MB": 1, "257MB": 1, "10": 2, "1GB": 1, "12MB": 0} {
- prom := exec.Command(promPath, "--storage.tsdb.wal-segment-size="+size, "--config.file="+promConfig)
+ prom := exec.Command(promPath, "-test.main", "--storage.tsdb.wal-segment-size="+size, "--config.file="+promConfig)
err := prom.Start()
testutil.Ok(t, err)
