diff --git a/internal/integrationtest/compile_4/compile_test.go b/internal/integrationtest/compile_4/compile_test.go index 80eedf8acd7..42bd97fd1a9 100644 --- a/internal/integrationtest/compile_4/compile_test.go +++ b/internal/integrationtest/compile_4/compile_test.go @@ -20,6 +20,7 @@ import ( "cmp" "encoding/json" "os/exec" + "regexp" "slices" "strings" "testing" @@ -956,6 +957,23 @@ func TestBuildCaching(t *testing.T) { require.NoError(t, err) 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) { diff --git a/internal/integrationtest/compile_4/testdata/SketchUsingRobotIRRemote/SketchUsingRobotIRRemote.ino b/internal/integrationtest/compile_4/testdata/SketchUsingRobotIRRemote/SketchUsingRobotIRRemote.ino new file mode 100644 index 00000000000..4eedf4e2675 --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/SketchUsingRobotIRRemote/SketchUsingRobotIRRemote.ino @@ -0,0 +1,7 @@ +#include + +void setup() { +} + +void loop() { +}