compile: fix export when artifacts contains a folder (#2788) · arduino/arduino-cli@0a116e7 (original) (raw)

`@@ -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

`+

// 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

`+

}

`