@@ -1321,3 +1321,46 @@ func buildWithCustomBuildPathAndOUtputDirFlag(t *testing.T, env *integrationtest
13211321 require .NotEmpty (t , content )
13221322 }
13231323}
1324+
1325+ func TestCompileWithOutputDirFlagIgnoringFoldersCreatedByEsp32RainMakerLib (t * testing.T ) {
1326+ env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
1327+ defer env .CleanUp ()
1328+
1329+ _ , _ , err := cli .Run ("update" )
1330+ require .NoError (t , err )
1331+
1332+ // Update index with esp32 core and install it
1333+ url := "https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json"
1334+ _ , _ , err = cli .Run ("core" , "update-index" , "--additional-urls=" + url )
1335+ require .NoError (t , err )
1336+ _ , _ , err = cli .Run ("core" , "install" , "esp32:esp32@3.0.7" , "--additional-urls=" + url )
1337+ require .NoError (t , err )
1338+
1339+ sketchName := "RainMakerSketch"
1340+ sketchPath := cli .SketchbookDir ().Join (sketchName )
1341+ _ , _ , err = cli .Run ("sketch" , "new" , sketchPath .String ())
1342+ require .NoError (t , err )
1343+
1344+ // When importing the `RMaker` library, the esp32 core produces in output a folder,
1345+ // containing all the binaries exported. The name of the folder matches the sketch name.
1346+ // In out case:
1347+ // cache-dir/
1348+ // |- RainMakerSketch.ino/ <--- This should be ignored
1349+ // |- RainMakerSketch.ino.uf2
1350+ // |- RainMakerSketch.ino.bin
1351+ // |- ...
1352+ err = sketchPath .Join (sketchName + ".ino" ).WriteFile ([]byte (`
1353+ #include "RMaker.h"
1354+ void setup() { }
1355+ void loop() { }` ,
1356+ ))
1357+ require .NoError (t , err )
1358+
1359+ buildPath := cli .DataDir ().Join ("test_dir" , "build_dir" )
1360+ outputDir := cli .SketchbookDir ().Join ("test_dir" , "output_dir" )
1361+ _ , stderr , err := cli .Run ("compile" , "-b" , "esp32:esp32:esp32" , sketchPath .String (), "--build-path" , buildPath .String (), "--output-dir" , outputDir .String ())
1362+ require .NoError (t , err )
1363+ require .NotContains (t , stderr , []byte ("Error during build: Error copying output file" ))
1364+ require .DirExists (t , buildPath .Join (sketchName + ".ino" ).String ())
1365+ require .NoDirExists (t , outputDir .Join (sketchName + ".ino" ).String ())
1366+ }
0 commit comments