Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(757)

Side by Side Diff: test/runner/expanded_reporter_test.dart

Issue 1243293002: Convert a bunch of tests to use scheduled_test's infrastructure. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 @TestOn("vm") 5 @TestOn("vm")
6 6
7 import 'dart:io'; 7 import 'dart:io';
kevmoo 2015/07/22 04:10:12 now unused
nweiz 2015/07/22 18:35:48 Done.
8 8
9 import 'package:path/path.dart' as p; 9 import 'package:scheduled_test/descriptor.dart' as d;
10 import 'package:scheduled_test/scheduled_stream.dart';
11 import 'package:scheduled_test/scheduled_test.dart';
10 import 'package:test/src/util/io.dart'; 12 import 'package:test/src/util/io.dart';
kevmoo 2015/07/22 04:10:12 now unused
nweiz 2015/07/22 18:35:48 Done.
11 import 'package:test/test.dart';
12 13
13 import '../io.dart'; 14 import '../io.dart';
14 15
15 void main() { 16 void main() {
17 useSandbox();
18
16 test("reports when no tests are run", () { 19 test("reports when no tests are run", () {
17 return withTempDir((path) { 20 d.file("test.dart", "void main() {}").create();
18 new File(p.join(path, "test.dart")).writeAsStringSync("void main() {}"); 21
19 var result = runTest(["-r", "expanded", "test.dart"], 22 var test = runTest(["test.dart"], compact: true);
20 workingDirectory: path); 23 test.stdout.expect(consumeThrough(contains("No tests ran.")));
21 expect(result.stdout, contains("No tests ran.")); 24 test.shouldExit(0);
22 });
23 }); 25 });
24 26
25 test("runs several successful tests and reports when each completes", () { 27 test("runs several successful tests and reports when each completes", () {
26 _expectReport(""" 28 _expectReport("""
27 test('success 1', () {}); 29 test('success 1', () {});
28 test('success 2', () {}); 30 test('success 2', () {});
29 test('success 3', () {});""", 31 test('success 3', () {});""",
30 """ 32 """
31 +0: success 1 33 +0: success 1
32 +1: success 2 34 +1: success 2
(...skipping 19 matching lines...) Expand all
52 54
53 +0 -2: failure 3 55 +0 -2: failure 3
54 +0 -3: failure 3 56 +0 -3: failure 3
55 oh no 57 oh no
56 test.dart 8:33 main.<fn> 58 test.dart 8:33 main.<fn>
57 59
58 +0 -3: Some tests failed."""); 60 +0 -3: Some tests failed.""");
59 }); 61 });
60 62
61 test("includes the full stack trace with --verbose-trace", () { 63 test("includes the full stack trace with --verbose-trace", () {
62 return withTempDir((path) { 64 d.file("test.dart", """
63 new File(p.join(path, "test.dart")).writeAsStringSync("""
64 import 'dart:async'; 65 import 'dart:async';
65 66
66 import 'package:test/test.dart'; 67 import 'package:test/test.dart';
67 68
68 void main() { 69 void main() {
69 test("failure", () => throw "oh no"); 70 test("failure", () => throw "oh no");
70 } 71 }
71 """); 72 """).create();
72 var result = runTest(["-r", "compact", "--verbose-trace", "test.dart"], 73
73 workingDirectory: path); 74 var test = runTest(["--verbose-trace", "test.dart"], compact: true);
74 expect(result.stdout, contains("dart:isolate-patch")); 75 test.stdout.expect(consumeThrough(contains("dart:isolate-patch")));
75 }); 76 test.shouldExit(1);
76 }); 77 });
77 78
78 test("runs failing tests along with successful tests", () { 79 test("runs failing tests along with successful tests", () {
79 _expectReport(""" 80 _expectReport("""
80 test('failure 1', () => throw new TestFailure('oh no')); 81 test('failure 1', () => throw new TestFailure('oh no'));
81 test('success 1', () {}); 82 test('success 1', () {});
82 test('failure 2', () => throw new TestFailure('oh no')); 83 test('failure 2', () => throw new TestFailure('oh no'));
83 test('success 2', () {});""", 84 test('success 2', () {});""",
84 """ 85 """
85 +0: failure 1 86 +0: failure 1
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 +0 ~1: skip 1 303 +0 ~1: skip 1
303 Skip: some reason 304 Skip: some reason
304 +0 ~1: skip 2 305 +0 ~1: skip 2
305 +0 ~2: skip 2 306 +0 ~2: skip 2
306 Skip: or another 307 Skip: or another
307 +0 ~2: All tests skipped."""); 308 +0 ~2: All tests skipped.""");
308 }); 309 });
309 }); 310 });
310 } 311 }
311 312
312 void _expectReport(String tests, String expected, {List<String> args, 313 void _expectReport(String tests, String expected) {
313 int concurrency}) {
314 if (concurrency == null) concurrency = 1;
315
316 var dart = """ 314 var dart = """
317 import 'dart:async'; 315 import 'dart:async';
318 316
319 import 'package:test/test.dart'; 317 import 'package:test/test.dart';
320 318
321 void main() { 319 void main() {
322 $tests 320 $tests
323 } 321 }
324 """; 322 """;
325 323
326 expect(withTempDir((path) { 324 d.file("test.dart", dart).create();
327 new File(p.join(path, "test.dart")).writeAsStringSync(dart); 325
328 if (args == null) args = []; 326 var test = runTest(["test.dart"]);
329 args = args.toList() 327 test.shouldExit();
330 ..add("test.dart") 328
331 ..add("--concurrency=$concurrency") 329 schedule(() async {
332 ..add("--reporter=expanded"); 330 var stdoutLines = await test.stdoutStream().toList();
333 var result = runTest(args, workingDirectory: path);
334 331
335 // Remove excess trailing whitespace and trim off timestamps. 332 // Remove excess trailing whitespace and trim off timestamps.
336 var actual = result.stdout.trim().split("\n").map((line) { 333 var actual = stdoutLines.map((line) {
337 if (line.startsWith(" ") || line.isEmpty) return line.trimRight(); 334 if (line.startsWith(" ") || line.isEmpty) return line.trimRight();
338 return line.trim().replaceFirst(new RegExp("^[0-9]{2}:[0-9]{2} "), ""); 335 return line.trim().replaceFirst(new RegExp("^[0-9]{2}:[0-9]{2} "), "");
339 }).join("\n"); 336 }).join("\n");
340 337
341 // Un-indent the expected string. 338 // Un-indent the expected string.
342 var indentation = expected.indexOf(new RegExp("[^ ]")); 339 var indentation = expected.indexOf(new RegExp("[^ ]"));
343 expected = expected.split("\n").map((line) { 340 expected = expected.split("\n").map((line) {
344 if (line.isEmpty) return line; 341 if (line.isEmpty) return line;
345 return line.substring(indentation); 342 return line.substring(indentation);
346 }).join("\n"); 343 }).join("\n");
347 344
348 expect(actual, equals(expected)); 345 expect(actual, equals(expected));
349 }), completes); 346 });
350 } 347 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698