| // Copyright (c) 2015, 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') |
| |
| import 'dart:async'; |
| import 'dart:io'; |
| |
| import 'package:pedantic/pedantic.dart'; |
| import 'package:test/test.dart'; |
| import 'package:test_descriptor/test_descriptor.dart' as d; |
| |
| import '../io.dart'; |
| |
| void main() { |
| test('pauses the test runner for each file until the user presses enter', |
| () async { |
| await d.file('test1.dart', ''' |
| import 'package:test/test.dart'; |
| |
| void main() { |
| print('loaded test 1!'); |
| |
| test("success", () {}); |
| } |
| ''').create(); |
| |
| await d.file('test2.dart', ''' |
| import 'package:test/test.dart'; |
| |
| void main() { |
| |
| print('loaded test 2!'); |
| test("success", () {}); |
| } |
| ''').create(); |
| |
| var test = await runTest( |
| ['--pause-after-load', '-p', 'chrome', 'test1.dart', 'test2.dart']); |
| await expectLater(test.stdout, emitsThrough('loaded test 1!')); |
| await expectLater(test.stdout, emitsThrough(equalsIgnoringWhitespace(''' |
| The test runner is paused. Open the dev console in Chrome and set |
| breakpoints. Once you're finished, return to this terminal and press |
| Enter. |
| '''))); |
| |
| var nextLineFired = false; |
| unawaited(test.stdout.next.then(expectAsync1((line) { |
| expect(line, contains('+0: test1.dart: success')); |
| nextLineFired = true; |
| }))); |
| |
| // Wait a little bit to be sure that the tests don't start running without |
| // our input. |
| await Future.delayed(Duration(seconds: 2)); |
| expect(nextLineFired, isFalse); |
| |
| test.stdin.writeln(); |
| |
| await expectLater(test.stdout, emitsThrough('loaded test 2!')); |
| await expectLater(test.stdout, emitsThrough(equalsIgnoringWhitespace(''' |
| The test runner is paused. Open the dev console in Chrome and set |
| breakpoints. Once you're finished, return to this terminal and press |
| Enter. |
| '''))); |
| |
| nextLineFired = false; |
| unawaited(test.stdout.next.then(expectAsync1((line) { |
| expect(line, contains('+1: test2.dart: success')); |
| nextLineFired = true; |
| }))); |
| |
| // Wait a little bit to be sure that the tests don't start running without |
| // our input. |
| await Future.delayed(Duration(seconds: 2)); |
| expect(nextLineFired, isFalse); |
| |
| test.stdin.writeln(); |
| await expectLater( |
| test.stdout, emitsThrough(contains('+2: All tests passed!'))); |
| await test.shouldExit(0); |
| }, tags: 'chrome'); |
| |
| test('pauses the test runner for each platform until the user presses enter', |
| () async { |
| await d.file('test.dart', ''' |
| import 'package:test/test.dart'; |
| |
| void main() { |
| print('loaded test!'); |
| |
| test("success", () {}); |
| } |
| ''').create(); |
| |
| var test = await runTest([ |
| '--pause-after-load', |
| '-p', |
| 'firefox', |
| '-p', |
| 'chrome', |
| '-p', |
| 'vm', |
| 'test.dart' |
| ]); |
| await expectLater(test.stdout, emitsThrough('loaded test!')); |
| await expectLater(test.stdout, emitsThrough(equalsIgnoringWhitespace(''' |
| The test runner is paused. Open the dev console in Firefox and set |
| breakpoints. Once you're finished, return to this terminal and press |
| Enter. |
| '''))); |
| |
| var nextLineFired = false; |
| unawaited(test.stdout.next.then(expectAsync1((line) { |
| expect(line, contains('+0: [Firefox] success')); |
| nextLineFired = true; |
| }))); |
| |
| // Wait a little bit to be sure that the tests don't start running without |
| // our input. |
| await Future.delayed(Duration(seconds: 2)); |
| expect(nextLineFired, isFalse); |
| |
| test.stdin.writeln(); |
| |
| await expectLater(test.stdout, emitsThrough('loaded test!')); |
| await expectLater( |
| test.stdout, |
| emitsThrough(emitsInOrder([ |
| 'The test runner is paused. Open the dev console in Chrome and set ' |
| "breakpoints. Once you're finished, return to this terminal and " |
| 'press Enter.' |
| ]))); |
| |
| nextLineFired = false; |
| unawaited(test.stdout.next.then(expectAsync1((line) { |
| expect(line, contains('+1: [Chrome] success')); |
| nextLineFired = true; |
| }))); |
| |
| // Wait a little bit to be sure that the tests don't start running without |
| // our input. |
| await Future.delayed(Duration(seconds: 2)); |
| expect(nextLineFired, isFalse); |
| |
| test.stdin.writeln(); |
| await expectLater(test.stdout, emitsThrough('loaded test!')); |
| await expectLater( |
| test.stdout, |
| emitsThrough(emitsInOrder([ |
| 'The test runner is paused. Open the Observatory and set ' |
| "breakpoints. Once you're finished, return to this terminal " |
| 'and press Enter.' |
| ]))); |
| |
| nextLineFired = false; |
| unawaited(test.stdout.next.then(expectAsync1((line) { |
| expect(line, contains('+2: [VM] success')); |
| nextLineFired = true; |
| }))); |
| |
| // Wait a little bit to be sure that the tests don't start running without |
| // our input. |
| await Future.delayed(Duration(seconds: 2)); |
| expect(nextLineFired, isFalse); |
| |
| test.stdin.writeln(); |
| |
| await expectLater( |
| test.stdout, emitsThrough(contains('+3: All tests passed!'))); |
| await test.shouldExit(0); |
| }, tags: ['firefox', 'chrome', 'vm']); |
| |
| test("warns if SILENT_OBSERVATORY isn't set when trying to debug the vm", |
| () async { |
| await d.file('test.dart', ''' |
| import 'package:test/test.dart'; |
| |
| void main() { |
| test("success", () {}); |
| } |
| ''').create(); |
| |
| var test = await runTest(['--pause-after-load', '-p', 'vm', 'test.dart']); |
| await expectLater( |
| test.stderr, |
| emits('Warning: You should set `SILENT_OBSERVATORY` to true when ' |
| 'debugging the VM as it will output the observatory URL by ' |
| 'default.')); |
| test.stdin.writeln(); |
| await expectLater( |
| test.stdout, emitsThrough(contains('+1: All tests passed!'))); |
| await test.shouldExit(0); |
| }); |
| |
| test('stops immediately if killed while paused', () async { |
| await d.file('test.dart', ''' |
| import 'package:test/test.dart'; |
| |
| void main() { |
| print('loaded test!'); |
| |
| test("success", () {}); |
| } |
| ''').create(); |
| |
| var test = |
| await runTest(['--pause-after-load', '-p', 'chrome', 'test.dart']); |
| await expectLater(test.stdout, emitsThrough('loaded test!')); |
| await expectLater(test.stdout, emitsThrough(equalsIgnoringWhitespace(''' |
| The test runner is paused. Open the dev console in Chrome and set |
| breakpoints. Once you're finished, return to this terminal and press |
| Enter. |
| '''))); |
| |
| test.signal(ProcessSignal.sigterm); |
| await test.shouldExit(); |
| await expectLater(test.stderr, emitsDone); |
| }, tags: 'chrome', testOn: '!windows'); |
| |
| test('disables timeouts', () async { |
| await d.file('test.dart', ''' |
| import 'dart:async'; |
| |
| import 'package:test/test.dart'; |
| |
| void main() { |
| print('loaded test 1!'); |
| |
| test("success", () async { |
| await Future.delayed(Duration.zero); |
| }, timeout: Timeout(Duration.zero)); |
| } |
| ''').create(); |
| |
| var test = await runTest( |
| ['--pause-after-load', '-p', 'chrome', '-n', 'success', 'test.dart']); |
| await expectLater(test.stdout, emitsThrough('loaded test 1!')); |
| await expectLater(test.stdout, emitsThrough(equalsIgnoringWhitespace(''' |
| The test runner is paused. Open the dev console in Chrome and set |
| breakpoints. Once you're finished, return to this terminal and press |
| Enter. |
| '''))); |
| |
| var nextLineFired = false; |
| unawaited(test.stdout.next.then(expectAsync1((line) { |
| expect(line, contains('+0: success')); |
| nextLineFired = true; |
| }))); |
| |
| // Wait a little bit to be sure that the tests don't start running without |
| // our input. |
| await Future.delayed(Duration(seconds: 2)); |
| expect(nextLineFired, isFalse); |
| |
| test.stdin.writeln(); |
| await expectLater( |
| test.stdout, emitsThrough(contains('+1: All tests passed!'))); |
| await test.shouldExit(0); |
| }, tags: 'chrome'); |
| |
| // Regression test for #304. |
| test('supports test name patterns', () async { |
| await d.file('test.dart', ''' |
| import 'package:test/test.dart'; |
| |
| void main() { |
| print('loaded test 1!'); |
| |
| test("failure 1", () {}); |
| test("success", () {}); |
| test("failure 2", () {}); |
| } |
| ''').create(); |
| |
| var test = await runTest( |
| ['--pause-after-load', '-p', 'chrome', '-n', 'success', 'test.dart']); |
| await expectLater(test.stdout, emitsThrough('loaded test 1!')); |
| await expectLater(test.stdout, emitsThrough(equalsIgnoringWhitespace(''' |
| The test runner is paused. Open the dev console in Chrome and set |
| breakpoints. Once you're finished, return to this terminal and press |
| Enter. |
| '''))); |
| |
| var nextLineFired = false; |
| unawaited(test.stdout.next.then(expectAsync1((line) { |
| expect(line, contains('+0: success')); |
| nextLineFired = true; |
| }))); |
| |
| // Wait a little bit to be sure that the tests don't start running without |
| // our input. |
| await Future.delayed(Duration(seconds: 2)); |
| expect(nextLineFired, isFalse); |
| |
| test.stdin.writeln(); |
| await expectLater( |
| test.stdout, emitsThrough(contains('+1: All tests passed!'))); |
| await test.shouldExit(0); |
| }, tags: 'chrome'); |
| } |