| // Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file | |
| // 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:test/test.dart'; | |
| import '../shared_test_options.dart'; | |
| import 'expression_compiler_e2e_suite.dart'; | |
| void runTests( | |
| ExpressionEvaluationTestDriver driver, | |
| SetupCompilerOptions setup, | |
| ) { | |
| group('Asserts', () { | |
| const source = r''' | |
| void main() { | |
| var b = const bool.fromEnvironment('dart.web.assertions_enabled'); | |
| // Breakpoint: bp | |
| print('hello world'); | |
| } | |
| int myAssert() { | |
| assert(false); | |
| return 0; | |
| } | |
| '''; | |
| setUpAll(() => driver.initSource(setup, source)); | |
| tearDownAll(() async { | |
| await driver.cleanupTest(); | |
| await driver.finish(); | |
| }); | |
| if (setup.enableAsserts) { | |
| group('enabled |', () { | |
| test('dart.web.assertions_enabled is set', () async { | |
| await driver.checkInFrame( | |
| breakpointId: 'bp', | |
| expression: 'b', | |
| expectedResult: 'true', | |
| ); | |
| }); | |
| test('assert errors in the source code', () async { | |
| await driver.checkInFrame( | |
| breakpointId: 'bp', | |
| expression: 'myAssert()', | |
| expectedError: allOf( | |
| contains('Error: Assertion failed:'), | |
| contains('test.dart:8:16'), | |
| contains('false'), | |
| contains('is not true'), | |
| ), | |
| ); | |
| }); | |
| test('assert errors in evaluated expression', () async { | |
| await driver.checkInFrame( | |
| breakpointId: 'bp', | |
| expression: '() { assert(false); return 0; } ()', | |
| expectedError: allOf( | |
| contains('Error: Assertion failed:'), | |
| contains('org-dartlang-debug:synthetic_debug_expression:1:13'), | |
| contains('false'), | |
| contains('is not true'), | |
| ), | |
| ); | |
| }); | |
| }); | |
| } | |
| if (!setup.enableAsserts) { | |
| group('disabled |', () { | |
| test('dart.web.assertions_enabled is not set', () async { | |
| await driver.checkInFrame( | |
| breakpointId: 'bp', | |
| expression: 'b', | |
| expectedResult: 'false', | |
| ); | |
| }); | |
| test('no assert errors in the source code', () async { | |
| await driver.checkInFrame( | |
| breakpointId: 'bp', | |
| expression: 'myAssert()', | |
| expectedResult: '0', | |
| ); | |
| }); | |
| test('no assert errors in evaluated expression', () async { | |
| await driver.checkInFrame( | |
| breakpointId: 'bp', | |
| expression: '() { assert(false); return 0; } ()', | |
| expectedResult: '0', | |
| ); | |
| }); | |
| }); | |
| } | |
| }); | |
| } |