Closed
Description
Describe the problem
#2023 added integration tests to check whether the CLI daemon can recover from an inconsistent directories.data
state during the core client initialization.
The tests do the followings:
- start the CLI daemon,
- initialize a valid state,
- stop the CLI daemon,
- corrupt the
directories.data
folder by deleting platform tools, primary package, and library indexes, - start the CLI daemon,
- run
init
, - verify if the daemon is functional.
The tests tend to fail on Windows. As also noted in #2028, deleting the platform tools might fail because the OS is holding the process.
The tests must do the following to be more resilient:
- initialize valid
directories.data
structure via the CLI using./arduino-cli core update-index
, - save the valid
directories.data
folder, - each test case should copy the correct folder and corrupt it.
To reproduce
Please review the issue description and check for flaky builds on the CI.
1) core-client-provider
should recover when the 'packages\builtin\tools\serial-discovery' folder is missing:
Error: EPERM: operation not permitted, unlink 'c:\Users\RUNNER~1\AppData\Local\Temp\d-2023410-708-166j91u.ub7p\.testArduinoIDE\data\Arduino15\packages\builtin\tools\serial-discovery\1.4.0\serial-discovery.exe'
at Object.unlinkSync (node:fs:1722:3)
at fixWinEPERMSync (D:\a\arduino-ide\arduino-ide\node_modules\rimraf\rimraf.js:219:13)
at rimrafSync (D:\a\arduino-ide\arduino-ide\node_modules\rimraf\rimraf.js:319:28)
at D:\a\arduino-ide\arduino-ide\node_modules\rimraf\rimraf.js:350:5
at Array.forEach (<anonymous>)
at rmkidsSync (D:\a\arduino-ide\arduino-ide\node_modules\rimraf\rimraf.js:349:26)
at rmdirSync (D:\a\arduino-ide\arduino-ide\node_modules\rimraf\rimraf.js:342:7)
at fixWinEPERMSync (D:\a\arduino-ide\arduino-ide\node_modules\rimraf\rimraf.js:217:5)
at rimrafSync (D:\a\arduino-ide\arduino-ide\node_modules\rimraf\rimraf.js:319:28)
at D:\a\arduino-ide\arduino-ide\node_modules\rimraf\rimraf.js:350:5
at Array.forEach (<anonymous>)
at rmkidsSync (D:\a\arduino-ide\arduino-ide\node_modules\rimraf\rimraf.js:349:26)
at rmdirSync (D:\a\arduino-ide\arduino-ide\node_modules\rimraf\rimraf.js:342:7)
at fixWinEPERMSync (D:\a\arduino-ide\arduino-ide\node_modules\rimraf\rimraf.js:217:5)
at rimrafSync (D:\a\arduino-ide\arduino-ide\node_modules\rimraf\rimraf.js:319:28)
at Context.<anonymous> (lib\test\node\core-client-provider.slow-test.js:86:27)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
Expected behavior
The CI is not failing randomly.
Arduino IDE version
Operating system
Windows
Operating system version
N/A
Additional context
When the CI is red due to failed tests, GH Actions will report a false positive defect with the certificates:
The job was canceled because "windows-2019_WINDOWS_SIGNING_CERTIFICATE_PFX_WINDOWS_SIGNING_CERTIFICATE_PASSWORD_pfx" failed.

Issue checklist
- I searched for previous reports in the issue tracker
- I verified the problem still occurs when using the latest nightly build
- My report contains all necessary details