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

Commit30a0cf2

Browse files
committed
refactoring code for testing
1 parent55a1259 commit30a0cf2

File tree

2 files changed

+47
-97
lines changed

2 files changed

+47
-97
lines changed

‎pkg/board/board.go‎

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -369,13 +369,6 @@ func EnableNetworkMode(ctx context.Context, conn remote.RemoteConn) error {
369369
}
370370

371371
funcsetSerialNumber(ctx context.Context,conn remote.RemoteConn,serialNumber,filePathstring)error {
372-
serialCheckRegex:=regexp.MustCompile(`<\s*txt-record\s*>\s*serial_number=\S+\s*<\s*/txt-record\s*>`)
373-
serviceEndTag:=regexp.MustCompile(`</service>`)
374-
newSerialTemplate:=`<txt-record>serial_number=%s</txt-record>
375-
`
376-
ifserialNumber=="" {
377-
returnerrors.New("missing or empty serial number")
378-
}
379372
data,err:=os.ReadFile(filePath)
380373
iferr!=nil {
381374
ifos.IsNotExist(err) {
@@ -384,39 +377,58 @@ func setSerialNumber(ctx context.Context, conn remote.RemoteConn, serialNumber,
384377
}
385378
returnerr
386379
}
387-
ifserialCheckRegex.Match(data) {
380+
newData,err:=setSerialNumberContent(data,serialNumber)
381+
iferr!=nil {
382+
returnerr
383+
}
384+
ifnewData==nil {
388385
returnnil
389386
}
387+
tmpPath:="/tmp/avahi_arduino_conf.service"
388+
iferr:=conn.WriteFile(bytes.NewReader(newData),tmpPath);err!=nil {
389+
returnfmt.Errorf("failed to write temporary file on remote: %w",err)
390+
}
391+
ifout,err:=conn.GetCmd("sudo","mv",tmpPath,filePath).Output(ctx);err!=nil {
392+
returnfmt.Errorf("failed to move file into place with sudo mv: %w: %s",err,string(out))
393+
}
394+
ifout,err:=conn.GetCmd("sudo","chmod","0644",filePath).Output(ctx);err!=nil {
395+
slog.Warn("failed to set permissions on remote service file","file",filePath,"error",err,"output",string(out))
396+
}
397+
returnnil
398+
}
399+
400+
funcsetSerialNumberContent(data []byte,serialNumberstring) (newData []byte,errerror) {
401+
serialCheckRegex:=regexp.MustCompile(`<\s*txt-record\s*>\s*serial_number=\S+\s*<\s*/txt-record\s*>`)
402+
serviceEndTag:=regexp.MustCompile(`</service>`)
403+
newSerialTemplate:=`<txt-record>serial_number=%s</txt-record>
404+
`
405+
ifserialNumber=="" {
406+
returnnil,errors.New("missing or empty serial number")
407+
}
408+
409+
ifserialCheckRegex.Match(data) {
410+
returnnil,nil
411+
}
412+
390413
loc:=serviceEndTag.FindIndex(data)
391414
ifloc==nil {
392-
returnerrors.New(" </service> tag not found in the service file")
415+
returnnil,errors.New(" </service> tag not found in the service file")
393416
}
394417

395418
varbuf bytes.Buffer
396419
_,err=buf.Write(data[:loc[0]])
397420
iferr!=nil {
398-
returnerr
421+
returnnil,err
399422
}
400423
_,err=buf.WriteString(fmt.Sprintf(newSerialTemplate,serialNumber))
401424
iferr!=nil {
402-
returnerr
425+
returnnil,err
403426
}
404427
_,err=buf.Write(data[loc[0]:])
405428
iferr!=nil {
406-
returnerr
429+
returnnil,err
407430
}
408-
409-
tmpPath:="/tmp/avahi_arduino_conf.service"
410-
iferr:=conn.WriteFile(bytes.NewReader(buf.Bytes()),tmpPath);err!=nil {
411-
returnfmt.Errorf("failed to write temporary file on remote: %w",err)
412-
}
413-
ifout,err:=conn.GetCmd("sudo","mv",tmpPath,filePath).Output(ctx);err!=nil {
414-
returnfmt.Errorf("failed to move file into place with sudo mv: %w: %s",err,string(out))
415-
}
416-
ifout,err:=conn.GetCmd("sudo","chmod","0644",filePath).Output(ctx);err!=nil {
417-
slog.Warn("failed to set permissions on remote service file","file",filePath,"error",err,"output",string(out))
418-
}
419-
returnnil
431+
returnbuf.Bytes(),nil
420432
}
421433

422434
funcNetworkModeStatus(ctx context.Context,conn remote.RemoteConn) (bool,error) {

‎pkg/board/board_test.go‎

Lines changed: 11 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ func TestEnsurePlatformInstalled(t *testing.T) {
3333
}
3434

3535
funcTestSetSerialNumber(t*testing.T) {
36-
3736
testCases:= []struct {
3837
namestring
3938
initialContentstring
@@ -58,14 +57,6 @@ func TestSetSerialNumber(t *testing.T) {
5857
<type>_arduino._tcp</type>
5958
<port>80</port>
6059
<txt-record>board=unoq</txt-record>
61-
<txt-record>vid=0x2341</txt-record>
62-
<txt-record>pid=0x0078</txt-record>
63-
<txt-record>vid.0=0x2341</txt-record>
64-
<txt-record>pid.0=0x0078</txt-record>
65-
<txt-record>distro_version=0.1</txt-record>
66-
<txt-record>ssh_upload=no</txt-record>
67-
<txt-record>tcp_check=no</txt-record>
68-
<txt-record>auth_upload=yes</txt-record>
6960
</service>
7061
</service-group>
7162
`,
@@ -79,14 +70,6 @@ func TestSetSerialNumber(t *testing.T) {
7970
<type>_arduino._tcp</type>
8071
<port>80</port>
8172
<txt-record>board=unoq</txt-record>
82-
<txt-record>vid=0x2341</txt-record>
83-
<txt-record>pid=0x0078</txt-record>
84-
<txt-record>vid.0=0x2341</txt-record>
85-
<txt-record>pid.0=0x0078</txt-record>
86-
<txt-record>distro_version=0.1</txt-record>
87-
<txt-record>ssh_upload=no</txt-record>
88-
<txt-record>tcp_check=no</txt-record>
89-
<txt-record>auth_upload=yes</txt-record>
9073
<txt-record>serial_number=123456789</txt-record>
9174
</service>
9275
</service-group>
@@ -95,60 +78,30 @@ func TestSetSerialNumber(t *testing.T) {
9578
{
9679
name:"serial number not provided",
9780
initialContent:`<?xml version="1.0" standalone='no'?>
98-
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
9981
<service-group>
100-
<name replace-wildcards="yes">%h</name>
10182
<service>
102-
<type>_arduino._tcp</type>
103-
<port>80</port>
10483
<txt-record>board=unoq</txt-record>
10584
</service>
10685
</service-group>
10786
`,
10887
serialNumber:"",
10988
expectedErr:true,
110-
expectedContent:``,
89+
expectedContent:"",
11190
},
11291
{
11392
name:"serial number already present",
11493
initialContent:`<?xml version="1.0" standalone='no'?>
115-
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
11694
<service-group>
117-
<name replace-wildcards="yes">%h</name>
11895
<service>
119-
<type>_arduino._tcp</type>
120-
<port>80</port>
121-
<txt-record>board=unoq</txt-record>
122-
<txt-record>vid=0x2341</txt-record>
123-
<txt-record>pid=0x0078</txt-record>
124-
<txt-record>vid.0=0x2341</txt-record>
125-
<txt-record>pid.0=0x0078</txt-record>
126-
<txt-record>distro_version=0.1</txt-record>
127-
<txt-record>ssh_upload=no</txt-record>
128-
<txt-record>tcp_check=no</txt-record>
129-
<txt-record>auth_upload=yes</txt-record>
13096
<txt-record>serial_number=123456789</txt-record>
13197
</service>
13298
</service-group>
13399
`,
134100
serialNumber:"111111111",
135101
expectedErr:false,
136102
expectedContent:`<?xml version="1.0" standalone='no'?>
137-
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
138103
<service-group>
139-
<name replace-wildcards="yes">%h</name>
140104
<service>
141-
<type>_arduino._tcp</type>
142-
<port>80</port>
143-
<txt-record>board=unoq</txt-record>
144-
<txt-record>vid=0x2341</txt-record>
145-
<txt-record>pid=0x0078</txt-record>
146-
<txt-record>vid.0=0x2341</txt-record>
147-
<txt-record>pid.0=0x0078</txt-record>
148-
<txt-record>distro_version=0.1</txt-record>
149-
<txt-record>ssh_upload=no</txt-record>
150-
<txt-record>tcp_check=no</txt-record>
151-
<txt-record>auth_upload=yes</txt-record>
152105
<txt-record>serial_number=123456789</txt-record>
153106
</service>
154107
</service-group>
@@ -157,12 +110,8 @@ func TestSetSerialNumber(t *testing.T) {
157110
{
158111
name:"missing service tag",
159112
initialContent:`<?xml version="1.0" standalone='no'?>
160-
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
161113
<service-group>
162-
<name replace-wildcards="yes">%h</name>
163-
<service>
164-
<type>_arduino._tcp</type>
165-
<port>80</port>
114+
</service-group>
166115
`,
167116
serialNumber:"111111111",
168117
expectedErr:true,
@@ -172,33 +121,22 @@ func TestSetSerialNumber(t *testing.T) {
172121

173122
for_,tc:=rangetestCases {
174123
t.Run(tc.name,func(t*testing.T) {
175-
tmpFile,err:=os.CreateTemp("","arduino.service.*.xml")
176-
require.NoError(t,err)
177-
filePath:=tmpFile.Name()
178-
deferos.Remove(filePath)
179-
180-
iftc.initialContent!="" {
181-
_,err=tmpFile.WriteString(tc.initialContent)
182-
require.NoError(t,err)
183-
}
184-
tmpFile.Close()
185-
186-
iftc.initialContent=="" {
187-
err=os.Remove(filePath)
188-
require.NoError(t,err)
189-
err=setSerialNumber(tc.serialNumber,filePath)
190-
require.NoError(t,err)
124+
iftc.name=="Non-existing file" {
125+
t.Skip("Skipping test case handled by setSerialNumber (os.IsNotExist)")
191126
return
192127
}
128+
updatedContent,err:=setSerialNumberContent([]byte(tc.initialContent),tc.serialNumber)
193129

194-
err=setSerialNumber(tc.serialNumber,filePath)
195130
iftc.expectedErr {
196131
require.Error(t,err)
197132
}else {
198133
require.NoError(t,err)
199-
updatedContent,err:=os.ReadFile(filePath)
200-
require.NoError(t,err)
201-
require.Equal(t,tc.expectedContent,string(updatedContent))
134+
135+
iftc.name=="serial number already present" {
136+
require.Nil(t,updatedContent,"Content should be nil when serial is already present")
137+
}else {
138+
require.Equal(t,tc.expectedContent,string(updatedContent))
139+
}
202140
}
203141
})
204142
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp