@@ -1321,3 +1321,46 @@ func buildWithCustomBuildPathAndOUtputDirFlag(t *testing.T, env *integrationtest
1321
1321
require .NotEmpty (t , content )
1322
1322
}
1323
1323
}
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
+ // containg 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