@@ -1363,3 +1363,56 @@ func TestInstallGitUrlAndZipPathFlagsVisibility(t *testing.T) {
13631363 require .NoError (t , err )
13641364 require .Contains (t , string (stdout ), "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk." )
13651365}
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