Skip to content

Commit 0f516bb

Browse files
feat: library folder name priority promotion for -main suffix (#2233)
* feat: add priority for main * docs: Update sketch-build-process.md * fix: suggestion @cmaglie of priorities libraries Co-authored-by: Cristian Maglie <[email protected]> * tests: implement tests of new priority 'main' * fix: build cpp_test.go * fix: TestClosestMatchWithTotallyDifferentNames in cpp_test.go --------- Co-authored-by: Cristian Maglie <[email protected]>
1 parent 2115b65 commit 0f516bb

File tree

3 files changed

+25
-17
lines changed

3 files changed

+25
-17
lines changed

Diff for: arduino/libraries/librariesresolver/cpp.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,10 @@ func ComputePriority(lib *libraries.Library, header, arch string) int {
189189
}
190190

191191
if name == header && dirName == header {
192-
priority += 600
192+
priority += 700
193193
} else if name == header || dirName == header {
194+
priority += 600
195+
} else if name == header+"-main" || dirName == header+"-main" {
194196
priority += 500
195197
} else if name == header+"-master" || dirName == header+"-master" {
196198
priority += 400

Diff for: arduino/libraries/librariesresolver/cpp_test.go

+20-16
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,13 @@ import (
2323
)
2424

2525
var l1 = &libraries.Library{Name: "Calculus Lib", Location: libraries.User}
26-
var l2 = &libraries.Library{Name: "Calculus Lib-master", Location: libraries.User}
27-
var l3 = &libraries.Library{Name: "Calculus Lib Improved", Location: libraries.User}
28-
var l4 = &libraries.Library{Name: "Another Calculus Lib", Location: libraries.User}
29-
var l5 = &libraries.Library{Name: "Yet Another Calculus Lib Improved", Location: libraries.User}
30-
var l6 = &libraries.Library{Name: "Calculus Unified Lib", Location: libraries.User}
31-
var l7 = &libraries.Library{Name: "AnotherLib", Location: libraries.User}
26+
var l2 = &libraries.Library{Name: "Calculus Lib-main", Location: libraries.User}
27+
var l3 = &libraries.Library{Name: "Calculus Lib-master", Location: libraries.User}
28+
var l4 = &libraries.Library{Name: "Calculus Lib Improved", Location: libraries.User}
29+
var l5 = &libraries.Library{Name: "Another Calculus Lib", Location: libraries.User}
30+
var l6 = &libraries.Library{Name: "Yet Another Calculus Lib Improved", Location: libraries.User}
31+
var l7 = &libraries.Library{Name: "Calculus Unified Lib", Location: libraries.User}
32+
var l8 = &libraries.Library{Name: "AnotherLib", Location: libraries.User}
3233
var bundleServo = &libraries.Library{Name: "Servo", Location: libraries.IDEBuiltIn, Architectures: []string{"avr", "sam", "samd"}}
3334

3435
func runResolver(include string, arch string, libs ...*libraries.Library) *libraries.Library {
@@ -91,14 +92,14 @@ func TestArchitecturePriority(t *testing.T) {
9192

9293
func TestClosestMatchWithTotallyDifferentNames(t *testing.T) {
9394
libraryList := libraries.List{}
94-
libraryList.Add(l5)
9595
libraryList.Add(l6)
9696
libraryList.Add(l7)
97+
libraryList.Add(l8)
9798
resolver := NewCppResolver()
9899
resolver.headers["XYZ.h"] = libraryList
99100
res := resolver.ResolveFor("XYZ.h", "xyz")
100101
require.NotNil(t, res)
101-
require.Equal(t, l7, res, "selected library")
102+
require.Equal(t, l8, res, "selected library")
102103
}
103104

104105
func TestCppHeaderPriority(t *testing.T) {
@@ -109,12 +110,14 @@ func TestCppHeaderPriority(t *testing.T) {
109110
r5 := ComputePriority(l5, "calculus_lib.h", "avr")
110111
r6 := ComputePriority(l6, "calculus_lib.h", "avr")
111112
r7 := ComputePriority(l7, "calculus_lib.h", "avr")
113+
r8 := ComputePriority(l8, "calculus_lib.h", "avr")
112114
require.True(t, r1 > r2)
113115
require.True(t, r2 > r3)
114116
require.True(t, r3 > r4)
115117
require.True(t, r4 > r5)
116118
require.True(t, r5 > r6)
117-
require.True(t, r6 == r7)
119+
require.True(t, r6 > r7)
120+
require.True(t, r7 == r8)
118121
}
119122

120123
func TestCppHeaderResolverWithNilResult(t *testing.T) {
@@ -135,13 +138,14 @@ func TestCppHeaderResolver(t *testing.T) {
135138
resolver.headers[header] = librarylist
136139
return resolver.ResolveFor(header, "avr").Name
137140
}
138-
require.Equal(t, "Calculus Lib", resolve("calculus_lib.h", l1, l2, l3, l4, l5, l6, l7))
139-
require.Equal(t, "Calculus Lib-master", resolve("calculus_lib.h", l2, l3, l4, l5, l6, l7))
140-
require.Equal(t, "Calculus Lib Improved", resolve("calculus_lib.h", l3, l4, l5, l6, l7))
141-
require.Equal(t, "Another Calculus Lib", resolve("calculus_lib.h", l4, l5, l6, l7))
142-
require.Equal(t, "Yet Another Calculus Lib Improved", resolve("calculus_lib.h", l5, l6, l7))
143-
require.Equal(t, "Calculus Unified Lib", resolve("calculus_lib.h", l6, l7))
144-
require.Equal(t, "Calculus Unified Lib", resolve("calculus_lib.h", l7, l6))
141+
require.Equal(t, "Calculus Lib", resolve("calculus_lib.h", l1, l2, l3, l4, l5, l6, l7, l8))
142+
require.Equal(t, "Calculus Lib-main", resolve("calculus_lib.h", l2, l3, l4, l5, l6, l7, l8))
143+
require.Equal(t, "Calculus Lib-master", resolve("calculus_lib.h", l3, l4, l5, l6, l7, l8))
144+
require.Equal(t, "Calculus Lib Improved", resolve("calculus_lib.h", l4, l5, l6, l7, l8))
145+
require.Equal(t, "Another Calculus Lib", resolve("calculus_lib.h", l5, l6, l7, l8))
146+
require.Equal(t, "Yet Another Calculus Lib Improved", resolve("calculus_lib.h", l6, l7, l8))
147+
require.Equal(t, "Calculus Unified Lib", resolve("calculus_lib.h", l7, l8))
148+
require.Equal(t, "Calculus Unified Lib", resolve("calculus_lib.h", l8, l7))
145149
}
146150

147151
func TestCppHeaderResolverWithLibrariesInStrangeDirectoryNames(t *testing.T) {

Diff for: docs/sketch-build-process.md

+2
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ The "library name priority" is determined as follows (in order of highest to low
101101
| Rule | Example for `Arduino_Low_Power.h` |
102102
| ------------------------------------------------------------------------- | --------------------------------- |
103103
| The library name matches the include 100% | `Arduino Low Power` |
104+
| The library name matches the include 100%, except with a `-main` suffix | `Arduino Low Power-main` |
104105
| The library name matches the include 100%, except with a `-master` suffix | `Arduino Low Power-master` |
105106
| The library name has a matching prefix | `Arduino Low Power Whatever` |
106107
| The library name has a matching suffix | `Awesome Arduino Low Power` |
@@ -113,6 +114,7 @@ The "folder name priority" is determined as follows (in order of highest to lowe
113114
| Rule | Example for `Servo.h` |
114115
| ------------------------------------------------------------------------ | --------------------------- |
115116
| The folder name matches the include 100% | `Servo` |
117+
| The folder name matches the include 100%, except with a `-main` suffix | `Servo-main` |
116118
| The folder name matches the include 100%, except with a `-master` suffix | `Servo-master` |
117119
| The folder name has a matching prefix | `ServoWhatever` |
118120
| The folder name has a matching suffix | `AwesomeServo` |

0 commit comments

Comments
 (0)