Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitf8b3d6b

Browse files
author
Federico Fissore
committed
Flushing remaining output from BufferedUntilNewLineWriter once process has
ended. Also printing raw bytes instead of converting them into chars.Signed-off-by: Federico Fissore <f.fissore@arduino.cc>
1 parent5abb51e commitf8b3d6b

File tree

4 files changed

+43
-8
lines changed

4 files changed

+43
-8
lines changed

‎src/arduino.cc/builder/builder_utils/utils.go‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -319,17 +319,19 @@ func ExecRecipe(properties map[string]string, recipe string, removeUnsetProperti
319319
}
320320

321321
ifechoOutput {
322-
printToStdOut:=func(sstring) {
323-
logger.UnformattedFprintln(os.Stdout,s)
322+
printToStdOut:=func(data []byte) {
323+
logger.UnformattedWrite(os.Stdout,data)
324324
}
325325
stdout:=&types.BufferedUntilNewLineWriter{PrintFunc:printToStdOut,Buffer: bytes.Buffer{}}
326+
deferstdout.Flush()
326327
command.Stdout=stdout
327328
}
328329

329-
printToStdErr:=func(sstring) {
330-
logger.UnformattedFprintln(os.Stderr,s)
330+
printToStdErr:=func(data []byte) {
331+
logger.UnformattedWrite(os.Stderr,data)
331332
}
332333
stderr:=&types.BufferedUntilNewLineWriter{PrintFunc:printToStdErr,Buffer: bytes.Buffer{}}
334+
deferstderr.Flush()
333335
command.Stderr=stderr
334336

335337
ifechoOutput {

‎src/arduino.cc/builder/i18n/i18n.go‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ var PLACEHOLDER = regexp.MustCompile("{(\\d)}")
4646
typeLoggerinterface {
4747
Fprintln(w io.Writer,levelstring,formatstring,a...interface{})
4848
UnformattedFprintln(w io.Writer,sstring)
49+
UnformattedWrite(w io.Writer,data []byte)
4950
Println(levelstring,formatstring,a...interface{})
5051
Name()string
5152
}
@@ -56,6 +57,8 @@ func (s NoopLogger) Fprintln(w io.Writer, level string, format string, a ...inte
5657

5758
func (sNoopLogger)UnformattedFprintln(w io.Writer,strstring) {}
5859

60+
func (sNoopLogger)UnformattedWrite(w io.Writer,data []byte) {}
61+
5962
func (sNoopLogger)Println(levelstring,formatstring,a...interface{}) {}
6063

6164
func (sNoopLogger)Name()string {
@@ -76,6 +79,10 @@ func (s HumanLogger) Println(format string, level string, a ...interface{}) {
7679
s.Fprintln(os.Stdout,level,Format(format,a...))
7780
}
7881

82+
func (sHumanLogger)UnformattedWrite(w io.Writer,data []byte) {
83+
write(w,data)
84+
}
85+
7986
func (sHumanLogger)Name()string {
8087
return"human"
8188
}
@@ -98,6 +105,10 @@ func (s MachineLogger) Name() string {
98105
return"machine"
99106
}
100107

108+
func (sMachineLogger)UnformattedWrite(w io.Writer,data []byte) {
109+
write(w,data)
110+
}
111+
101112
funcprintMachineFormattedLogLine(w io.Writer,levelstring,formatstring,a []interface{}) {
102113
a=append([]interface{}(nil),a...)
103114
foridx,value:=rangea {
@@ -117,6 +128,12 @@ func fprintln(w io.Writer, s string) {
117128
fmt.Fprintln(w,s)
118129
}
119130

131+
funcwrite(w io.Writer,data []byte) {
132+
lock.Lock()
133+
deferlock.Unlock()
134+
w.Write(data)
135+
}
136+
120137
funcfprintf(w io.Writer,formatstring,a...interface{}) {
121138
lock.Lock()
122139
deferlock.Unlock()

‎src/arduino.cc/builder/test/builder_test.go‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ package test
3232
import (
3333
"arduino.cc/builder"
3434
"arduino.cc/builder/constants"
35+
"arduino.cc/builder/i18n"
3536
"github.com/stretchr/testify/require"
3637
"os"
3738
"os/exec"
@@ -92,6 +93,7 @@ func TestBuilderBridge(t *testing.T) {
9293
context[constants.CTX_OTHER_LIBRARIES_FOLDERS]= []string{"libraries"}
9394
context[constants.CTX_BUILD_PROPERTIES_RUNTIME_IDE_VERSION]="10600"
9495
context[constants.CTX_VERBOSE]=true
96+
context[constants.CTX_LOGGER]= i18n.MachineLogger{}
9597

9698
command:= builder.Builder{}
9799
err:=command.Run(context)
@@ -127,6 +129,8 @@ func TestBuilderSketchWithConfig(t *testing.T) {
127129
context[constants.CTX_BUILT_IN_LIBRARIES_FOLDERS]= []string{"downloaded_libraries"}
128130
context[constants.CTX_OTHER_LIBRARIES_FOLDERS]= []string{"libraries"}
129131
context[constants.CTX_BUILD_PROPERTIES_RUNTIME_IDE_VERSION]="10600"
132+
context[constants.CTX_VERBOSE]=true
133+
context[constants.CTX_LOGGER]= i18n.NoopLogger{}
130134

131135
command:= builder.Builder{}
132136
err:=command.Run(context)

‎src/arduino.cc/builder/types/accessories.go‎

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ type BufferedUntilNewLineWriter struct {
8686
lock sync.Mutex
8787
}
8888

89-
typePrintFuncfunc(string)
89+
typePrintFuncfunc([]byte)
9090

9191
func (w*BufferedUntilNewLineWriter)Write(p []byte) (nint,errerror) {
9292
w.lock.Lock()
@@ -98,10 +98,22 @@ func (w *BufferedUntilNewLineWriter) Write(p []byte) (n int, err error) {
9898
}
9999

100100
bytesUntilNewLine,err:=w.Buffer.ReadBytes('\n')
101-
iferr!=nil&&len(bytesUntilNewLine)>0 {
102-
bytesUntilNewLine=bytesUntilNewLine[:len(bytesUntilNewLine)-1]
103-
w.PrintFunc(string(bytesUntilNewLine))
101+
iferr==nil {
102+
w.PrintFunc(bytesUntilNewLine)
104103
}
105104

106105
returnwrittenToBuffer,err
107106
}
107+
108+
func (w*BufferedUntilNewLineWriter)Flush() {
109+
w.lock.Lock()
110+
deferw.lock.Unlock()
111+
112+
remainingBytes:=w.Buffer.Bytes()
113+
iflen(remainingBytes)>0 {
114+
ifremainingBytes[len(remainingBytes)-1]!='\n' {
115+
remainingBytes=append(remainingBytes,'\n')
116+
}
117+
w.PrintFunc(remainingBytes)
118+
}
119+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp