OLD | NEW |
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'; |
8 import 'dart:math' as math; | 8 import 'dart:math' as math; |
9 | 9 |
10 import 'package:scheduled_test/descriptor.dart' as d; | 10 import 'package:scheduled_test/descriptor.dart' as d; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 | 43 |
44 final _usage = """ | 44 final _usage = """ |
45 Usage: pub run test:test [files or directories...] | 45 Usage: pub run test:test [files or directories...] |
46 | 46 |
47 -h, --help Shows this usage information. | 47 -h, --help Shows this usage information. |
48 --version Shows the package's version. | 48 --version Shows the package's version. |
49 | 49 |
50 ======== Selecting Tests | 50 ======== Selecting Tests |
51 -n, --name A substring of the name of the test to run. | 51 -n, --name A substring of the name of the test to run. |
52 Regular expression syntax is supported. | 52 Regular expression syntax is supported. |
| 53 If passed multiple times, tests must match all su
bstrings. |
53 | 54 |
54 -N, --plain-name A plain-text substring of the name of the test to
run. | 55 -N, --plain-name A plain-text substring of the name of the test to
run. |
| 56 If passed multiple times, tests must match all su
bstrings. |
| 57 |
55 -t, --tags Run only tests with all of the specified tags. | 58 -t, --tags Run only tests with all of the specified tags. |
56 Supports boolean selector syntax. | 59 Supports boolean selector syntax. |
57 | 60 |
58 -x, --exclude-tags Don't run tests with any of the specified tags. | 61 -x, --exclude-tags Don't run tests with any of the specified tags. |
59 Supports boolean selector syntax. | 62 Supports boolean selector syntax. |
60 | 63 |
61 ======== Running Tests | 64 ======== Running Tests |
62 -p, --platform The platform(s) on which to run the tests. | 65 -p, --platform The platform(s) on which to run the tests. |
63 $_browsers | 66 $_browsers |
64 | 67 |
(...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
553 test("success", () {}); | 556 test("success", () {}); |
554 } | 557 } |
555 ''').create(); | 558 ''').create(); |
556 | 559 |
557 var test = runTest(["test.dart"]); | 560 var test = runTest(["test.dart"]); |
558 test.stdout.expect(consumeThrough(contains("+1: All tests passed!"))); | 561 test.stdout.expect(consumeThrough(contains("+1: All tests passed!"))); |
559 test.shouldExit(0); | 562 test.shouldExit(0); |
560 }); | 563 }); |
561 }); | 564 }); |
562 | 565 |
563 group("flags:", () { | 566 test("with the --color flag, uses colors", () { |
564 test("with the --color flag, uses colors", () { | 567 d.file("test.dart", _failure).create(); |
565 d.file("test.dart", _failure).create(); | 568 var test = runTest(["--color", "test.dart"]); |
566 var test = runTest(["--color", "test.dart"]); | 569 // This is the color code for red. |
567 // This is the color code for red. | 570 test.stdout.expect(consumeThrough(contains("\u001b[31m"))); |
568 test.stdout.expect(consumeThrough(contains("\u001b[31m"))); | 571 test.shouldExit(); |
569 test.shouldExit(); | |
570 }); | |
571 | |
572 group("with the --name flag,", () { | |
573 test("selects tests with matching names", () { | |
574 d.file("test.dart", """ | |
575 import 'dart:async'; | |
576 | |
577 import 'package:test/test.dart'; | |
578 | |
579 void main() { | |
580 test("selected 1", () {}); | |
581 test("nope", () => throw new TestFailure("oh no")); | |
582 test("selected 2", () {}); | |
583 } | |
584 """).create(); | |
585 | |
586 var test = runTest(["--name", "selected", "test.dart"]); | |
587 test.stdout.expect(consumeThrough(contains("+2: All tests passed!"))); | |
588 test.shouldExit(0); | |
589 }); | |
590 | |
591 test("supports RegExp syntax", () { | |
592 d.file("test.dart", """ | |
593 import 'dart:async'; | |
594 | |
595 import 'package:test/test.dart'; | |
596 | |
597 void main() { | |
598 test("test 1", () {}); | |
599 test("test 2", () => throw new TestFailure("oh no")); | |
600 test("test 3", () {}); | |
601 } | |
602 """).create(); | |
603 | |
604 var test = runTest(["--name", "test [13]", "test.dart"]); | |
605 test.stdout.expect(consumeThrough(contains("+2: All tests passed!"))); | |
606 test.shouldExit(0); | |
607 }); | |
608 | |
609 test("produces an error when no tests match", () { | |
610 d.file("test.dart", _success).create(); | |
611 | |
612 var test = runTest(["--name", "no match", "test.dart"]); | |
613 test.stderr.expect(consumeThrough( | |
614 contains('No tests match regular expression "no match".'))); | |
615 test.shouldExit(exit_codes.data); | |
616 }); | |
617 | |
618 test("doesn't filter out load exceptions", () { | |
619 var test = runTest(["--name", "name", "file"]); | |
620 test.stdout.expect(containsInOrder([ | |
621 '-1: loading file', | |
622 ' Failed to load "file": Does not exist.' | |
623 ])); | |
624 test.shouldExit(1); | |
625 }); | |
626 }); | |
627 | |
628 group("with the --plain-name flag,", () { | |
629 test("selects tests with matching names", () { | |
630 d.file("test.dart", """ | |
631 import 'dart:async'; | |
632 | |
633 import 'package:test/test.dart'; | |
634 | |
635 void main() { | |
636 test("selected 1", () {}); | |
637 test("nope", () => throw new TestFailure("oh no")); | |
638 test("selected 2", () {}); | |
639 } | |
640 """).create(); | |
641 | |
642 var test = runTest(["--plain-name", "selected", "test.dart"]); | |
643 test.stdout.expect(consumeThrough(contains("+2: All tests passed!"))); | |
644 test.shouldExit(0); | |
645 }); | |
646 | |
647 test("doesn't support RegExp syntax", () { | |
648 d.file("test.dart", """ | |
649 import 'dart:async'; | |
650 | |
651 import 'package:test/test.dart'; | |
652 | |
653 void main() { | |
654 test("test 1", () => throw new TestFailure("oh no")); | |
655 test("test 2", () => throw new TestFailure("oh no")); | |
656 test("test [12]", () {}); | |
657 } | |
658 """).create(); | |
659 | |
660 var test = runTest(["--plain-name", "test [12]", "test.dart"]); | |
661 test.stdout.expect(consumeThrough(contains("+1: All tests passed!"))); | |
662 test.shouldExit(0); | |
663 }); | |
664 | |
665 test("produces an error when no tests match", () { | |
666 d.file("test.dart", _success).create(); | |
667 | |
668 var test = runTest(["--plain-name", "no match", "test.dart"]); | |
669 test.stderr.expect( | |
670 consumeThrough(contains('No tests match "no match".'))); | |
671 test.shouldExit(exit_codes.data); | |
672 }); | |
673 }); | |
674 }); | 572 }); |
675 } | 573 } |
OLD | NEW |