@@ -783,3 +783,57 @@ func TestSearchParagraph(t *testing.T) {
783783 ]
784784 }` )
785785}
786+
787+ func TestLibListWithUpdatableFlag (t * testing.T ) {
788+ env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
789+ defer env .CleanUp ()
790+
791+ // Init the environment explicitly
792+ _ , _ , err := cli .Run ("lib" , "update-index" )
793+ require .NoError (t , err )
794+
795+ // No libraries to update
796+ stdout , stderr , err := cli .Run ("lib" , "list" , "--updatable" )
797+ require .NoError (t , err )
798+ require .Empty (t , stderr )
799+ require .Contains (t , string (stdout ), "No libraries update is available." )
800+ // No library to update in json
801+ stdout , stderr , err = cli .Run ("lib" , "list" , "--updatable" , "--format" , "json" )
802+ require .NoError (t , err )
803+ require .Empty (t , stderr )
804+ requirejson .Empty (t , stdout )
805+
806+ // Install outdated library
807+ _ , _ , err = cli .Run ("lib" , "install" , "ArduinoJson@6.11.0" )
808+ require .NoError (t , err )
809+ // Install latest version of library
810+ _ , _ , err = cli .Run ("lib" , "install" , "WiFi101" )
811+ require .NoError (t , err )
812+
813+ stdout , stderr , err = cli .Run ("lib" , "list" , "--updatable" )
814+ require .NoError (t , err )
815+ require .Empty (t , stderr )
816+ var lines [][]string
817+ for _ , v := range strings .Split (strings .TrimSpace (string (stdout )), "\n " ) {
818+ v = strings .Join (strings .Fields (v ), " " )
819+ lines = append (lines , strings .SplitN (v , " " , 5 ))
820+ }
821+ require .Len (t , lines , 2 )
822+ require .Subset (t , lines [0 ], []string {"Name" , "Installed" , "Available" , "Location" , "Description" })
823+ require .Equal (t , "ArduinoJson" , lines [1 ][0 ])
824+ require .Equal (t , "6.11.0" , lines [1 ][1 ])
825+ // Verifies available version is not equal to installed one and not empty
826+ require .NotEqual (t , "6.11.0" , lines [1 ][2 ])
827+ require .NotEmpty (t , lines [1 ][2 ])
828+ require .Equal (t , "An efficient and elegant JSON library..." , lines [1 ][4 ])
829+
830+ // Look at the JSON output
831+ stdout , stderr , err = cli .Run ("lib" , "list" , "--updatable" , "--format" , "json" )
832+ require .NoError (t , err )
833+ require .Empty (t , stderr )
834+ requirejson .Len (t , stdout , 1 )
835+ // be sure data contains the available version
836+ requirejson .Query (t , stdout , `.[0] | .library | .version` , `"6.11.0"` )
837+ requirejson .Query (t , stdout , `.[0] | .release | .version != "6.11.0"` , `true` )
838+ requirejson .Query (t , stdout , `.[0] | .release | .version != ""` , `true` )
839+ }
0 commit comments