| Index: test/runner/pause_after_load_test.dart
|
| diff --git a/test/runner/pause_after_load_test.dart b/test/runner/pause_after_load_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8b6eb2fba6d66ee877bc8d76b94a9e37ed152c50
|
| --- /dev/null
|
| +++ b/test/runner/pause_after_load_test.dart
|
| @@ -0,0 +1,237 @@
|
| +// 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:scheduled_test/descriptor.dart' as d;
|
| +import 'package:scheduled_test/scheduled_stream.dart';
|
| +import 'package:scheduled_test/scheduled_test.dart';
|
| +
|
| +import '../io.dart';
|
| +
|
| +void main() {
|
| + useSandbox();
|
| +
|
| + test("pauses the test runner for each file until the user presses enter", () {
|
| + d.file("test1.dart", """
|
| +import 'package:test/test.dart';
|
| +
|
| +void main() {
|
| + print('loaded test 1!');
|
| +
|
| + test("success", () {});
|
| +}
|
| +""").create();
|
| +
|
| + d.file("test2.dart", """
|
| +import 'package:test/test.dart';
|
| +
|
| +void main() {
|
| + print('loaded test 2!');
|
| +
|
| + test("success", () {});
|
| +}
|
| +""").create();
|
| +
|
| + var test = runTest(
|
| + ["--pause-after-load", "-p", "dartium", "test1.dart", "test2.dart"]);
|
| + test.stdout.expect(consumeThrough("loaded test 1!"));
|
| + test.stdout.expect(consumeThrough(inOrder([
|
| + "The test runner is paused. Open the dev console in Dartium and set "
|
| + "breakpoints. Once you're",
|
| + "finished, return to this terminal and press Enter."
|
| + ])));
|
| +
|
| + schedule(() async {
|
| + var nextLineFired = false;
|
| + test.stdout.next().then(expectAsync((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 new Future.delayed(new Duration(seconds: 2));
|
| + expect(nextLineFired, isFalse);
|
| + });
|
| +
|
| + test.writeLine('');
|
| +
|
| + test.stdout.expect(consumeThrough("loaded test 2!"));
|
| + test.stdout.expect(consumeThrough(inOrder([
|
| + "The test runner is paused. Open the dev console in Dartium and set "
|
| + "breakpoints. Once you're",
|
| + "finished, return to this terminal and press Enter."
|
| + ])));
|
| +
|
| + schedule(() async {
|
| + var nextLineFired = false;
|
| + test.stdout.next().then(expectAsync((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 new Future.delayed(new Duration(seconds: 2));
|
| + expect(nextLineFired, isFalse);
|
| + });
|
| +
|
| + test.writeLine('');
|
| + test.stdout.expect(consumeThrough(contains("+2: All tests passed!")));
|
| + test.shouldExit(0);
|
| + });
|
| +
|
| + test("pauses the test runner for each platform until the user presses enter",
|
| + () {
|
| + d.file("test.dart", """
|
| +import 'package:test/test.dart';
|
| +
|
| +void main() {
|
| + print('loaded test!');
|
| +
|
| + test("success", () {});
|
| +}
|
| +""").create();
|
| +
|
| + var test = runTest(
|
| + ["--pause-after-load", "-p", "dartium", "-p", "chrome", "test.dart"]);
|
| + test.stdout.expect(consumeThrough("loaded test!"));
|
| + test.stdout.expect(consumeThrough(inOrder([
|
| + "The test runner is paused. Open the dev console in Dartium and set "
|
| + "breakpoints. Once you're",
|
| + "finished, return to this terminal and press Enter."
|
| + ])));
|
| +
|
| + schedule(() async {
|
| + var nextLineFired = false;
|
| + test.stdout.next().then(expectAsync((line) {
|
| + expect(line, contains("+0: [Dartium] success"));
|
| + nextLineFired = true;
|
| + }));
|
| +
|
| + // Wait a little bit to be sure that the tests don't start running without
|
| + // our input.
|
| + await new Future.delayed(new Duration(seconds: 2));
|
| + expect(nextLineFired, isFalse);
|
| + });
|
| +
|
| + test.writeLine('');
|
| +
|
| + test.stdout.expect(consumeThrough("loaded test!"));
|
| + test.stdout.expect(consumeThrough(inOrder([
|
| + "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."
|
| + ])));
|
| +
|
| + schedule(() async {
|
| + var nextLineFired = false;
|
| + test.stdout.next().then(expectAsync((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 new Future.delayed(new Duration(seconds: 2));
|
| + expect(nextLineFired, isFalse);
|
| + });
|
| +
|
| + test.writeLine('');
|
| + test.stdout.expect(consumeThrough(contains("+2: All tests passed!")));
|
| + test.shouldExit(0);
|
| + });
|
| +
|
| + test("prints a warning and doesn't pause for unsupported platforms", () {
|
| + d.file("test.dart", """
|
| +import 'package:test/test.dart';
|
| +
|
| +void main() {
|
| + test("success", () {});
|
| +}
|
| +""").create();
|
| +
|
| + var test = runTest(
|
| + ["--pause-after-load", "-p", "vm", "-p", "content-shell", "test.dart"]);
|
| + test.stderr.expect(
|
| + "Warning: Debugging is currently unsupported on the Dart VM and "
|
| + "Dartium Content Shell.");
|
| + test.stdout.expect(consumeThrough(contains("+2: All tests passed!")));
|
| + test.shouldExit(0);
|
| + });
|
| +
|
| + test("can mix supported and unsupported platforms", () {
|
| + d.file("test.dart", """
|
| +import 'package:test/test.dart';
|
| +
|
| +void main() {
|
| + print('loaded test!');
|
| +
|
| + test("success", () {});
|
| +}
|
| +""").create();
|
| +
|
| + var test = runTest(
|
| + ["--pause-after-load", "-p", "dartium", "-p", "vm", "test.dart"]);
|
| + test.stderr.expect(
|
| + "Warning: Debugging is currently unsupported on the Dart VM.");
|
| +
|
| + test.stdout.expect(consumeThrough("loaded test!"));
|
| + test.stdout.expect(consumeThrough(inOrder([
|
| + "The test runner is paused. Open the dev console in Dartium and set "
|
| + "breakpoints. Once you're",
|
| + "finished, return to this terminal and press Enter."
|
| + ])));
|
| +
|
| + schedule(() async {
|
| + var nextLineFired = false;
|
| + test.stdout.next().then(expectAsync((line) {
|
| + expect(line, contains("+0: [Dartium] success"));
|
| + nextLineFired = true;
|
| + }));
|
| +
|
| + // Wait a little bit to be sure that the tests don't start running without
|
| + // our input.
|
| + await new Future.delayed(new Duration(seconds: 2));
|
| + expect(nextLineFired, isFalse);
|
| + });
|
| +
|
| + test.writeLine('');
|
| +
|
| + test.stdout.expect(containsInOrder([
|
| + "loaded test!",
|
| + "+1: [VM] success",
|
| + "+2: All tests passed!"
|
| + ]));
|
| + test.shouldExit(0);
|
| + });
|
| +
|
| + test("stops immediately if killed while paused", () {
|
| + d.file("test.dart", """
|
| +import 'package:test/test.dart';
|
| +
|
| +void main() {
|
| + print('loaded test!');
|
| +
|
| + test("success", () {});
|
| +}
|
| +""").create();
|
| +
|
| + var test = runTest(["--pause-after-load", "-p", "dartium", "test.dart"]);
|
| + test.stdout.expect(consumeThrough("loaded test!"));
|
| + test.stdout.expect(consumeThrough(inOrder([
|
| + "The test runner is paused. Open the dev console in Dartium and set "
|
| + "breakpoints. Once you're",
|
| + "finished, return to this terminal and press Enter."
|
| + ])));
|
| +
|
| + test.signal(ProcessSignal.SIGTERM);
|
| + test.shouldExit();
|
| + test.stderr.expect(isDone);
|
| + }, testOn: "!windows");
|
| +}
|
|
|