@@ -1317,3 +1317,56 @@ func TestInstallGitUrlAndZipPathFlagsVisibility(t *testing.T) {
1317
1317
require .NoError (t , err )
1318
1318
require .Contains (t , string (stdout ), "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk." )
1319
1319
}
1320
+
1321
+ func TestInstallWithZipPath (t * testing.T ) {
1322
+ env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
1323
+ defer env .CleanUp ()
1324
+
1325
+ // Initialize configs to enable --zip-path flag
1326
+ envVar := cli .GetDefaultEnv ()
1327
+ envVar ["ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL" ] = "true"
1328
+ _ , _ , err := cli .RunWithCustomEnv (envVar , "config" , "init" , "--dest-dir" , "." )
1329
+ require .NoError (t , err )
1330
+
1331
+ // Download a specific lib version
1332
+ // Download library
1333
+ url := "https://github.com/arduino-libraries/AudioZero/archive/refs/tags/1.1.1.zip"
1334
+ zipPath := cli .DownloadDir ().Join ("libraries" , "AudioZero.zip" )
1335
+ require .NoError (t , zipPath .Parent ().MkdirAll ())
1336
+ downloadLib (t , url , zipPath )
1337
+
1338
+ libInstallDir := cli .SketchbookDir ().Join ("libraries" , "AudioZero-1.1.1" )
1339
+ // Verifies library is not already installed
1340
+ require .NoDirExists (t , libInstallDir .String ())
1341
+
1342
+ // Test zip-path install
1343
+ stdout , _ , err := cli .Run ("lib" , "install" , "--zip-path" , zipPath .String ())
1344
+ require .NoError (t , err )
1345
+ require .Contains (t , string (stdout ), "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk." )
1346
+
1347
+ // Verifies library is installed in expected path
1348
+ require .DirExists (t , libInstallDir .String ())
1349
+ files , err := libInstallDir .ReadDirRecursive ()
1350
+ require .NoError (t , err )
1351
+ require .Contains (t , files , libInstallDir .Join ("examples" , "SimpleAudioPlayerZero" , "SimpleAudioPlayerZero.ino" ))
1352
+ require .Contains (t , files , libInstallDir .Join ("src" , "AudioZero.h" ))
1353
+ require .Contains (t , files , libInstallDir .Join ("src" , "AudioZero.cpp" ))
1354
+ require .Contains (t , files , libInstallDir .Join ("keywords.txt" ))
1355
+ require .Contains (t , files , libInstallDir .Join ("library.properties" ))
1356
+ require .Contains (t , files , libInstallDir .Join ("README.adoc" ))
1357
+
1358
+ // Reinstall library
1359
+ _ , _ , err = cli .Run ("lib" , "install" , "--zip-path" , zipPath .String ())
1360
+ require .NoError (t , err )
1361
+
1362
+ // Verifies library remains installed
1363
+ require .DirExists (t , libInstallDir .String ())
1364
+ files , err = libInstallDir .ReadDirRecursive ()
1365
+ require .NoError (t , err )
1366
+ require .Contains (t , files , libInstallDir .Join ("examples" , "SimpleAudioPlayerZero" , "SimpleAudioPlayerZero.ino" ))
1367
+ require .Contains (t , files , libInstallDir .Join ("src" , "AudioZero.h" ))
1368
+ require .Contains (t , files , libInstallDir .Join ("src" , "AudioZero.cpp" ))
1369
+ require .Contains (t , files , libInstallDir .Join ("keywords.txt" ))
1370
+ require .Contains (t , files , libInstallDir .Join ("library.properties" ))
1371
+ require .Contains (t , files , libInstallDir .Join ("README.adoc" ))
1372
+ }
0 commit comments