Skip to content

Commit

Permalink
Don't stream IO in GoList
Browse files Browse the repository at this point in the history
  • Loading branch information
Anonymous committed Jan 2, 2024
1 parent a9c34c2 commit 97d51fe
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 20 deletions.
30 changes: 10 additions & 20 deletions jit/go_cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"bytes"
"encoding/json"
"fmt"
"io"
"log"
"os"
"os/exec"
Expand Down Expand Up @@ -173,30 +172,21 @@ func GoListStd(goCmd string) map[string]struct{} {
func GoList(goCmd, absPath, workDir string, verbose bool) (*Package, error) {
golistCmd := exec.Command(goCmd, "list", "-json", absPath)
golistCmd.Dir = workDir
stdoutReader, stdoutWriter := io.Pipe()
stdErrBuf := &bytes.Buffer{}
if verbose {
golistCmd.Stdout = stdoutWriter
golistCmd.Stderr = io.MultiWriter(os.Stderr, stdErrBuf)
} else {
golistCmd.Stdout = stdoutWriter
golistCmd.Stderr = stdErrBuf
}
listDec := json.NewDecoder(stdoutReader)
err := golistCmd.Start()
if err != nil {
return nil, fmt.Errorf("failed to start 'go list -json %s': %w\nstderr:\n%s", absPath, err, stdErrBuf.String())
}

stdoutBuf, stdErrBuf := &bytes.Buffer{}, &bytes.Buffer{}

golistCmd.Stdout = stdoutBuf
golistCmd.Stderr = stdErrBuf
pkg := Package{}
err = listDec.Decode(&pkg)

err := golistCmd.Run()
if err != nil {
return nil, fmt.Errorf("failed to decode response of 'go list -json %s': %w\nstderr:\n%s", absPath, err, stdErrBuf.String())
return nil, fmt.Errorf("failed to run 'go list -json %s': %w\nstderr:\n%s", absPath, err, stdErrBuf.String())
}
err = golistCmd.Wait()
err = json.Unmarshal(stdoutBuf.Bytes(), &pkg)
if err != nil {
return nil, fmt.Errorf("failed to wait for 'go list -json %s': %w\nstderr:\n%s", absPath, err, stdErrBuf.String())
return nil, fmt.Errorf("failed to decode response of 'go list -json %s': %w\nstderr:\n%s", absPath, err, stdErrBuf.String())
}

if len(pkg.GoFiles)+len(pkg.CgoFiles) == 0 {
return nil, fmt.Errorf("no Go files found in directory %s", absPath)
}
Expand Down
1 change: 1 addition & 0 deletions jit/jit_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1478,6 +1478,7 @@ func TestK8s(t *testing.T) {
}

conf := baseConfig
conf.DebugLog = true
conf.UnsafeBlindlyUseFirstmoduleTypes = true
data := testData{
files: []string{"./testdata/test_k8s/test.go"},
Expand Down

0 comments on commit 97d51fe

Please sign in to comment.