diff --git a/commands/lib/search.go b/commands/lib/search.go index 5b14a3f25bb..6214591f6ce 100644 --- a/commands/lib/search.go +++ b/commands/lib/search.go @@ -37,7 +37,10 @@ func LibrarySearch(ctx context.Context, req *rpc.LibrarySearchReq) (*rpc.Library res := []*rpc.SearchedLibrary{} for _, lib := range lm.Index.Libraries { - if strings.Contains(strings.ToLower(lib.Name), strings.ToLower(req.GetQuery())) { + qry := strings.ToLower(req.GetQuery()) + if strings.Contains(strings.ToLower(lib.Name), qry) || + strings.Contains(strings.ToLower(lib.Latest.Paragraph), qry) || + strings.Contains(strings.ToLower(lib.Latest.Sentence), qry) { releases := map[string]*rpc.LibraryRelease{} for str, rel := range lib.Releases { releases[str] = GetLibraryParameters(rel) diff --git a/test/test_lib.py b/test/test_lib.py index 22f7fbff525..6323e849e66 100644 --- a/test/test_lib.py +++ b/test/test_lib.py @@ -105,4 +105,18 @@ def test_search(run_command): result = run_command("lib search ArduinoJson --format json") assert result.ok libs_json = json.loads(result.stdout) + assert len(libs_json.get("libraries")) >= 1 + + +def test_search_paragraph(run_command): + """ + Search for a string that's only present in the `paragraph` field + within the index file. + """ + assert run_command("lib update-index") + result = run_command( + 'lib search "An efficient and elegant JSON library" --format json' + ) + assert result.ok + libs_json = json.loads(result.stdout) assert 1 == len(libs_json.get("libraries"))