Skip to content

Commit 03159d1

Browse files
[skip-changelog] Verify installation of builtin tools by checking that their executable is present (#2168)
* Update previously written tests * Verify builtin tools are correctly installed
1 parent d563755 commit 03159d1

File tree

4 files changed

+31
-11
lines changed

4 files changed

+31
-11
lines changed

Diff for: arduino/cores/packagemanager/loader_test.go

+8-4
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,8 @@ arduino_zero_edbg.serial.disableRTS=true
169169

170170
func TestLoadDiscoveries(t *testing.T) {
171171
// Create all the necessary data to load discoveries
172-
fakePath := paths.New("fake-path")
173-
require.NoError(t, fakePath.Join("LICENSE").MkdirAll())
172+
fakePath, err := paths.TempDir().MkTempDir("fake-path")
173+
require.NoError(t, err)
174174
defer fakePath.RemoveAll()
175175

176176
createTestPackageManager := func() *PackageManager {
@@ -181,6 +181,9 @@ func TestLoadDiscoveries(t *testing.T) {
181181
toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("1.0.0"))
182182
// We set this to fake the tool is installed
183183
toolRelease.InstallDir = fakePath
184+
f, err := toolRelease.InstallDir.Join(toolRelease.Tool.Name + ".exe").Create()
185+
require.NoError(t, err)
186+
require.NoError(t, f.Close())
184187
tool.GetOrCreateRelease(semver.ParseRelaxed("0.1.0"))
185188

186189
// serial-discovery tool
@@ -189,6 +192,9 @@ func TestLoadDiscoveries(t *testing.T) {
189192
toolRelease = tool.GetOrCreateRelease(semver.ParseRelaxed("0.1.0"))
190193
// We set this to fake the tool is installed
191194
toolRelease.InstallDir = fakePath
195+
f, err = toolRelease.InstallDir.Join(toolRelease.Tool.Name + ".exe").Create()
196+
require.NoError(t, err)
197+
require.NoError(t, f.Close())
192198

193199
platform := pack.GetOrCreatePlatform("avr")
194200
release := platform.GetOrCreateRelease(semver.MustParse("1.0.0"))
@@ -279,8 +285,6 @@ func TestLoadDiscoveries(t *testing.T) {
279285
require.Contains(t, discoveries, "teensy")
280286
pmeRelease()
281287
}
282-
283-
require.NoError(t, fakePath.RemoveAll())
284288
}
285289

286290
func TestConvertUploadToolsToPluggableDiscovery(t *testing.T) {

Diff for: arduino/cores/packagemanager/package_manager_test.go

+20-2
Original file line numberDiff line numberDiff line change
@@ -617,8 +617,8 @@ func TestPackageManagerClear(t *testing.T) {
617617

618618
func TestFindToolsRequiredFromPlatformRelease(t *testing.T) {
619619
// Create all the necessary data to load discoveries
620-
fakePath := paths.New("fake-path")
621-
require.NoError(t, fakePath.Join("LICENSE").MkdirAll())
620+
fakePath, err := paths.TempDir().MkTempDir("fake-path")
621+
require.NoError(t, err)
622622
defer fakePath.RemoveAll()
623623

624624
pmb := NewBuilder(fakePath, fakePath, fakePath, fakePath, "test")
@@ -630,6 +630,9 @@ func TestFindToolsRequiredFromPlatformRelease(t *testing.T) {
630630
toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("4.2.0"))
631631
// We set this to fake the tool is installed
632632
toolRelease.InstallDir = fakePath
633+
f, err := toolRelease.InstallDir.Join(toolRelease.Tool.Name + ".exe").Create()
634+
require.NoError(t, err)
635+
require.NoError(t, f.Close())
633636
}
634637

635638
{
@@ -646,6 +649,9 @@ func TestFindToolsRequiredFromPlatformRelease(t *testing.T) {
646649
toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("6.6.6"))
647650
// We set this to fake the tool is installed
648651
toolRelease.InstallDir = fakePath
652+
f, err := toolRelease.InstallDir.Join(toolRelease.Tool.Name + ".exe").Create()
653+
require.NoError(t, err)
654+
require.NoError(t, f.Close())
649655
}
650656

651657
{
@@ -654,6 +660,9 @@ func TestFindToolsRequiredFromPlatformRelease(t *testing.T) {
654660
toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("1.0.0"))
655661
// We set this to fake the tool is installed
656662
toolRelease.InstallDir = fakePath
663+
f, err := toolRelease.InstallDir.Join(toolRelease.Tool.Name + ".exe").Create()
664+
require.NoError(t, err)
665+
require.NoError(t, f.Close())
657666
tool.GetOrCreateRelease(semver.ParseRelaxed("0.1.0"))
658667
}
659668

@@ -664,6 +673,9 @@ func TestFindToolsRequiredFromPlatformRelease(t *testing.T) {
664673
toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("0.1.0"))
665674
// We set this to fake the tool is installed
666675
toolRelease.InstallDir = fakePath
676+
f, err := toolRelease.InstallDir.Join(toolRelease.Tool.Name + ".exe").Create()
677+
require.NoError(t, err)
678+
require.NoError(t, f.Close())
667679
}
668680

669681
{
@@ -672,6 +684,9 @@ func TestFindToolsRequiredFromPlatformRelease(t *testing.T) {
672684
toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("1.0.0"))
673685
// We set this to fake the tool is installed
674686
toolRelease.InstallDir = fakePath
687+
f, err := toolRelease.InstallDir.Join(toolRelease.Tool.Name + ".exe").Create()
688+
require.NoError(t, err)
689+
require.NoError(t, f.Close())
675690
tool.GetOrCreateRelease(semver.ParseRelaxed("0.1.0"))
676691
}
677692

@@ -682,6 +697,9 @@ func TestFindToolsRequiredFromPlatformRelease(t *testing.T) {
682697
toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("0.1.0"))
683698
// We set this to fake the tool is installed
684699
toolRelease.InstallDir = fakePath
700+
f, err := toolRelease.InstallDir.Join(toolRelease.Tool.Name + ".exe").Create()
701+
require.NoError(t, err)
702+
require.NoError(t, f.Close())
685703
}
686704

687705
platform := pack.GetOrCreatePlatform("avr")

Diff for: arduino/cores/tools.go

+3-4
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,10 @@ func (tool *Tool) String() string {
106106

107107
// IsInstalled returns true if the ToolRelease is installed
108108
func (tr *ToolRelease) IsInstalled() bool {
109-
if tr.InstallDir == nil {
110-
return false
109+
if tr.Tool.Package.Name == "builtin" && tr.InstallDir != nil {
110+
return tr.InstallDir.Join(tr.Tool.Name+".exe").Exist() || tr.InstallDir.Join(tr.Tool.Name).Exist()
111111
}
112-
dirContent, _ := tr.InstallDir.ReadDir()
113-
return dirContent.Len() != 0
112+
return tr.InstallDir != nil
114113
}
115114

116115
func (tr *ToolRelease) String() string {

Diff for: internal/integrationtest/board/board_test.go

-1
Original file line numberDiff line numberDiff line change
@@ -573,7 +573,6 @@ func TestBoardListWithFailedBuiltinInstallation(t *testing.T) {
573573
// remove files from serial-discovery directory to simulate a failed installation
574574
serialDiscovery, err := cli.DataDir().Join("packages", "builtin", "tools", "serial-discovery").ReadDir()
575575
require.NoError(t, err)
576-
require.NoError(t, serialDiscovery[0].Join("LICENSE.txt").Remove())
577576
require.NoError(t, serialDiscovery[0].Join("serial-discovery.exe").Remove())
578577

579578
// board list should install serial-discovery again

0 commit comments

Comments
 (0)