File tree 2 files changed +39
-0
lines changed
2 files changed +39
-0
lines changed Original file line number Diff line number Diff line change @@ -51,6 +51,13 @@ func (s *IncludesFinderWithRegExp) Run(context map[string]interface{}) error {
51
51
includes = append (includes , strings .TrimSpace (match [1 ]))
52
52
}
53
53
54
+ if len (includes ) == 0 {
55
+ include := findIncludesForOldCompilers (source )
56
+ if include != "" {
57
+ includes = append (includes , include )
58
+ }
59
+ }
60
+
54
61
context [constants .CTX_INCLUDES_JUST_FOUND ] = includes
55
62
56
63
if ! utils .MapHas (context , constants .CTX_INCLUDES ) {
@@ -62,3 +69,14 @@ func (s *IncludesFinderWithRegExp) Run(context map[string]interface{}) error {
62
69
63
70
return nil
64
71
}
72
+
73
+ func findIncludesForOldCompilers (source string ) string {
74
+ firstLine := strings .Split (source , "\n " )[0 ]
75
+ splittedLine := strings .Split (firstLine , ":" )
76
+ for i , _ := range splittedLine {
77
+ if strings .Contains (splittedLine [i ], "fatal error" ) {
78
+ return strings .TrimSpace (splittedLine [i + 1 ])
79
+ }
80
+ }
81
+ return ""
82
+ }
Original file line number Diff line number Diff line change @@ -182,3 +182,24 @@ func TestIncludesFinderWithRegExpPaddedIncludes2(t *testing.T) {
182
182
sort .Strings (includes )
183
183
require .Equal (t , "Wire.h" , includes [0 ])
184
184
}
185
+
186
+ func TestIncludesFinderWithRegExpPaddedIncludes3 (t * testing.T ) {
187
+ context := make (map [string ]interface {})
188
+
189
+ context [constants .CTX_INCLUDES ] = []string {}
190
+
191
+ output := "/some/path/sketch.ino:1:33: fatal error: SPI.h: No such file or directory\n " +
192
+ "compilation terminated.\n "
193
+
194
+ context ["source" ] = output
195
+
196
+ parser := builder.IncludesFinderWithRegExp {ContextField : "source" }
197
+ err := parser .Run (context )
198
+ NoError (t , err )
199
+
200
+ require .NotNil (t , context [constants .CTX_INCLUDES ])
201
+ includes := context [constants .CTX_INCLUDES ].([]string )
202
+ require .Equal (t , 1 , len (includes ))
203
+ sort .Strings (includes )
204
+ require .Equal (t , "SPI.h" , includes [0 ])
205
+ }
You can’t perform that action at this time.
0 commit comments