diff --git a/excavator_fail/excavator_fail.go b/excavator_fail/excavator_fail.go new file mode 100644 index 00000000..7ecb4a94 --- /dev/null +++ b/excavator_fail/excavator_fail.go @@ -0,0 +1,21 @@ +package fail + +fail + +/* +This is a non-compiling file that has been added to explicitly ensure that CI fails. +It also contains the command that caused the failure and its output. +Remove this file if debugging locally. + +./godelw verify failed after updating godel plugins and assets + +Command that caused error: +./godelw exec -- go fix ./init/cli ./init/cli/time ./init/main ./integration_test ./launcher/main ./launchlib + +Output: +# github.com/palantir/go-java-launcher/launchlib +# [github.com/palantir/go-java-launcher/launchlib] +fix: applied 15 of 16 fixes; 6 files updated. (Re-run the command to apply more.) +Error: exit status 1 + +*/ diff --git a/init/cli/lib.go b/init/cli/lib.go index 64a6eaa0..19b9de4d 100644 --- a/init/cli/lib.go +++ b/init/cli/lib.go @@ -16,7 +16,7 @@ package cli import ( "fmt" - "io/ioutil" + "os" "os/exec" "path/filepath" @@ -95,7 +95,7 @@ func getServiceStatus(ctx cli.Context, loggers launchlib.ServiceLoggers) (*servi } func getCmdProcess(name string) (*int, *os.Process, error) { - pidBytes, err := ioutil.ReadFile(fmt.Sprintf(pidfileFormat, name)) + pidBytes, err := os.ReadFile(fmt.Sprintf(pidfileFormat, name)) if err != nil { if os.IsNotExist(err) { return nil, nil, nil diff --git a/init/cli/start.go b/init/cli/start.go index 59547956..c123ae91 100644 --- a/init/cli/start.go +++ b/init/cli/start.go @@ -16,7 +16,8 @@ package cli import ( "fmt" - "io/ioutil" + "io/fs" + "os" "path/filepath" "strconv" @@ -59,7 +60,7 @@ func startService(ctx cli.Context, notRunningCmds map[string]CommandContext) err return errors.Wrapf(err, "unable to create pidfile directory.") } - if err := ioutil.WriteFile(pidfile, []byte(strconv.Itoa(cmd.Command.Process.Pid)), 0644); err != nil { + if err := os.WriteFile(pidfile, []byte(strconv.Itoa(cmd.Command.Process.Pid)), 0644); err != nil { return errors.Wrapf(err, "failed to save pid to file for command '%s'", name) } } diff --git a/integration_test/go_init_integration_test.go b/integration_test/go_init_integration_test.go index 3ae86bee..f74c7661 100644 --- a/integration_test/go_init_integration_test.go +++ b/integration_test/go_init_integration_test.go @@ -18,6 +18,7 @@ import ( "bytes" "fmt" "io" + "io/fs" "io/ioutil" "os" "os/exec" @@ -108,7 +109,7 @@ func TestInitStart_TruncatesStartupLogFile(t *testing.T) { stringThatShouldDisappear := "this should disappear from the log file after starting" require.NoError(t, os.MkdirAll(filepath.Dir(primaryOutputFile), 0755)) - require.NoError(t, ioutil.WriteFile(primaryOutputFile, []byte(stringThatShouldDisappear), 0644)) + require.NoError(t, os.WriteFile(primaryOutputFile, []byte(stringThatShouldDisappear), 0644)) result := runInit(t, "start") assert.NotContains(t, result.startupLog, stringThatShouldDisappear) @@ -280,7 +281,7 @@ func TestInitStart_TwoConfiguredZeroWrittenZeroRunning(t *testing.T) { startupLog := readStartupLog(t) assert.Contains(t, startupLog, "Using JAVA_HOME") assert.Contains(t, startupLog, "main method") - sidecarStartupLogBytes, err := ioutil.ReadFile(subProcessOutputFile) + sidecarStartupLogBytes, err := os.ReadFile(subProcessOutputFile) require.NoError(t, err) sidecarStartupLog := string(sidecarStartupLogBytes) assert.Contains(t, sidecarStartupLog, "Using JAVA_HOME") @@ -310,7 +311,7 @@ func TestInitStart_TwoConfiguredOneWrittenZeroRunning(t *testing.T) { startupLog := readStartupLog(t) assert.Contains(t, startupLog, "Using JAVA_HOME") assert.Contains(t, startupLog, "main method") - sidecarStartupLogBytes, err := ioutil.ReadFile(subProcessOutputFile) + sidecarStartupLogBytes, err := os.ReadFile(subProcessOutputFile) require.NoError(t, err) sidecarStartupLog := string(sidecarStartupLogBytes) assert.Contains(t, sidecarStartupLog, "Using JAVA_HOME") @@ -337,7 +338,7 @@ func TestInitStart_TwoConfiguredOneWrittenOneRunning(t *testing.T) { assert.Equal(t, 0, result.exitCode) time.Sleep(time.Second) - sidecarStartupLogBytes, err := ioutil.ReadFile(subProcessOutputFile) + sidecarStartupLogBytes, err := os.ReadFile(subProcessOutputFile) require.NoError(t, err) sidecarStartupLog := string(sidecarStartupLogBytes) assert.Contains(t, sidecarStartupLog, "Using JAVA_HOME") @@ -365,7 +366,7 @@ func TestInitStart_TwoConfiguredTwoWrittenZeroRunning(t *testing.T) { startupLog := readStartupLog(t) assert.Contains(t, startupLog, "Using JAVA_HOME") assert.Contains(t, startupLog, "main method") - sidecarStartupLogBytes, err := ioutil.ReadFile(subProcessOutputFile) + sidecarStartupLogBytes, err := os.ReadFile(subProcessOutputFile) require.NoError(t, err) sidecarStartupLog := string(sidecarStartupLogBytes) assert.Contains(t, sidecarStartupLog, "Using JAVA_HOME") @@ -392,7 +393,7 @@ func TestInitStart_TwoConfiguredTwoWrittenOneRunning(t *testing.T) { assert.Equal(t, 0, result.exitCode) time.Sleep(time.Second) - sidecarStartupLogBytes, err := ioutil.ReadFile(subProcessOutputFile) + sidecarStartupLogBytes, err := os.ReadFile(subProcessOutputFile) require.NoError(t, err) sidecarStartupLog := string(sidecarStartupLogBytes) assert.Contains(t, sidecarStartupLog, "Using JAVA_HOME") @@ -418,7 +419,7 @@ func TestInitStatus_DoesNotTruncateStartupLogFile(t *testing.T) { stringThatShouldRemain := "this should remain in the log file after running" require.NoError(t, os.MkdirAll(filepath.Dir(primaryOutputFile), 0755)) - require.NoError(t, ioutil.WriteFile(primaryOutputFile, []byte(stringThatShouldRemain), 0644)) + require.NoError(t, os.WriteFile(primaryOutputFile, []byte(stringThatShouldRemain), 0644)) result := runInit(t, "status") assert.Contains(t, result.startupLog, stringThatShouldRemain) @@ -593,7 +594,7 @@ func TestInitStop_DoesNotTruncateStartupLogFile(t *testing.T) { stringThatShouldRemain := "this should remain in the log file after running" require.NoError(t, os.MkdirAll(filepath.Dir(primaryOutputFile), 0755)) - require.NoError(t, ioutil.WriteFile(primaryOutputFile, []byte(stringThatShouldRemain), 0644)) + require.NoError(t, os.WriteFile(primaryOutputFile, []byte(stringThatShouldRemain), 0644)) result := runInit(t, "stop") assert.Contains(t, result.startupLog, stringThatShouldRemain) @@ -859,7 +860,7 @@ func runInitWithClock(t *testing.T, clock time2.Clock, args ...string) <-chan in } func readStartupLog(t *testing.T) string { - startupLogBytes, err := ioutil.ReadFile(primaryOutputFile) + startupLogBytes, err := os.ReadFile(primaryOutputFile) require.NoError(t, err) return string(startupLogBytes) } @@ -867,7 +868,7 @@ func readStartupLog(t *testing.T) string { func writePids(t *testing.T, pids servicePids) { require.NoError(t, os.MkdirAll(pidfolder, 0755)) for name, pid := range pids { - require.NoError(t, ioutil.WriteFile(fmt.Sprintf(pidfileFormat, name), []byte(strconv.Itoa(pid)), 0644)) + require.NoError(t, os.WriteFile(fmt.Sprintf(pidfileFormat, name), []byte(strconv.Itoa(pid)), 0644)) } } @@ -887,7 +888,7 @@ func readPids(t *testing.T) servicePids { require.Len(t, parts, 2, "invalid pidfile format, does not have only a name and extension") require.Equal(t, parts[1], "pid", "invalid pidfile format, does not end with .pid") - pidBytes, err := ioutil.ReadFile(path) + pidBytes, err := os.ReadFile(path) require.NoError(t, err, "failed to read pidfile %s", path) pid, err := strconv.Atoi(string(pidBytes)) require.NoError(t, err, "pidfile '%s', did not contain an integer", path) diff --git a/integration_test/go_java_launcher_integration_test.go b/integration_test/go_java_launcher_integration_test.go index 2bc6bf82..6d2d9f34 100644 --- a/integration_test/go_java_launcher_integration_test.go +++ b/integration_test/go_java_launcher_integration_test.go @@ -216,7 +216,7 @@ func TestComputeJVMHeapSize(t *testing.T) { name: "computes heap as 10% of memory limit using heapPercentage", numHostProcessors: 3, memoryLimit: 10 * launchlib.BytesInMebibyte, - heapPercentage: toPointer(10.0), + heapPercentage: new(10.0), expectedMaxHeapSize: 1 * launchlib.BytesInMebibyte, }, } { @@ -260,7 +260,7 @@ func runMultiProcess(t *testing.T, cmd *exec.Cmd) map[string]int { require.NoError(t, err) children := map[string]int{} - for _, child := range strings.Split(strings.TrimSpace(string(output)), "\n") { + for child := range strings.SplitSeq(strings.TrimSpace(string(output)), "\n") { parts := strings.SplitN(strings.TrimSpace(child), " ", 2) cpid, err := strconv.Atoi(parts[0]) cmdline := strings.TrimSpace(parts[1]) @@ -309,6 +309,7 @@ func TestMain(m *testing.M) { os.Exit(m.Run()) } +//go:fix inline func toPointer[T any](t T) *T { - return &t + return new(t) }