// 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'); }); }); } }); }