Skip to content

Commit c922138

Browse files
committed
Merge remote-tracking branch 'origin/main' into jjs/buildsecrets
2 parents b10c6e3 + 457b73f commit c922138

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

envbuilder.go

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package envbuilder
22

33
import (
4-
"bufio"
54
"bytes"
65
"context"
76
"encoding/base64"
@@ -887,16 +886,8 @@ func run(ctx context.Context, opts options.Options, execArgs *execArgsInfo) erro
887886
cmd.Stderr = os.Stderr
888887
cmd.Stdin = os.Stdin
889888
} else {
890-
var buf bytes.Buffer
891-
go func() {
892-
scanner := bufio.NewScanner(&buf)
893-
for scanner.Scan() {
894-
opts.Logger(log.LevelInfo, "%s", scanner.Text())
895-
}
896-
}()
897-
898-
cmd.Stdout = &buf
899-
cmd.Stderr = &buf
889+
cmd.Stdout = newWriteLogger(opts.Logger, log.LevelInfo)
890+
cmd.Stderr = newWriteLogger(opts.Logger, log.LevelError)
900891
}
901892
err = cmd.Run()
902893
if err != nil {
@@ -1818,6 +1809,23 @@ func onceErrFunc(f func() error) func() error {
18181809
}
18191810
}
18201811

1812+
type writeLogger struct {
1813+
logf log.Func
1814+
level log.Level
1815+
}
1816+
1817+
func newWriteLogger(logf log.Func, level log.Level) io.Writer {
1818+
return writeLogger{logf: logf, level: level}
1819+
}
1820+
1821+
func (l writeLogger) Write(p []byte) (n int, err error) {
1822+
lines := bytes.Split(p, []byte("\n"))
1823+
for _, line := range lines {
1824+
l.logf(l.level, "%s", line)
1825+
}
1826+
return len(p), nil
1827+
}
1828+
18211829
// Allows quick testing of layer caching using a local directory!
18221830
func serveLocalRegistry(ctx context.Context, logf log.Func, layerCacheDir string) (string, func(), error) {
18231831
noop := func() {}

integration/integration_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ func TestLogs(t *testing.T) {
126126
envbuilderEnv("GIT_URL", srv.URL),
127127
"CODER_AGENT_URL=" + logSrv.URL,
128128
"CODER_AGENT_TOKEN=" + token,
129+
"ENVBUILDER_SETUP_SCRIPT=/bin/sh -c 'echo MY${NO_MATCH_ENV}_SETUP_SCRIPT_OUT; echo MY${NO_MATCH_ENV}_SETUP_SCRIPT_ERR' 1>&2",
129130
"ENVBUILDER_INIT_SCRIPT=env",
130131
}})
131132
require.NoError(t, err)
@@ -158,6 +159,8 @@ func TestLogs(t *testing.T) {
158159
require.NoError(t, err)
159160
logs := string(logBytes)
160161
require.Contains(t, logs, "CODER_AGENT_SUBSYSTEM=envbuilder")
162+
require.Contains(t, logs, "MY_SETUP_SCRIPT_OUT")
163+
require.Contains(t, logs, "MY_SETUP_SCRIPT_ERR")
161164
}
162165

163166
func TestInitScriptInitCommand(t *testing.T) {

0 commit comments

Comments
 (0)