diff --git a/cli/lib/list.go b/cli/lib/list.go index 3b88cc8bff2..0f6c32cd83f 100644 --- a/cli/lib/list.go +++ b/cli/lib/list.go @@ -109,6 +109,9 @@ func (ir installedResult) Data() interface{} { func (ir installedResult) String() string { if ir.installedLibs == nil || len(ir.installedLibs) == 0 { + if listFlags.updatable { + return "No updates available." + } return "No libraries installed." } sort.Slice(ir.installedLibs, func(i, j int) bool { diff --git a/test/test_lib.py b/test/test_lib.py index d3c4d839e30..3c28b60237c 100644 --- a/test/test_lib.py +++ b/test/test_lib.py @@ -236,3 +236,50 @@ def test_search_paragraph(run_command): assert result.ok libs_json = json.loads(result.stdout) assert 1 == len(libs_json.get("libraries")) + + +def test_lib_list_with_updatable_flag(run_command): + # Init the environment explicitly + run_command("lib update-index") + + # No libraries to update + result = run_command("lib list --updatable") + assert result.ok + assert "" == result.stderr + assert "No updates available." == result.stdout.strip() + # No library to update in json + result = run_command("lib list --updatable --format json") + assert result.ok + assert "" == result.stderr + assert 0 == len(json.loads(result.stdout)) + + # Install outdated library + assert run_command("lib install ArduinoJson@6.11.0") + # Install latest version of library + assert run_command("lib install WiFi101") + + res = run_command("lib list --updatable") + assert res.ok + assert "" == res.stderr + # lines = res.stdout.strip().splitlines() + lines = [l.strip().split(maxsplit=4) for l in res.stdout.strip().splitlines()] + assert 2 == len(lines) + assert ["Name", "Installed", "Available", "Location", "Description"] in lines + line = lines[1] + assert "ArduinoJson" == line[0] + assert "6.11.0" == line[1] + # Verifies available version is not equal to installed one and not empty + assert "6.11.0" != line[2] + assert "" != line[2] + assert "An efficient and elegant JSON library..." == line[4] + + # Look at the JSON output + res = run_command("lib list --updatable --format json") + assert res.ok + assert "" == res.stderr + data = json.loads(res.stdout) + assert 1 == len(data) + # be sure data contains the available version + assert "6.11.0" == data[0]["library"]["version"] + assert "6.11.0" != data[0]["release"]["version"] + assert "" != data[0]["release"]["version"]