Commit 77222ecd authored by Martino Facchin's avatar Martino Facchin Committed by Cristian Maglie

Fix caching for libraries when installation folder differents from Name (#2446)

* Fix caching for libraries when installation folder differents from Name

* Prepare infra to add integration test

* Added integration test

---------
Co-authored-by: default avatarCristian Maglie <c.maglie@arduino.cc>
parent ce6bb989
...@@ -245,7 +245,7 @@ func (b *Builder) removeUnusedCompiledLibraries(importedLibraries libraries.List ...@@ -245,7 +245,7 @@ func (b *Builder) removeUnusedCompiledLibraries(importedLibraries libraries.List
toLibraryNames := func(libraries []*libraries.Library) []string { toLibraryNames := func(libraries []*libraries.Library) []string {
libraryNames := []string{} libraryNames := []string{}
for _, library := range libraries { for _, library := range libraries {
libraryNames = append(libraryNames, library.Name) libraryNames = append(libraryNames, library.DirName)
} }
return libraryNames return libraryNames
} }
......
...@@ -20,6 +20,7 @@ import ( ...@@ -20,6 +20,7 @@ import (
"cmp" "cmp"
"encoding/json" "encoding/json"
"os/exec" "os/exec"
"regexp"
"slices" "slices"
"strings" "strings"
"testing" "testing"
...@@ -904,15 +905,16 @@ func comparePreprocessGoldenFile(t *testing.T, sketchDir *paths.Path, preprocess ...@@ -904,15 +905,16 @@ func comparePreprocessGoldenFile(t *testing.T, sketchDir *paths.Path, preprocess
require.Equal(t, buf.String(), strings.ReplaceAll(preprocessedSketch, "\r\n", "\n")) require.Equal(t, buf.String(), strings.ReplaceAll(preprocessedSketch, "\r\n", "\n"))
} }
func TestCoreCaching(t *testing.T) { func TestBuildCaching(t *testing.T) {
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
defer env.CleanUp() defer env.CleanUp()
sketchPath, err := paths.New("..", "testdata", "bare_minimum").Abs() // Install Arduino AVR Boards
_, _, err := cli.Run("core", "install", "arduino:avr@1.8.6")
require.NoError(t, err) require.NoError(t, err)
// Install Arduino AVR Boards t.Run("CoreCaching", func(t *testing.T) {
_, _, err = cli.Run("core", "install", "arduino:avr@1.8.6") sketchPath, err := paths.New("..", "testdata", "bare_minimum").Abs()
require.NoError(t, err) require.NoError(t, err)
// Create temporary cache dir // Create temporary cache dir
...@@ -954,6 +956,24 @@ func TestCoreCaching(t *testing.T) { ...@@ -954,6 +956,24 @@ func TestCoreCaching(t *testing.T) {
coreStatAfterTouch, err := cachedCoreFile.Stat() coreStatAfterTouch, err := cachedCoreFile.Stat()
require.NoError(t, err) require.NoError(t, err)
require.NotEqual(t, coreStatBefore.ModTime(), coreStatAfterTouch.ModTime()) require.NotEqual(t, coreStatBefore.ModTime(), coreStatAfterTouch.ModTime())
})
t.Run("LibraryCacheWithDifferentDirname", func(t *testing.T) {
_, _, err = cli.Run("lib", "install", "Robot IR Remote")
require.NoError(t, err)
// Run first compile
sketchPath, err := paths.New("testdata", "SketchUsingRobotIRRemote").Abs()
require.NoError(t, err)
_, _, err = cli.Run("compile", "-b", "arduino:avr:robotControl", "-v", sketchPath.String())
require.NoError(t, err)
// Run second compile and check that previous build is re-used
out, _, err := cli.Run("compile", "-b", "arduino:avr:robotControl", "-v", sketchPath.String())
require.NoError(t, err)
check := regexp.MustCompile(`(?m)^Using previously compiled file:.*IRremoteTools\.cpp\.o$`)
require.True(t, check.Match(out))
})
} }
func TestMergeSketchWithBootloader(t *testing.T) { func TestMergeSketchWithBootloader(t *testing.T) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment