Skip to content

Commit 0eea254

Browse files
committed
ignore server message
1 parent 65e1275 commit 0eea254

File tree

3 files changed

+31
-9
lines changed

3 files changed

+31
-9
lines changed

pkg/pub_integration/lib/src/fake_test_context_provider.dart

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ class TestContextProvider {
3030
this._testBrowser,
3131
);
3232

33-
static Future<TestContextProvider> start() async {
33+
static Future<TestContextProvider> start({
34+
List<IgnoreMessageFilter>? ignoreServerErrors,
35+
}) async {
3436
final fakePubServerProcess = await FakePubServerProcess.start();
3537
await fakePubServerProcess.started;
3638
final origin = 'http://localhost:${fakePubServerProcess.port}';
@@ -42,7 +44,11 @@ class TestContextProvider {
4244
Isolate.current.hashCode,
4345
].join('-');
4446

45-
final testBrowser = TestBrowser(origin: origin, testName: testName);
47+
final testBrowser = TestBrowser(
48+
origin: origin,
49+
testName: testName,
50+
ignoreServerErrors: ignoreServerErrors,
51+
);
4652
await testBrowser.startBrowser();
4753
return TestContextProvider._(origin, fakePubServerProcess, testBrowser);
4854
}

pkg/pub_integration/lib/src/test_browser.dart

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ import 'package:puppeteer/puppeteer.dart';
1212
import 'package:puppeteer_screenshots/puppeteer_utils.dart';
1313
import 'package:retry/retry.dart';
1414

15+
/// Filters server or client messages, ignoring and not reporting them as errors.
16+
typedef IgnoreMessageFilter = bool Function(String message);
17+
1518
/// Creates and tracks the headless Chrome environment, its temp directories and
1619
/// and uncaught exceptions.
1720
class TestBrowser {
@@ -31,14 +34,19 @@ class TestBrowser {
3134
/// The coverage report of CSS files.
3235
final _cssCoverages = <String, _Coverage>{};
3336

37+
/// Filters to ignore server errors.
38+
final List<IgnoreMessageFilter>? _ignoreServerErrors;
39+
3440
TestBrowser({
3541
required String origin,
3642
String? testName,
3743
String? coverageDir,
3844
bool displayBrowser = false,
45+
List<IgnoreMessageFilter>? ignoreServerErrors,
3946
}) : _displayBrowser = displayBrowser,
4047
_testName = testName,
4148
_origin = origin,
49+
_ignoreServerErrors = ignoreServerErrors,
4250
_coverageDir = coverageDir ?? Platform.environment['COVERAGE_DIR'],
4351
_tempDir = Directory.systemTemp.createTempSync('pub-headless');
4452

@@ -177,10 +185,7 @@ class TestBrowserSession {
177185
TestBrowserSession(this._browser, this._context);
178186

179187
/// Creates a new page and setup overrides and tracking.
180-
Future<R> withPage<R>({
181-
required Future<R> Function(Page page) fn,
182-
bool Function(String message)? serverErrorFilter,
183-
}) async {
188+
Future<R> withPage<R>({required Future<R> Function(Page page) fn}) async {
184189
final clientErrors = <ClientError>[];
185190
final serverErrors = <String>[];
186191
final page = await _context.newPage();
@@ -300,8 +305,10 @@ class TestBrowserSession {
300305
if (clientErrors.isNotEmpty) {
301306
throw Exception('Client errors detected: ${clientErrors.first}');
302307
}
303-
if (serverErrorFilter != null) {
304-
serverErrors.retainWhere(serverErrorFilter);
308+
if (_browser._ignoreServerErrors != null) {
309+
serverErrors.removeWhere(
310+
(msg) => _browser._ignoreServerErrors!.any((fn) => fn(msg)),
311+
);
305312
}
306313
if (serverErrors.isNotEmpty) {
307314
throw Exception(

pkg/pub_integration/test/search_update_test.dart

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,16 @@ void main() {
1818
final httpClient = http.Client();
1919

2020
setUpAll(() async {
21-
fakeTestScenario = await TestContextProvider.start();
21+
fakeTestScenario = await TestContextProvider.start(
22+
ignoreServerErrors: [
23+
// NOTE: This message seems to be a race condition.
24+
// Investigate if this can be safely ignored (e.g. it is retried).
25+
(msg) => msg.contains(
26+
'/packages?q=platform%3Aandroid&open-sections=sdks returned bad HTML: '
27+
'No data found for resource with given identifier',
28+
),
29+
],
30+
);
2231
});
2332

2433
tearDownAll(() async {

0 commit comments

Comments
 (0)