@@ -26,6 +26,7 @@ import (
2626 "github.com/arduino/arduino-cli/internal/integrationtest"
2727 "github.com/arduino/go-paths-helper"
2828 "github.com/stretchr/testify/require"
29+ semver "go.bug.st/relaxed-semver"
2930 "go.bug.st/testifyjson/requirejson"
3031 "gopkg.in/src-d/go-git.v4"
3132 "gopkg.in/src-d/go-git.v4/plumbing"
@@ -831,3 +832,26 @@ func TestCoreWithMissingCustomBoardOptionsIsLoaded(t *testing.T) {
831832 }
832833 ]` )
833834}
835+
836+ func TestCoreListOutdatedCore (t * testing.T ) {
837+ env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
838+ defer env .CleanUp ()
839+
840+ _ , _ , err := cli .Run ("update" )
841+ require .NoError (t , err )
842+
843+ // Install an old core version
844+ _ , _ , err = cli .Run ("core" , "install" , "arduino:samd@1.8.6" )
845+ require .NoError (t , err )
846+
847+ stdout , _ , err := cli .Run ("core" , "list" , "--format" , "json" )
848+ require .NoError (t , err )
849+ requirejson .Len (t , stdout , 1 )
850+ requirejson .Query (t , stdout , ".[0] | .installed" , "\" 1.8.6\" " )
851+ installedVersion , err := semver .Parse (strings .Trim (requirejson .Parse (t , stdout ).Query (".[0] | .installed" ).String (), "\" " ))
852+ require .NoError (t , err )
853+ latestVersion , err := semver .Parse (strings .Trim (requirejson .Parse (t , stdout ).Query (".[0] | .latest" ).String (), "\" " ))
854+ require .NoError (t , err )
855+ // Installed version must be older than latest
856+ require .True (t , installedVersion .LessThan (latestVersion ))
857+ }
0 commit comments