| Index: test/runner/runner_test.dart
|
| diff --git a/test/runner/runner_test.dart b/test/runner/runner_test.dart
|
| index 6f71fe2b6ad2e32a666e646899899a3213770b18..1d7db1366ab0081cae1c971bbd3c3f6536837d91 100644
|
| --- a/test/runner/runner_test.dart
|
| +++ b/test/runner/runner_test.dart
|
| @@ -87,15 +87,19 @@ $_usage"""));
|
|
|
| test("a non-existent file is passed", () {
|
| var result = _runUnittest(["file"]);
|
| - expect(result.stderr, equals('Failed to load "file": Does not exist.\n'));
|
| - expect(result.exitCode, equals(exit_codes.data));
|
| + expect(result.stdout, allOf([
|
| + contains('-1: load error'),
|
| + contains('Failed to load "file": Does not exist.')
|
| + ]));
|
| + expect(result.exitCode, equals(1));
|
| });
|
|
|
| test("the default directory doesn't exist", () {
|
| var result = _runUnittest([]);
|
| - expect(result.stderr, equals(
|
| - 'Failed to load "test": No test files were passed and the default '
|
| - 'directory doesn\'t exist.\n'));
|
| + expect(result.stderr, equals("""
|
| +No test files were passed and the default "test/" directory doesn't exist.
|
| +
|
| +$_usage"""));
|
| expect(result.exitCode, equals(exit_codes.data));
|
| });
|
|
|
| @@ -104,12 +108,15 @@ $_usage"""));
|
| new File(testPath).writeAsStringSync("invalid Dart file");
|
| var result = _runUnittest(["test.dart"]);
|
|
|
| - expect(result.stderr, equals(
|
| - 'Failed to load "${p.relative(testPath, from: _sandbox)}":\n'
|
| - "line 1 pos 1: unexpected token 'invalid'\n"
|
| - "invalid Dart file\n"
|
| - "^\n"));
|
| - expect(result.exitCode, equals(exit_codes.data));
|
| + expect(result.stdout, allOf([
|
| + contains('-1: load error'),
|
| + contains(
|
| + ' Failed to load "${p.relative(testPath, from: _sandbox)}":\n'
|
| + " line 1 pos 1: unexpected token 'invalid'\n"
|
| + " invalid Dart file\n"
|
| + " ^\n")
|
| + ]));
|
| + expect(result.exitCode, equals(1));
|
| });
|
|
|
| // This is slightly different from the above test because it's an error
|
| @@ -119,12 +126,15 @@ $_usage"""));
|
| new File(testPath).writeAsStringSync("@TestOn)");
|
| var result = _runUnittest(["test.dart"]);
|
|
|
| - expect(result.stderr, equals(
|
| - 'Failed to load "${p.relative(testPath, from: _sandbox)}":\n'
|
| - "line 1 pos 8: unexpected token ')'\n"
|
| - "@TestOn)\n"
|
| - " ^\n"));
|
| - expect(result.exitCode, equals(exit_codes.data));
|
| + expect(result.stdout, allOf([
|
| + contains('-1: load error'),
|
| + contains(
|
| + ' Failed to load "${p.relative(testPath, from: _sandbox)}":\n'
|
| + " line 1 pos 8: unexpected token ')'\n"
|
| + " @TestOn)\n"
|
| + " ^\n")
|
| + ]));
|
| + expect(result.exitCode, equals(1));
|
| });
|
|
|
| test("an annotation's structure is invalid", () {
|
| @@ -132,12 +142,15 @@ $_usage"""));
|
| new File(testPath).writeAsStringSync("@TestOn()\nlibrary foo;");
|
| var result = _runUnittest(["test.dart"]);
|
|
|
| - expect(result.stderr, equals(
|
| - 'Failed to load "${p.relative(testPath, from: _sandbox)}":\n'
|
| - "Error on line 1, column 8: TestOn takes one argument.\n"
|
| - "@TestOn()\n"
|
| - " ^^\n"));
|
| - expect(result.exitCode, equals(exit_codes.data));
|
| + expect(result.stdout, allOf([
|
| + contains('-1: load error'),
|
| + contains(
|
| + ' Failed to load "${p.relative(testPath, from: _sandbox)}":\n'
|
| + " Error on line 1, column 8: TestOn takes one argument.\n"
|
| + " @TestOn()\n"
|
| + " ^^\n")
|
| + ]));
|
| + expect(result.exitCode, equals(1));
|
| });
|
|
|
| test("an annotation's contents are invalid", () {
|
| @@ -145,12 +158,15 @@ $_usage"""));
|
| new File(testPath).writeAsStringSync("@TestOn('zim')\nlibrary foo;");
|
| var result = _runUnittest(["test.dart"]);
|
|
|
| - expect(result.stderr, equals(
|
| - 'Failed to load "${p.relative(testPath, from: _sandbox)}":\n'
|
| - "Error on line 1, column 10: Undefined variable.\n"
|
| - "@TestOn('zim')\n"
|
| - " ^^^\n"));
|
| - expect(result.exitCode, equals(exit_codes.data));
|
| + expect(result.stdout, allOf([
|
| + contains('-1: load error'),
|
| + contains(
|
| + ' Failed to load "${p.relative(testPath, from: _sandbox)}":\n'
|
| + " Error on line 1, column 10: Undefined variable.\n"
|
| + " @TestOn('zim')\n"
|
| + " ^^^\n")
|
| + ]));
|
| + expect(result.exitCode, equals(1));
|
| });
|
|
|
| test("a test file throws", () {
|
| @@ -158,9 +174,12 @@ $_usage"""));
|
| new File(testPath).writeAsStringSync("void main() => throw 'oh no';");
|
|
|
| var result = _runUnittest(["test.dart"]);
|
| - expect(result.stderr, startsWith(
|
| - 'Failed to load "${p.relative(testPath, from: _sandbox)}": oh no\n'));
|
| - expect(result.exitCode, equals(exit_codes.data));
|
| + expect(result.stdout, allOf([
|
| + contains('-1: load error'),
|
| + contains(
|
| + 'Failed to load "${p.relative(testPath, from: _sandbox)}": oh no')
|
| + ]));
|
| + expect(result.exitCode, equals(1));
|
| });
|
|
|
| test("a test file doesn't have a main defined", () {
|
| @@ -168,10 +187,13 @@ $_usage"""));
|
| new File(testPath).writeAsStringSync("void foo() {}");
|
|
|
| var result = _runUnittest(["test.dart"]);
|
| - expect(result.stderr, startsWith(
|
| - 'Failed to load "${p.relative(testPath, from: _sandbox)}": No '
|
| - 'top-level main() function defined.\n'));
|
| - expect(result.exitCode, equals(exit_codes.data));
|
| + expect(result.stdout, allOf([
|
| + contains('-1: load error'),
|
| + contains(
|
| + 'Failed to load "${p.relative(testPath, from: _sandbox)}": No '
|
| + 'top-level main() function defined.')
|
| + ]));
|
| + expect(result.exitCode, equals(1));
|
| });
|
|
|
| test("a test file has a non-function main", () {
|
| @@ -179,10 +201,13 @@ $_usage"""));
|
| new File(testPath).writeAsStringSync("int main;");
|
|
|
| var result = _runUnittest(["test.dart"]);
|
| - expect(result.stderr, startsWith(
|
| - 'Failed to load "${p.relative(testPath, from: _sandbox)}": Top-level '
|
| - 'main getter is not a function.\n'));
|
| - expect(result.exitCode, equals(exit_codes.data));
|
| + expect(result.stdout, allOf([
|
| + contains('-1: load error'),
|
| + contains(
|
| + 'Failed to load "${p.relative(testPath, from: _sandbox)}": '
|
| + 'Top-level main getter is not a function.')
|
| + ]));
|
| + expect(result.exitCode, equals(1));
|
| });
|
|
|
| test("a test file has a main with arguments", () {
|
| @@ -190,10 +215,30 @@ $_usage"""));
|
| new File(testPath).writeAsStringSync("void main(arg) {}");
|
|
|
| var result = _runUnittest(["test.dart"]);
|
| - expect(result.stderr, startsWith(
|
| - 'Failed to load "${p.relative(testPath, from: _sandbox)}": Top-level '
|
| - 'main() function takes arguments.\n'));
|
| - expect(result.exitCode, equals(exit_codes.data));
|
| + expect(result.stdout, allOf([
|
| + contains('-1: load error'),
|
| + contains(
|
| + 'Failed to load "${p.relative(testPath, from: _sandbox)}": '
|
| + 'Top-level main() function takes arguments.')
|
| + ]));
|
| + expect(result.exitCode, equals(1));
|
| + });
|
| +
|
| + test("multiple load errors occur", () {
|
| + var testPath = p.join(_sandbox, "test.dart");
|
| + new File(testPath).writeAsStringSync("invalid Dart file");
|
| + var result = _runUnittest(["test.dart", "nonexistent.dart"]);
|
| +
|
| + expect(result.stdout, allOf([
|
| + contains('test.dart: load error'),
|
| + contains(
|
| + ' Failed to load "test.dart":\n'
|
| + " line 1 pos 1: unexpected token 'invalid'\n"
|
| + " invalid Dart file\n"
|
| + " ^\n"),
|
| + contains('nonexistent.dart: load error'),
|
| + contains('Failed to load "nonexistent.dart": Does not exist.')
|
| + ]));
|
| });
|
|
|
| // TODO(nweiz): test what happens when a test file is unreadable once issue
|
| @@ -276,6 +321,13 @@ $_usage"""));
|
| });
|
| });
|
|
|
| + test("runs tests even when a file fails to load", () {
|
| + new File(p.join(_sandbox, "test.dart")).writeAsStringSync(_success);
|
| + var result = _runUnittest(["test.dart", "nonexistent.dart"]);
|
| + expect(result.stdout, contains("+1 -1: Some tests failed."));
|
| + expect(result.exitCode, equals(1));
|
| + });
|
| +
|
| group("flags:", () {
|
| test("with the --color flag, uses colors", () {
|
| new File(p.join(_sandbox, "test.dart")).writeAsStringSync(_failure);
|
| @@ -329,6 +381,15 @@ void main() {
|
| contains('No tests match regular expression "no match".'));
|
| expect(result.exitCode, equals(exit_codes.data));
|
| });
|
| +
|
| + test("doesn't filter out load exceptions", () {
|
| + var result = _runUnittest(["--name", "name", "file"]);
|
| + expect(result.stdout, allOf([
|
| + contains('-1: load error'),
|
| + contains('Failed to load "file": Does not exist.')
|
| + ]));
|
| + expect(result.exitCode, equals(1));
|
| + });
|
| });
|
|
|
| group("with the --plain-name flag,", () {
|
|
|