@@ -530,3 +530,41 @@ func TestInstall(t *testing.T) {
530
530
require .Error (t , err )
531
531
require .Contains (t , string (stderr ), "No valid dependencies solution found: dependency 'MD_MAX72xx' is not available" )
532
532
}
533
+
534
+ func TestInstallLibraryWithDependencies (t * testing.T ) {
535
+ env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
536
+ defer env .CleanUp ()
537
+
538
+ _ , _ , err := cli .Run ("update" )
539
+ require .NoError (t , err )
540
+
541
+ // Verifies libraries are not installed
542
+ stdout , _ , err := cli .Run ("lib" , "list" , "--format" , "json" )
543
+ require .NoError (t , err )
544
+ requirejson .Empty (t , stdout )
545
+
546
+ // Install library
547
+ _ , _ , err = cli .Run ("lib" , "install" , "MD_Parola@3.5.5" )
548
+ require .NoError (t , err )
549
+
550
+ // Verifies library's dependencies are correctly installed
551
+ stdout , _ , err = cli .Run ("lib" , "list" , "--format" , "json" )
552
+ require .NoError (t , err )
553
+ requirejson .Query (t , stdout , "[ .[] | .library | .name ] | sort" , "[\" MD_MAX72XX\" ,\" MD_Parola\" ]" )
554
+
555
+ // Try upgrading with --no-overwrite (should fail) and without --no-overwrite (should succeed)
556
+ _ , _ , err = cli .Run ("lib" , "install" , "MD_Parola@3.6.1" , "--no-overwrite" )
557
+ require .Error (t , err )
558
+ _ , _ , err = cli .Run ("lib" , "install" , "MD_Parola@3.6.1" )
559
+ require .NoError (t , err )
560
+
561
+ // Test --no-overwrite with transitive dependencies
562
+ _ , _ , err = cli .Run ("lib" , "install" , "SD" )
563
+ require .NoError (t , err )
564
+ _ , _ , err = cli .Run ("lib" , "install" , "Arduino_Builtin" , "--no-overwrite" )
565
+ require .NoError (t , err )
566
+ _ , _ , err = cli .Run ("lib" , "install" , "SD@1.2.3" )
567
+ require .NoError (t , err )
568
+ _ , _ , err = cli .Run ("lib" , "install" , "Arduino_Builtin" , "--no-overwrite" )
569
+ require .Error (t , err )
570
+ }
0 commit comments