@@ -1392,3 +1392,56 @@ func TestInstallGitUrlAndZipPathFlagsVisibility(t *testing.T) {
13921392 require .NoError (t , err )
13931393 require .Contains (t , string (stdout ), "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk." )
13941394}
1395+
1396+ func TestInstallWithZipPath (t * testing.T ) {
1397+ env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
1398+ defer env .CleanUp ()
1399+
1400+ // Initialize configs to enable --zip-path flag
1401+ envVar := cli .GetDefaultEnv ()
1402+ envVar ["ARDUINO_ENABLE_UNSAFE_LIBRARY_INSTALL" ] = "true"
1403+ _ , _ , err := cli .RunWithCustomEnv (envVar , "config" , "init" , "--dest-dir" , "." )
1404+ require .NoError (t , err )
1405+
1406+ // Download a specific lib version
1407+ // Download library
1408+ url := "https://github.com/arduino-libraries/AudioZero/archive/refs/tags/1.1.1.zip"
1409+ zipPath := cli .DownloadDir ().Join ("libraries" , "AudioZero.zip" )
1410+ require .NoError (t , zipPath .Parent ().MkdirAll ())
1411+ downloadLib (t , url , zipPath )
1412+
1413+ libInstallDir := cli .SketchbookDir ().Join ("libraries" , "AudioZero" )
1414+ // Verifies library is not already installed
1415+ require .NoDirExists (t , libInstallDir .String ())
1416+
1417+ // Test zip-path install
1418+ stdout , _ , err := cli .Run ("lib" , "install" , "--zip-path" , zipPath .String ())
1419+ require .NoError (t , err )
1420+ require .Contains (t , string (stdout ), "--git-url and --zip-path flags allow installing untrusted files, use it at your own risk." )
1421+
1422+ // Verifies library is installed in expected path
1423+ require .DirExists (t , libInstallDir .String ())
1424+ files , err := libInstallDir .ReadDirRecursive ()
1425+ require .NoError (t , err )
1426+ require .Contains (t , files , libInstallDir .Join ("examples" , "SimpleAudioPlayerZero" , "SimpleAudioPlayerZero.ino" ))
1427+ require .Contains (t , files , libInstallDir .Join ("src" , "AudioZero.h" ))
1428+ require .Contains (t , files , libInstallDir .Join ("src" , "AudioZero.cpp" ))
1429+ require .Contains (t , files , libInstallDir .Join ("keywords.txt" ))
1430+ require .Contains (t , files , libInstallDir .Join ("library.properties" ))
1431+ require .Contains (t , files , libInstallDir .Join ("README.adoc" ))
1432+
1433+ // Reinstall library
1434+ _ , _ , err = cli .Run ("lib" , "install" , "--zip-path" , zipPath .String ())
1435+ require .NoError (t , err )
1436+
1437+ // Verifies library remains installed
1438+ require .DirExists (t , libInstallDir .String ())
1439+ files , err = libInstallDir .ReadDirRecursive ()
1440+ require .NoError (t , err )
1441+ require .Contains (t , files , libInstallDir .Join ("examples" , "SimpleAudioPlayerZero" , "SimpleAudioPlayerZero.ino" ))
1442+ require .Contains (t , files , libInstallDir .Join ("src" , "AudioZero.h" ))
1443+ require .Contains (t , files , libInstallDir .Join ("src" , "AudioZero.cpp" ))
1444+ require .Contains (t , files , libInstallDir .Join ("keywords.txt" ))
1445+ require .Contains (t , files , libInstallDir .Join ("library.properties" ))
1446+ require .Contains (t , files , libInstallDir .Join ("README.adoc" ))
1447+ }
0 commit comments