From 16ae335f48749ec11f8585aab762341310d3db3c Mon Sep 17 00:00:00 2001 From: Gert-Jan Timmer Date: Wed, 16 Jan 2019 18:06:03 +0100 Subject: [PATCH] Fix End2End test for non-windows platforms Binary name for string was hardcoded to `.exe` --- endtoend_test.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/endtoend_test.go b/endtoend_test.go index 3397c06..98e66a4 100644 --- a/endtoend_test.go +++ b/endtoend_test.go @@ -16,10 +16,24 @@ import ( "os" "os/exec" "path/filepath" + "runtime" "strings" "testing" ) +var ( + // GOEXE defines the executable file name suffix (".exe" on Windows, "" on other systems). + // Must be defined here, cannot be read from ENVIRONMENT variables + GOEXE = "" +) + +func init() { + // Set GOEXE for Windows platform + if runtime.GOOS == "windows" { + GOEXE = ".exe" + } +} + // This file contains a test that compiles and runs each program in testdata // after generating the string method for its type. The rule is that for testdata/x.go // we run stringer -type X and then compile and run the program. The resulting @@ -31,8 +45,9 @@ func TestEndToEnd(t *testing.T) { t.Fatal(err) } defer os.RemoveAll(dir) + // Create stringer in temporary directory. - stringer := filepath.Join(dir, "stringer.exe") + stringer := filepath.Join(dir, fmt.Sprintf("stringer%s", GOEXE)) err = run("go", "build", "-o", stringer) if err != nil { t.Fatalf("building stringer: %s", err)