From 63e5d2787bbec3fb7177e96b8b1b8cea1f8681bd Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Wed, 13 Feb 2019 22:06:42 +0100 Subject: [PATCH] fix(ivy): rethrow event handler errors in tests (#28707) Currently errors thrown inside event handler in Ivy are caught and forwarded to the `ErrorHandler`, however this means that if they happen during a unit test, the test won't fail. These changes add a test-specific `ErrorHandler` that throws the error rather than logging it out. PR Close #28707 --- packages/core/testing/src/r3_test_bed.ts | 7 +++++++ tools/material-ci/angular_material_test_blocklist.js | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/packages/core/testing/src/r3_test_bed.ts b/packages/core/testing/src/r3_test_bed.ts index 3dcf1f12a0..7b61642387 100644 --- a/packages/core/testing/src/r3_test_bed.ts +++ b/packages/core/testing/src/r3_test_bed.ts @@ -15,6 +15,7 @@ import { Compiler, Component, Directive, + ErrorHandler, Injector, ModuleWithComponentFactories, NgModule, @@ -600,6 +601,7 @@ export class TestBedRender3 implements Injector, TestBed { const providers = [ {provide: NgZone, useValue: ngZone}, {provide: Compiler, useFactory: () => new R3TestCompiler(this)}, + {provide: ErrorHandler, useClass: R3TestErrorHandler}, ...this._providers, ...this._providerOverrides, ]; @@ -813,3 +815,8 @@ class R3TestCompiler implements Compiler { return meta && meta.id || undefined; } } + +/** Error handler used for tests. Rethrows errors rather than logging them out. */ +class R3TestErrorHandler extends ErrorHandler { + handleError(error: any) { throw error; } +} diff --git a/tools/material-ci/angular_material_test_blocklist.js b/tools/material-ci/angular_material_test_blocklist.js index 43c304bd27..f92d5c8bd4 100644 --- a/tools/material-ci/angular_material_test_blocklist.js +++ b/tools/material-ci/angular_material_test_blocklist.js @@ -985,6 +985,10 @@ window.testBlocklist = { "error": "Error: Expected mat-slide-toggle-thumb-container to contain 'mat-dragging'.", "notes": "Unknown" }, + "MatSlideToggle without forms custom action configuration should not change value on click when click action is noop": { + "error": "TypeError: this._inputElement is undefined", + "notes": "Unknown" + }, "MatDrawer methods should be able to open": { "error": "Error: Expected 0 to be 1.", "notes": "Unknown"