From b0d253aad84f445e40edb961c18dc951c9217bc7 Mon Sep 17 00:00:00 2001 From: Istvan Soos Date: Mon, 1 Sep 2025 14:33:41 +0200 Subject: [PATCH] Fix: search request update in latency-aware checks. --- app/lib/search/search_service.dart | 11 +---------- .../service/entrypoint/search_index_test.dart | 19 ++++++++++++++++++- .../lib/search/search_request_data.dart | 3 ++- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/app/lib/search/search_service.dart b/app/lib/search/search_service.dart index d7a80dcc8..df230d2a5 100644 --- a/app/lib/search/search_service.dart +++ b/app/lib/search/search_service.dart @@ -189,16 +189,7 @@ class ServiceSearchQuery { ServiceSearchQuery change({ TextMatchExtent? textMatchExtent, }) { - return ServiceSearchQuery(SearchRequestData( - query: query, - tags: _data.tags, - publisherId: publisherId, - order: order, - minPoints: minPoints, - offset: offset, - limit: limit, - textMatchExtent: textMatchExtent ?? this.textMatchExtent, - )); + return ServiceSearchQuery(_data.replace(textMatchExtent: textMatchExtent)); } late final parsedQuery = ParsedQueryText.parse(_data.query); diff --git a/app/test/service/entrypoint/search_index_test.dart b/app/test/service/entrypoint/search_index_test.dart index a80c424e8..993d2634f 100644 --- a/app/test/service/entrypoint/search_index_test.dart +++ b/app/test/service/entrypoint/search_index_test.dart @@ -2,6 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'package:_pub_shared/search/search_request_data.dart'; import 'package:path/path.dart' as p; import 'package:pub_dev/search/search_service.dart'; import 'package:pub_dev/search/updater.dart'; @@ -28,6 +29,10 @@ void main() { description: 'Annotation metadata for JSON serialization.', tags: ['sdk:dart'], ), + PackageDocument( + package: 'other_pkg', + description: 'Some awesome package', + ), ], snapshotPath, ); @@ -35,7 +40,7 @@ void main() { runner = await startSearchIsolate(snapshot: snapshotPath); // index calling the sendport - final searchIndex = IsolateSearchIndex(runner); + final searchIndex = LatencyAwareSearchIndex(IsolateSearchIndex(runner)); expect(await searchIndex.isReady(), true); // text query - result from package index @@ -52,6 +57,18 @@ void main() { }, ], }); + + // packages-based filtering works + final rs2 = await searchIndex.search( + ServiceSearchQuery(SearchRequestData(packages: ['other_pkg']))); + expect(rs2.toJson(), { + 'timestamp': isNotEmpty, + 'totalCount': 1, + 'sdkLibraryHits': [], + 'packageHits': [ + {'package': 'other_pkg', 'score': isNotNull} + ], + }); }); }, timeout: Timeout(Duration(minutes: 5))); }); diff --git a/pkg/_pub_shared/lib/search/search_request_data.dart b/pkg/_pub_shared/lib/search/search_request_data.dart index dfa0eca03..641e3f018 100644 --- a/pkg/_pub_shared/lib/search/search_request_data.dart +++ b/pkg/_pub_shared/lib/search/search_request_data.dart @@ -93,6 +93,7 @@ class SearchRequestData { String? query, List? tags, List? packages, + TextMatchExtent? textMatchExtent, }) { return SearchRequestData( query: query ?? this.query, @@ -103,7 +104,7 @@ class SearchRequestData { order: order, offset: offset, limit: limit, - textMatchExtent: textMatchExtent, + textMatchExtent: textMatchExtent ?? this.textMatchExtent, ); } }