| // Copyright (c) 2023, 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. |
| |
| @TestOn('vm') |
| library; |
| |
| import 'package:test/test.dart'; |
| import 'package:test_descriptor/test_descriptor.dart' as d; |
| |
| import '../io.dart'; |
| |
| final _test = ''' |
| import 'package:test/test.dart'; |
| |
| void main() { |
| test("success", () {}); |
| } |
| '''; |
| |
| void main() { |
| setUpAll(() async { |
| await precompileTestExecutable(); |
| await d.file('test.dart', _test).create(); |
| }); |
| |
| group('--compiler', () { |
| test( |
| 'uses the default compiler if none other is specified for the platform', |
| () async { |
| var test = |
| await runTest(['test.dart', '-p', 'chrome,vm', '-c', 'dart2js']); |
| |
| expect(test.stdout, emitsThrough(contains('[Chrome, Dart2Js]'))); |
| expect(test.stdout, emitsThrough(contains('[VM, Kernel]'))); |
| expect(test.stdout, emitsThrough(contains('+2: All tests passed!'))); |
| await test.shouldExit(0); |
| }); |
| |
| test('runs all supported compiler and platform combinations', () async { |
| var test = await runTest( |
| ['test.dart', '-p', 'chrome,vm', '-c', 'dart2js,kernel,source']); |
| |
| expect(test.stdout, emitsThrough(contains('[Chrome, Dart2Js]'))); |
| expect(test.stdout, emitsThrough(contains('[VM, Kernel]'))); |
| expect(test.stdout, emitsThrough(contains('[VM, Source]'))); |
| expect(test.stdout, emitsThrough(contains('+3: All tests passed!'))); |
| await test.shouldExit(0); |
| }); |
| |
| test('supports platform selectors', () async { |
| var test = await runTest( |
| ['test.dart', '-p', 'vm', '-c', 'vm:source,browser:kernel']); |
| |
| expect(test.stdout, emitsThrough(contains('[VM, Source]'))); |
| expect(test.stdout, emitsThrough(contains('+1: All tests passed!'))); |
| await test.shouldExit(0); |
| }); |
| |
| test( |
| 'will only run a given test once for each compiler, even if there are ' |
| 'multiple matches', () async { |
| var test = |
| await runTest(['test.dart', '-p', 'vm', '-c', 'vm:source,source']); |
| |
| expect(test.stdout, emitsThrough(contains('[VM, Source]'))); |
| expect(test.stdout, emitsThrough(contains('+1: All tests passed!'))); |
| await test.shouldExit(0); |
| }); |
| |
| test('fails on unknown compilers', () async { |
| var test = await runTest(['test.dart', '-c', 'fake']); |
| expect(test.stderr, emitsThrough(contains('Invalid compiler `fake`'))); |
| await test.shouldExit(64); |
| }); |
| }); |
| } |