Index: test/runner/browser/runner_test.dart |
diff --git a/test/runner/browser/runner_test.dart b/test/runner/browser/runner_test.dart |
index ec17e038b09e3248ccf78c1bb492d53aa7c4705d..14ad58daad612978ae5c295bf40a7b3ddc0bab6b 100644 |
--- a/test/runner/browser/runner_test.dart |
+++ b/test/runner/browser/runner_test.dart |
@@ -4,16 +4,12 @@ |
@TestOn("vm") |
-import 'dart:io'; |
- |
-import 'package:path/path.dart' as p; |
-import 'package:test/src/util/io.dart'; |
-import 'package:test/test.dart'; |
+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'; |
-String _sandbox; |
- |
final _success = """ |
import 'package:test/test.dart'; |
@@ -31,137 +27,109 @@ void main() { |
"""; |
void main() { |
- setUp(() { |
- _sandbox = createTempDir(); |
- }); |
- |
- tearDown(() { |
- new Directory(_sandbox).deleteSync(recursive: true); |
- }); |
+ useSandbox(); |
group("fails gracefully if", () { |
test("a test file fails to compile", () { |
- var testPath = p.join(_sandbox, "test.dart"); |
- new File(testPath).writeAsStringSync("invalid Dart file"); |
- var result = _runTest(["-p", "chrome", "test.dart"]); |
- |
- var relativePath = p.relative(testPath, from: _sandbox); |
- expect(result.stdout, allOf([ |
- contains("Expected a declaration, but got 'invalid'"), |
- contains('-1: compiling $relativePath'), |
- contains('Failed to load "$relativePath": dart2js failed.') |
+ d.file("test.dart", "invalid Dart file").create(); |
+ var test = runTest(["-p", "chrome", "test.dart"]); |
+ |
+ test.stdout.expect(containsInOrder([ |
+ "Expected a declaration, but got 'invalid'", |
+ '-1: compiling test.dart', |
+ 'Failed to load "test.dart": dart2js failed.' |
])); |
- expect(result.exitCode, equals(1)); |
+ test.shouldExit(1); |
}); |
test("a test file throws", () { |
- var testPath = p.join(_sandbox, "test.dart"); |
- new File(testPath).writeAsStringSync("void main() => throw 'oh no';"); |
- |
- var relativePath = p.relative(testPath, from: _sandbox); |
- var result = _runTest(["-p", "chrome", "test.dart"]); |
- expect(result.stdout, allOf([ |
- contains('-1: compiling $relativePath'), |
- contains('Failed to load "$relativePath": oh no') |
+ d.file("test.dart", "void main() => throw 'oh no';").create(); |
+ |
+ var test = runTest(["-p", "chrome", "test.dart"]); |
+ test.stdout.expect(containsInOrder([ |
+ '-1: compiling test.dart', |
+ 'Failed to load "test.dart": oh no' |
])); |
- expect(result.exitCode, equals(1)); |
+ test.shouldExit(1); |
}); |
test("a test file doesn't have a main defined", () { |
- var testPath = p.join(_sandbox, "test.dart"); |
- new File(testPath).writeAsStringSync("void foo() {}"); |
- |
- var relativePath = p.relative(testPath, from: _sandbox); |
- var result = _runTest(["-p", "chrome", "test.dart"]); |
- expect(result.stdout, allOf([ |
- contains('-1: compiling $relativePath'), |
- contains('Failed to load "$relativePath": No top-level main() function ' |
- 'defined.') |
+ d.file("test.dart", "void foo() {}").create(); |
+ |
+ var test = runTest(["-p", "chrome", "test.dart"]); |
+ test.stdout.expect(containsInOrder([ |
+ '-1: compiling test.dart', |
+ 'Failed to load "test.dart": No top-level main() function defined.' |
])); |
- expect(result.exitCode, equals(1)); |
+ test.shouldExit(1); |
}); |
test("a test file has a non-function main", () { |
- var testPath = p.join(_sandbox, "test.dart"); |
- new File(testPath).writeAsStringSync("int main;"); |
- |
- var relativePath = p.relative(testPath, from: _sandbox); |
- var result = _runTest(["-p", "chrome", "test.dart"]); |
- expect(result.stdout, allOf([ |
- contains('-1: compiling $relativePath'), |
- contains('Failed to load "$relativePath": Top-level main getter is not ' |
- 'a function.\n') |
+ d.file("test.dart", "int main;").create(); |
+ |
+ var test = runTest(["-p", "chrome", "test.dart"]); |
+ test.stdout.expect(containsInOrder([ |
+ '-1: compiling test.dart', |
+ 'Failed to load "test.dart": Top-level main getter is not a function.' |
])); |
- expect(result.exitCode, equals(1)); |
+ test.shouldExit(1); |
}); |
test("a test file has a main with arguments", () { |
- var testPath = p.join(_sandbox, "test.dart"); |
- new File(testPath).writeAsStringSync("void main(arg) {}"); |
- |
- var relativePath = p.relative(testPath, from: _sandbox); |
- var result = _runTest(["-p", "chrome", "test.dart"]); |
- expect(result.stdout, allOf([ |
- contains('-1: compiling $relativePath'), |
- contains('Failed to load "$relativePath": Top-level main() function ' |
- 'takes arguments.\n') |
+ d.file("test.dart", "void main(arg) {}").create(); |
+ |
+ var test = runTest(["-p", "chrome", "test.dart"]); |
+ test.stdout.expect(containsInOrder([ |
+ '-1: compiling test.dart', |
+ 'Failed to load "test.dart": Top-level main() function takes arguments.' |
])); |
- expect(result.exitCode, equals(1)); |
+ test.shouldExit(1); |
}); |
test("a custom HTML file has no script tag", () { |
- var testPath = p.join(_sandbox, "test.dart"); |
- new File(testPath).writeAsStringSync("void main(arg) {}"); |
+ d.file("test.dart", "void main() {}").create(); |
- new File(p.join(_sandbox, "test.html")).writeAsStringSync(""" |
+ d.file("test.html", """ |
<html> |
<head> |
<link rel="x-dart-test" href="test.dart"> |
</head> |
</html> |
-"""); |
- |
- var relativePath = p.relative(testPath, from: _sandbox); |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.stdout, allOf([ |
- contains('-1: loading $relativePath'), |
- contains( |
- 'Failed to load "$relativePath": ' |
- '"${p.withoutExtension(relativePath)}.html" must contain ' |
- '<script src="packages/test/dart.js"></script>.\n') |
+""").create(); |
+ |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.expect(containsInOrder([ |
+ '-1: loading test.dart', |
+ 'Failed to load "test.dart": "test.html" must contain ' |
+ '<script src="packages/test/dart.js"></script>.' |
])); |
- expect(result.exitCode, equals(1)); |
+ test.shouldExit(1); |
}); |
test("a custom HTML file has no link", () { |
- var testPath = p.join(_sandbox, "test.dart"); |
- new File(testPath).writeAsStringSync("void main(arg) {}"); |
+ d.file("test.dart", "void main() {}").create(); |
- new File(p.join(_sandbox, "test.html")).writeAsStringSync(""" |
+ d.file("test.html", """ |
<html> |
<head> |
<script src="packages/test/dart.js"></script> |
</head> |
</html> |
-"""); |
- |
- var relativePath = p.relative(testPath, from: _sandbox); |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.stdout, allOf([ |
- contains('-1: loading $relativePath'), |
- contains( |
- 'Failed to load "$relativePath": ' |
- 'Expected exactly 1 <link rel="x-dart-test"> in test.html, ' |
- 'found 0.\n') |
+""").create(); |
+ |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.expect(containsInOrder([ |
+ '-1: loading test.dart', |
+ 'Failed to load "test.dart": Expected exactly 1 ' |
+ '<link rel="x-dart-test"> in test.html, found 0.' |
])); |
- expect(result.exitCode, equals(1)); |
+ test.shouldExit(1); |
}); |
test("a custom HTML file has too many links", () { |
- var testPath = p.join(_sandbox, "test.dart"); |
- new File(testPath).writeAsStringSync("void main(arg) {}"); |
+ d.file("test.dart", "void main() {}").create(); |
- new File(p.join(_sandbox, "test.html")).writeAsStringSync(""" |
+ d.file("test.html", """ |
<html> |
<head> |
<link rel='x-dart-test' href='test.dart'> |
@@ -169,67 +137,56 @@ void main() { |
<script src="packages/test/dart.js"></script> |
</head> |
</html> |
-"""); |
- |
- var relativePath = p.relative(testPath, from: _sandbox); |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.stdout, allOf([ |
- contains('-1: loading $relativePath'), |
- contains( |
- 'Failed to load "$relativePath": ' |
- 'Expected exactly 1 <link rel="x-dart-test"> in test.html, ' |
- 'found 2.\n') |
+""").create(); |
+ |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.expect(containsInOrder([ |
+ '-1: loading test.dart', |
+ 'Failed to load "test.dart": Expected exactly 1 ' |
+ '<link rel="x-dart-test"> in test.html, found 2.' |
])); |
- expect(result.exitCode, equals(1)); |
+ test.shouldExit(1); |
}); |
test("a custom HTML file has no href in the link", () { |
- var testPath = p.join(_sandbox, "test.dart"); |
- new File(testPath).writeAsStringSync("void main(arg) {}"); |
+ d.file("test.dart", "void main() {}").create(); |
- new File(p.join(_sandbox, "test.html")).writeAsStringSync(""" |
+ d.file("test.html", """ |
<html> |
<head> |
<link rel='x-dart-test'> |
<script src="packages/test/dart.js"></script> |
</head> |
</html> |
-"""); |
- |
- var relativePath = p.relative(testPath, from: _sandbox); |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.stdout, allOf([ |
- contains('-1: loading $relativePath'), |
- contains( |
- 'Failed to load "$relativePath": ' |
- 'Expected <link rel="x-dart-test"> in test.html to have an ' |
- '"href" attribute.\n') |
+""").create(); |
+ |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.expect(containsInOrder([ |
+ '-1: loading test.dart', |
+ 'Failed to load "test.dart": Expected <link rel="x-dart-test"> in ' |
+ 'test.html to have an "href" attribute.' |
])); |
- expect(result.exitCode, equals(1)); |
+ test.shouldExit(1); |
}); |
test("a custom HTML file has an invalid test URL", () { |
- var testPath = p.join(_sandbox, "test.dart"); |
- new File(testPath).writeAsStringSync("void main(arg) {}"); |
+ d.file("test.dart", "void main() {}").create(); |
- new File(p.join(_sandbox, "test.html")).writeAsStringSync(""" |
+ d.file("test.html", """ |
<html> |
<head> |
<link rel='x-dart-test' href='wrong.dart'> |
<script src="packages/test/dart.js"></script> |
</head> |
</html> |
-"""); |
- |
- var relativePath = p.relative(testPath, from: _sandbox); |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.stdout, allOf([ |
- contains('-1: loading $relativePath'), |
- contains( |
- 'Failed to load "$relativePath": ' |
- 'Failed to load script at ') |
+""").create(); |
+ |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.expect(containsInOrder([ |
+ '-1: loading test.dart', |
+ 'Failed to load "test.dart": Failed to load script at ' |
])); |
- expect(result.exitCode, equals(1)); |
+ test.shouldExit(1); |
}); |
// TODO(nweiz): test what happens when a test file is unreadable once issue |
@@ -237,53 +194,35 @@ void main() { |
}); |
group("runs successful tests", () { |
- test("on Chrome", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(_success); |
- var result = _runTest(["-p", "chrome", "test.dart"]); |
- expect(result.exitCode, equals(0)); |
- }); |
- |
- test("on Safari", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(_success); |
- var result = _runTest(["-p", "safari", "test.dart"]); |
- expect(result.exitCode, equals(0)); |
- }, testOn: "mac-os"); |
- |
- test("on content shell", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(_success); |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.stdout, isNot(contains("Compiling"))); |
- expect(result.exitCode, equals(0)); |
- }); |
- |
test("on a JS and non-JS browser", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(_success); |
- var result = _runTest( |
- ["-p", "content-shell", "-p", "chrome", "test.dart"]); |
- expect(result.stdout, contains("[Chrome] compiling")); |
- expect(result.stdout, |
- isNot(contains("[Dartium Content Shell] compiling"))); |
- expect(result.exitCode, equals(0)); |
+ d.file("test.dart", _success).create(); |
+ var test = runTest(["-p", "content-shell", "-p", "chrome", "test.dart"]); |
+ |
+ test.stdout.fork().expect(consumeThrough(contains("[Chrome] compiling"))); |
+ test.stdout.expect(never(contains("[Dartium Content Shell] compiling"))); |
+ test.shouldExit(0); |
}); |
test("on a browser and the VM", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(_success); |
- var result = _runTest(["-p", "content-shell", "-p", "vm", "test.dart"]); |
- expect(result.exitCode, equals(0)); |
+ d.file("test.dart", _success).create(); |
+ var test = runTest(["-p", "content-shell", "-p", "vm", "test.dart"]); |
+ |
+ test.stdout.expect(consumeThrough(contains("+2: All tests passed!"))); |
+ test.shouldExit(0); |
}); |
// Regression test; this broke in 0.12.0-beta.9. |
test("on a file in a subdirectory", () { |
- new Directory(p.join(_sandbox, "dir")).createSync(); |
- new File(p.join(_sandbox, "dir", "test.dart")) |
- .writeAsStringSync(_success); |
- var result = _runTest(["-p", "chrome", "dir/test.dart"]); |
- expect(result.exitCode, equals(0)); |
+ d.dir("dir", [d.file("test.dart", _success)]).create(); |
+ |
+ var test = runTest(["-p", "chrome", "dir/test.dart"]); |
+ test.stdout.expect(consumeThrough(contains("+1: All tests passed!"))); |
+ test.shouldExit(0); |
}); |
group("with a custom HTML file", () { |
setUp(() { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(""" |
+ d.file("test.dart", """ |
import 'dart:html'; |
import 'package:test/test.dart'; |
@@ -293,9 +232,9 @@ void main() { |
expect(document.query('#foo'), isNotNull); |
}); |
} |
-"""); |
+""").create(); |
- new File(p.join(_sandbox, "test.html")).writeAsStringSync(""" |
+ d.file("test.html", """ |
<html> |
<head> |
<link rel='x-dart-test' href='test.dart'> |
@@ -305,22 +244,24 @@ void main() { |
<div id="foo"></div> |
</body> |
</html> |
-"""); |
+""").create(); |
}); |
test("on content shell", () { |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.exitCode, equals(0)); |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.expect(consumeThrough(contains("+1: All tests passed!"))); |
+ test.shouldExit(0); |
}); |
test("on Chrome", () { |
- var result = _runTest(["-p", "chrome", "test.dart"]); |
- expect(result.exitCode, equals(0)); |
+ var test = runTest(["-p", "chrome", "test.dart"]); |
+ test.stdout.expect(consumeThrough(contains("+1: All tests passed!"))); |
+ test.shouldExit(0); |
}); |
// Regression test for https://github.com/dart-lang/test/issues/82. |
test("ignores irrelevant link tags", () { |
- new File(p.join(_sandbox, "test.html")).writeAsStringSync(""" |
+ d.file("test.html", """ |
<html> |
<head> |
<link rel='x-dart-test-not'> |
@@ -332,35 +273,18 @@ void main() { |
<div id="foo"></div> |
</body> |
</html> |
-"""); |
+""").create(); |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.exitCode, equals(0)); |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.expect(consumeThrough(contains("+1: All tests passed!"))); |
+ test.shouldExit(0); |
}); |
}); |
}); |
group("runs failing tests", () { |
- test("on Chrome", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(_failure); |
- var result = _runTest(["-p", "chrome", "test.dart"]); |
- expect(result.exitCode, equals(1)); |
- }); |
- |
- test("on Safari", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(_failure); |
- var result = _runTest(["-p", "safari", "test.dart"]); |
- expect(result.exitCode, equals(1)); |
- }, testOn: "mac-os"); |
- |
- test("on content-shell", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(_failure); |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.exitCode, equals(1)); |
- }); |
- |
test("that fail only on the browser", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(""" |
+ d.file("test.dart", """ |
import 'dart:async'; |
import 'package:path/path.dart' as p; |
@@ -371,13 +295,15 @@ void main() { |
if (p.style == p.Style.url) throw new TestFailure("oh no"); |
}); |
} |
-"""); |
- var result = _runTest(["-p", "content-shell", "-p", "vm", "test.dart"]); |
- expect(result.exitCode, equals(1)); |
+""").create(); |
+ |
+ var test = runTest(["-p", "content-shell", "-p", "vm", "test.dart"]); |
+ test.stdout.expect(consumeThrough(contains("+1 -1: Some tests failed."))); |
+ test.shouldExit(1); |
}); |
test("that fail only on the VM", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(""" |
+ d.file("test.dart", """ |
import 'dart:async'; |
import 'package:path/path.dart' as p; |
@@ -388,15 +314,16 @@ void main() { |
if (p.style != p.Style.url) throw new TestFailure("oh no"); |
}); |
} |
-"""); |
- var result = _runTest(["-p", "content-shell", "-p", "vm", "test.dart"]); |
- expect(result.exitCode, equals(1)); |
- }); |
+""").create(); |
+ var test = runTest(["-p", "content-shell", "-p", "vm", "test.dart"]); |
+ test.stdout.expect(consumeThrough(contains("+1 -1: Some tests failed."))); |
+ test.shouldExit(1); |
+ }); |
group("with a custom HTML file", () { |
setUp(() { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(""" |
+ d.file("test.dart", """ |
import 'dart:html'; |
import 'package:test/test.dart'; |
@@ -406,9 +333,9 @@ void main() { |
expect(document.query('#foo'), isNull); |
}); |
} |
-"""); |
+""").create(); |
- new File(p.join(_sandbox, "test.html")).writeAsStringSync(""" |
+ d.file("test.html", """ |
<html> |
<head> |
<link rel='x-dart-test' href='test.dart'> |
@@ -418,32 +345,33 @@ void main() { |
<div id="foo"></div> |
</body> |
</html> |
-"""); |
+""").create(); |
}); |
test("on content shell", () { |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.exitCode, equals(1)); |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.expect(consumeThrough(contains("-1: Some tests failed."))); |
+ test.shouldExit(1); |
}); |
test("on Chrome", () { |
- var result = _runTest(["-p", "chrome", "test.dart"]); |
- expect(result.exitCode, equals(1)); |
+ var test = runTest(["-p", "chrome", "test.dart"]); |
+ test.stdout.expect(consumeThrough(contains("-1: Some tests failed."))); |
+ test.shouldExit(1); |
}); |
}); |
}); |
test("the compiler uses colors if the test runner uses colors", () { |
- var testPath = p.join(_sandbox, "test.dart"); |
- new File(testPath).writeAsStringSync("String main() => 12;\n"); |
+ d.file("test.dart", "String main() => 12;\n").create(); |
- var result = _runTest(["--color", "-p", "chrome", "test.dart"]); |
- expect(result.stdout, contains('\u001b[35m')); |
- expect(result.exitCode, equals(1)); |
+ var test = runTest(["--color", "-p", "chrome", "test.dart"]); |
+ test.stdout.expect(consumeThrough(contains('\u001b[35m'))); |
+ test.shouldExit(1); |
}); |
test("forwards prints from the browser test", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(""" |
+ d.file("test.dart", """ |
import 'dart:async'; |
import 'package:test/test.dart'; |
@@ -454,34 +382,42 @@ void main() { |
return new Future(() => print("world!")); |
}); |
} |
-"""); |
- |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.stdout, contains("Hello,\nworld!\n")); |
- expect(result.exitCode, equals(0)); |
+""").create(); |
+ |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.expect(inOrder([ |
+ consumeThrough("Hello,"), |
+ "world!" |
+ ])); |
+ test.shouldExit(0); |
}); |
test("dartifies stack traces for JS-compiled tests by default", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(_failure); |
- var result = _runTest(["-p", "chrome", "--verbose-trace", "test.dart"]); |
- expect(result.stdout, contains(" main.<fn>\n")); |
- expect(result.stdout, contains("package:test")); |
- expect(result.stdout, contains("dart:async/zone.dart")); |
- expect(result.exitCode, equals(1)); |
+ d.file("test.dart", _failure).create(); |
+ |
+ var test = runTest(["-p", "chrome", "--verbose-trace", "test.dart"]); |
+ test.stdout.expect(containsInOrder([ |
+ " main.<fn>", |
+ "package:test", |
+ "dart:async/zone.dart" |
+ ])); |
+ test.shouldExit(1); |
}); |
test("doesn't dartify stack traces for JS-compiled tests with --js-trace", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(_failure); |
- var result = _runTest( |
+ d.file("test.dart", _failure).create(); |
+ |
+ var test = runTest( |
["-p", "chrome", "--verbose-trace", "--js-trace", "test.dart"]); |
- expect(result.stdout, isNot(contains(" main.<fn>\n"))); |
- expect(result.stdout, isNot(contains("package:test"))); |
- expect(result.stdout, isNot(contains("dart:async/zone.dart"))); |
- expect(result.exitCode, equals(1)); |
+ test.stdout.fork().expect(never(endsWith(" main.<fn>"))); |
+ test.stdout.fork().expect(never(contains("package:test"))); |
+ test.stdout.fork().expect(never(contains("dart:async/zone.dart"))); |
+ test.stdout.expect(consumeThrough(contains("-1: Some tests failed."))); |
+ test.shouldExit(1); |
}); |
test("respects top-level @Timeout declarations", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(''' |
+ d.file("test.dart", ''' |
@Timeout(const Duration(seconds: 0)) |
import 'dart:async'; |
@@ -491,16 +427,19 @@ import 'package:test/test.dart'; |
void main() { |
test("timeout", () {}); |
} |
-'''); |
- |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.stdout, contains("Test timed out after 0 seconds.")); |
- expect(result.stdout, contains("-1: Some tests failed.")); |
+''').create(); |
+ |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.expect(containsInOrder([ |
+ "Test timed out after 0 seconds.", |
+ "-1: Some tests failed." |
+ ])); |
+ test.shouldExit(1); |
}); |
group("with onPlatform", () { |
test("respects matching Skips", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(''' |
+ d.file("test.dart", ''' |
import 'dart:async'; |
import 'package:test/test.dart'; |
@@ -508,14 +447,15 @@ import 'package:test/test.dart'; |
void main() { |
test("fail", () => throw 'oh no', onPlatform: {"browser": new Skip()}); |
} |
-'''); |
+''').create(); |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.stdout, contains("+0 ~1: All tests skipped.")); |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.expect(consumeThrough(contains("+0 ~1: All tests skipped."))); |
+ test.shouldExit(0); |
}); |
test("ignores non-matching Skips", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(''' |
+ d.file("test.dart", ''' |
import 'dart:async'; |
import 'package:test/test.dart'; |
@@ -523,14 +463,15 @@ import 'package:test/test.dart'; |
void main() { |
test("success", () {}, onPlatform: {"vm": new Skip()}); |
} |
-'''); |
+''').create(); |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.stdout, contains("+1: All tests passed!")); |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.expect(consumeThrough(contains("+1: All tests passed!"))); |
+ test.shouldExit(0); |
}); |
test("respects matching Timeouts", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(''' |
+ d.file("test.dart", ''' |
import 'dart:async'; |
import 'package:test/test.dart'; |
@@ -540,15 +481,18 @@ void main() { |
"browser": new Timeout(new Duration(seconds: 0)) |
}); |
} |
-'''); |
+''').create(); |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.stdout, contains("Test timed out after 0 seconds.")); |
- expect(result.stdout, contains("-1: Some tests failed.")); |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.expect(containsInOrder([ |
+ "Test timed out after 0 seconds.", |
+ "-1: Some tests failed." |
+ ])); |
+ test.shouldExit(1); |
}); |
test("ignores non-matching Timeouts", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(''' |
+ d.file("test.dart", ''' |
import 'dart:async'; |
import 'package:test/test.dart'; |
@@ -558,14 +502,15 @@ void main() { |
"vm": new Timeout(new Duration(seconds: 0)) |
}); |
} |
-'''); |
+''').create(); |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.stdout, contains("+1: All tests passed!")); |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.expect(consumeThrough(contains("+1: All tests passed!"))); |
+ test.shouldExit(0); |
}); |
test("applies matching platforms in order", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(''' |
+ d.file("test.dart", ''' |
import 'dart:async'; |
import 'package:test/test.dart'; |
@@ -579,22 +524,21 @@ void main() { |
"browser || android": new Skip("fifth") |
}); |
} |
-'''); |
- |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.stdout, contains("Skip: fifth")); |
- expect(result.stdout, isNot(anyOf([ |
- contains("Skip: first"), |
- contains("Skip: second"), |
- contains("Skip: third"), |
- contains("Skip: fourth") |
- ]))); |
+''').create(); |
+ |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.fork().expect(never(contains("Skip: first"))); |
+ test.stdout.fork().expect(never(contains("Skip: second"))); |
+ test.stdout.fork().expect(never(contains("Skip: third"))); |
+ test.stdout.fork().expect(never(contains("Skip: fourth"))); |
+ test.stdout.expect(consumeThrough(contains("Skip: fifth"))); |
+ test.shouldExit(0); |
}); |
}); |
group("with an @OnPlatform annotation", () { |
test("respects matching Skips", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(''' |
+ d.file("test.dart", ''' |
@OnPlatform(const {"browser": const Skip()}) |
import 'dart:async'; |
@@ -604,14 +548,15 @@ import 'package:test/test.dart'; |
void main() { |
test("fail", () => throw 'oh no'); |
} |
-'''); |
+''').create(); |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.stdout, contains("+0 ~1: All tests skipped.")); |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.expect(consumeThrough(contains("~1: All tests skipped."))); |
+ test.shouldExit(0); |
}); |
test("ignores non-matching Skips", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(''' |
+ d.file("test.dart", ''' |
@OnPlatform(const {"vm": const Skip()}) |
import 'dart:async'; |
@@ -621,14 +566,15 @@ import 'package:test/test.dart'; |
void main() { |
test("success", () {}); |
} |
-'''); |
+''').create(); |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.stdout, contains("+1: All tests passed!")); |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.expect(consumeThrough(contains("+1: All tests passed!"))); |
+ test.shouldExit(0); |
}); |
test("respects matching Timeouts", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(''' |
+ d.file("test.dart", ''' |
@OnPlatform(const { |
"browser": const Timeout(const Duration(seconds: 0)) |
}) |
@@ -640,15 +586,18 @@ import 'package:test/test.dart'; |
void main() { |
test("fail", () => throw 'oh no'); |
} |
-'''); |
+''').create(); |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.stdout, contains("Test timed out after 0 seconds.")); |
- expect(result.stdout, contains("-1: Some tests failed.")); |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.expect(containsInOrder([ |
+ "Test timed out after 0 seconds.", |
+ "-1: Some tests failed." |
+ ])); |
+ test.shouldExit(1); |
}); |
test("ignores non-matching Timeouts", () { |
- new File(p.join(_sandbox, "test.dart")).writeAsStringSync(''' |
+ d.file("test.dart", ''' |
@OnPlatform(const { |
"vm": const Timeout(const Duration(seconds: 0)) |
}) |
@@ -660,13 +609,11 @@ import 'package:test/test.dart'; |
void main() { |
test("success", () {}); |
} |
-'''); |
+''').create(); |
- var result = _runTest(["-p", "content-shell", "test.dart"]); |
- expect(result.stdout, contains("+1: All tests passed!")); |
+ var test = runTest(["-p", "content-shell", "test.dart"]); |
+ test.stdout.expect(consumeThrough(contains("+1: All tests passed!"))); |
+ test.shouldExit(0); |
}); |
}); |
} |
- |
-ProcessResult _runTest(List<String> args) => |
- runTest(args, workingDirectory: _sandbox); |