@@ -17,8 +17,6 @@ package builder
17
17
18
18
import (
19
19
"fmt"
20
- "os"
21
- "path/filepath"
22
20
"runtime"
23
21
"strings"
24
22
"testing"
@@ -28,21 +26,14 @@ import (
28
26
"github.com/stretchr/testify/require"
29
27
)
30
28
31
- func tmpDirOrDie () * paths.Path {
32
- dir , err := os .MkdirTemp (os .TempDir (), "builder_test" )
33
- if err != nil {
34
- panic (fmt .Sprintf ("error creating tmp dir: %v" , err ))
35
- }
36
- return paths .New (dir )
37
- }
38
-
39
29
func TestSaveSketch (t * testing.T ) {
40
- sketchName := t .Name () + ".ino"
41
- outName := sketchName + ".cpp"
42
- sketchFile := filepath .Join ("testdata" , sketchName )
43
- tmp := tmpDirOrDie ()
30
+ sketchName := t .Name () + ".ino" // "TestSaveSketch.ino"
31
+ outName := sketchName + ".cpp" // "TestSaveSketch.ino.cpp"
32
+ sketchFile := paths .New ("testdata" , sketchName ) // "testdata/TestSaveSketch.ino.cpp"
33
+ tmp , err := paths .MkTempDir ("" , "" )
34
+ require .NoError (t , err )
44
35
defer tmp .RemoveAll ()
45
- source , err := os .ReadFile (sketchFile )
36
+ source , err := sketchFile .ReadFile ()
46
37
if err != nil {
47
38
t .Fatalf ("unable to read golden file %s: %v" , sketchFile , err )
48
39
}
@@ -59,76 +50,77 @@ func TestSaveSketch(t *testing.T) {
59
50
60
51
func TestMergeSketchSources (t * testing.T ) {
61
52
// borrow the sketch from TestLoadSketchFolder to avoid boilerplate
62
- s , err := sketch .New (paths .New ("testdata" , "TestLoadSketchFolder" ))
53
+ sk , err := sketch .New (paths .New ("testdata" , "TestLoadSketchFolder" ))
63
54
require .Nil (t , err )
64
- require .NotNil (t , s )
55
+ require .NotNil (t , sk )
65
56
66
57
// load expected result
67
58
suffix := ".txt"
68
59
if runtime .GOOS == "windows" {
69
60
suffix = "_win.txt"
70
61
}
71
62
mergedPath := paths .New ("testdata" , t .Name ()+ suffix )
63
+ require .NoError (t , mergedPath .ToAbs ())
72
64
mergedBytes , err := mergedPath .ReadFile ()
73
- if err != nil {
74
- t .Fatalf ("unable to read golden file %s: %v" , mergedPath , err )
75
- }
65
+ require .NoError (t , err , "reading golden file %s: %v" , mergedPath , err )
76
66
77
- mergedPath .ToAbs ()
78
67
pathToGoldenSource := mergedPath .Parent ().Parent ().String ()
79
68
if runtime .GOOS == "windows" {
80
69
pathToGoldenSource = strings .ReplaceAll (pathToGoldenSource , `\` , `\\` )
81
70
}
82
71
mergedSources := strings .ReplaceAll (string (mergedBytes ), "%s" , pathToGoldenSource )
83
72
84
- offset , source , err := sketchMergeSources (s , nil )
73
+ b := NewBuilder (sk )
74
+ offset , source , err := b .sketchMergeSources (nil )
85
75
require .Nil (t , err )
86
76
require .Equal (t , 2 , offset )
87
77
require .Equal (t , mergedSources , source )
88
78
}
89
79
90
80
func TestMergeSketchSourcesArduinoIncluded (t * testing.T ) {
91
- s , err := sketch .New (paths .New ("testdata" , t .Name ()))
81
+ sk , err := sketch .New (paths .New ("testdata" , t .Name ()))
92
82
require .Nil (t , err )
93
- require .NotNil (t , s )
83
+ require .NotNil (t , sk )
94
84
95
85
// ensure not to include Arduino.h when it's already there
96
- _ , source , err := sketchMergeSources (s , nil )
86
+ b := NewBuilder (sk )
87
+ _ , source , err := b .sketchMergeSources (nil )
97
88
require .Nil (t , err )
98
89
require .Equal (t , 1 , strings .Count (source , "<Arduino.h>" ))
99
90
}
100
91
101
92
func TestCopyAdditionalFiles (t * testing.T ) {
102
- tmp := tmpDirOrDie ()
93
+ tmp , err := paths .MkTempDir ("" , "" )
94
+ require .NoError (t , err )
103
95
defer tmp .RemoveAll ()
104
96
105
97
// load the golden sketch
106
- s1 , err := sketch .New (paths .New ("testdata" , t .Name ()))
98
+ sk1 , err := sketch .New (paths .New ("testdata" , t .Name ()))
107
99
require .Nil (t , err )
108
- require .Equal (t , s1 .AdditionalFiles .Len (), 1 )
100
+ require .Equal (t , sk1 .AdditionalFiles .Len (), 1 )
109
101
110
102
// copy the sketch over, create a fake main file we don't care about it
111
103
// but we need it for `SketchLoad` to succeed later
112
- err = sketchCopyAdditionalFiles (s1 , tmp , nil )
104
+ err = sketchCopyAdditionalFiles (sk1 , tmp , nil )
113
105
require .Nil (t , err )
114
106
fakeIno := tmp .Join (fmt .Sprintf ("%s.ino" , tmp .Base ()))
115
107
require .Nil (t , fakeIno .WriteFile ([]byte {}))
116
108
117
109
// compare
118
- s2 , err := sketch .New (tmp )
110
+ sk2 , err := sketch .New (tmp )
119
111
require .Nil (t , err )
120
- require .Equal (t , s2 .AdditionalFiles .Len (), 1 )
112
+ require .Equal (t , sk2 .AdditionalFiles .Len (), 1 )
121
113
122
114
// save file info
123
- info1 , err := s2 .AdditionalFiles [0 ].Stat ()
115
+ info1 , err := sk2 .AdditionalFiles [0 ].Stat ()
124
116
require .Nil (t , err )
125
117
126
118
// copy again
127
- err = sketchCopyAdditionalFiles (s1 , tmp , nil )
119
+ err = sketchCopyAdditionalFiles (sk1 , tmp , nil )
128
120
require .Nil (t , err )
129
121
130
122
// verify file hasn't changed
131
- info2 , err := s2 .AdditionalFiles [0 ].Stat ()
123
+ info2 , err := sk2 .AdditionalFiles [0 ].Stat ()
132
124
require .NoError (t , err )
133
125
require .Equal (t , info1 .ModTime (), info2 .ModTime ())
134
126
}
0 commit comments