@@ -1363,3 +1363,56 @@ func TestInstallGitUrlAndZipPathFlagsVisibility(t *testing.T) {
1363
1363
require .NoError (t , err )
1364
1364
require .Contains (t , string (stdout ), "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk." )
1365
1365
}
1366
+
1367
+ func TestInstallWithZipPath (t * testing.T ) {
1368
+ env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
1369
+ defer env .CleanUp ()
1370
+
1371
+ // Initialize configs to enable --zip-path flag
1372
+ envVar := cli .GetDefaultEnv ()
1373
+ envVar ["ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL" ] = "true"
1374
+ _ , _ , err := cli .RunWithCustomEnv (envVar , "config" , "init" , "--dest-dir" , "." )
1375
+ require .NoError (t , err )
1376
+
1377
+ // Download a specific lib version
1378
+ // Download library
1379
+ url := "https://github.com/arduino-libraries/AudioZero/archive/refs/tags/1.1.1.zip"
1380
+ zipPath := cli .DownloadDir ().Join ("libraries" , "AudioZero.zip" )
1381
+ require .NoError (t , zipPath .Parent ().MkdirAll ())
1382
+ downloadLib (t , url , zipPath )
1383
+
1384
+ libInstallDir := cli .SketchbookDir ().Join ("libraries" , "AudioZero" )
1385
+ // Verifies library is not already installed
1386
+ require .NoDirExists (t , libInstallDir .String ())
1387
+
1388
+ // Test zip-path install
1389
+ stdout , _ , err := cli .Run ("lib" , "install" , "--zip-path" , zipPath .String ())
1390
+ require .NoError (t , err )
1391
+ require .Contains (t , string (stdout ), "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk." )
1392
+
1393
+ // Verifies library is installed in expected path
1394
+ require .DirExists (t , libInstallDir .String ())
1395
+ files , err := libInstallDir .ReadDirRecursive ()
1396
+ require .NoError (t , err )
1397
+ require .Contains (t , files , libInstallDir .Join ("examples" , "SimpleAudioPlayerZero" , "SimpleAudioPlayerZero.ino" ))
1398
+ require .Contains (t , files , libInstallDir .Join ("src" , "AudioZero.h" ))
1399
+ require .Contains (t , files , libInstallDir .Join ("src" , "AudioZero.cpp" ))
1400
+ require .Contains (t , files , libInstallDir .Join ("keywords.txt" ))
1401
+ require .Contains (t , files , libInstallDir .Join ("library.properties" ))
1402
+ require .Contains (t , files , libInstallDir .Join ("README.adoc" ))
1403
+
1404
+ // Reinstall library
1405
+ _ , _ , err = cli .Run ("lib" , "install" , "--zip-path" , zipPath .String ())
1406
+ require .NoError (t , err )
1407
+
1408
+ // Verifies library remains installed
1409
+ require .DirExists (t , libInstallDir .String ())
1410
+ files , err = libInstallDir .ReadDirRecursive ()
1411
+ require .NoError (t , err )
1412
+ require .Contains (t , files , libInstallDir .Join ("examples" , "SimpleAudioPlayerZero" , "SimpleAudioPlayerZero.ino" ))
1413
+ require .Contains (t , files , libInstallDir .Join ("src" , "AudioZero.h" ))
1414
+ require .Contains (t , files , libInstallDir .Join ("src" , "AudioZero.cpp" ))
1415
+ require .Contains (t , files , libInstallDir .Join ("keywords.txt" ))
1416
+ require .Contains (t , files , libInstallDir .Join ("library.properties" ))
1417
+ require .Contains (t , files , libInstallDir .Join ("README.adoc" ))
1418
+ }
0 commit comments