| Index: test/backend/declarer_test.dart
|
| diff --git a/test/backend/declarer_test.dart b/test/backend/declarer_test.dart
|
| index 381536724c53ad75c2eb169c5178d50df49a0e90..2d647aba76da4fd9f7004d89f6d67f1a2003dea6 100644
|
| --- a/test/backend/declarer_test.dart
|
| +++ b/test/backend/declarer_test.dart
|
| @@ -79,9 +79,35 @@ void main() {
|
| return _runTest(0);
|
| });
|
|
|
| - test("can't be called multiple times", () {
|
| - _declarer.setUp(() {});
|
| - expect(() => _declarer.setUp(() {}), throwsStateError);
|
| + test("runs in call order within a group", () async {
|
| + var firstSetUpRun = false;
|
| + var secondSetUpRun = false;
|
| + var thirdSetUpRun = false;
|
| + _declarer.setUp(expectAsync(() async {
|
| + expect(secondSetUpRun, isFalse);
|
| + expect(thirdSetUpRun, isFalse);
|
| + firstSetUpRun = true;
|
| + }));
|
| +
|
| + _declarer.setUp(expectAsync(() async {
|
| + expect(firstSetUpRun, isTrue);
|
| + expect(thirdSetUpRun, isFalse);
|
| + secondSetUpRun = true;
|
| + }));
|
| +
|
| + _declarer.setUp(expectAsync(() async {
|
| + expect(firstSetUpRun, isTrue);
|
| + expect(secondSetUpRun, isTrue);
|
| + thirdSetUpRun = true;
|
| + }));
|
| +
|
| + _declarer.test("description", expectAsync(() {
|
| + expect(firstSetUpRun, isTrue);
|
| + expect(secondSetUpRun, isTrue);
|
| + expect(thirdSetUpRun, isTrue);
|
| + }));
|
| +
|
| + await _runTest(0);
|
| });
|
| });
|
|
|
| @@ -168,9 +194,47 @@ void main() {
|
| expect(outstandingCallbackRemoved, isTrue);
|
| });
|
|
|
| - test("can't be called multiple times", () {
|
| - _declarer.tearDown(() {});
|
| - expect(() => _declarer.tearDown(() {}), throwsStateError);
|
| + test("runs in reverse call order within a group", () async {
|
| + var firstTearDownRun = false;
|
| + var secondTearDownRun = false;
|
| + var thirdTearDownRun = false;
|
| + _declarer.tearDown(expectAsync(() async {
|
| + expect(secondTearDownRun, isTrue);
|
| + expect(thirdTearDownRun, isTrue);
|
| + firstTearDownRun = true;
|
| + }));
|
| +
|
| + _declarer.tearDown(expectAsync(() async {
|
| + expect(firstTearDownRun, isFalse);
|
| + expect(thirdTearDownRun, isTrue);
|
| + secondTearDownRun = true;
|
| + }));
|
| +
|
| + _declarer.tearDown(expectAsync(() async {
|
| + expect(firstTearDownRun, isFalse);
|
| + expect(secondTearDownRun, isFalse);
|
| + thirdTearDownRun = true;
|
| + }));
|
| +
|
| + _declarer.test("description", expectAsync(() {
|
| + expect(firstTearDownRun, isFalse);
|
| + expect(secondTearDownRun, isFalse);
|
| + expect(thirdTearDownRun, isFalse);
|
| + }, max: 1));
|
| +
|
| + await _runTest(0);
|
| + });
|
| +
|
| + test("runs further tearDowns in a group even if one fails", () async {
|
| + _declarer.tearDown(expectAsync(() {}));
|
| +
|
| + _declarer.tearDown(() async {
|
| + throw 'error';
|
| + });
|
| +
|
| + _declarer.test("description", expectAsync(() {}));
|
| +
|
| + await _runTest(0, shouldFail: true);
|
| });
|
| });
|
|
|
| @@ -294,13 +358,6 @@ void main() {
|
|
|
| return _runTest(0);
|
| });
|
| -
|
| - test("can't be called multiple times", () {
|
| - _declarer.group("group", () {
|
| - _declarer.setUp(() {});
|
| - expect(() => _declarer.setUp(() {}), throwsStateError);
|
| - });
|
| - });
|
| });
|
|
|
| group(".tearDown()", () {
|
| @@ -408,13 +465,6 @@ void main() {
|
| await _runTest(0, shouldFail: true);
|
| expect(outerTearDownRun, isTrue);
|
| });
|
| -
|
| - test("can't be called multiple times", () {
|
| - _declarer.group("group", () {
|
| - _declarer.tearDown(() {});
|
| - expect(() => _declarer.tearDown(() {}), throwsStateError);
|
| - });
|
| - });
|
| });
|
| });
|
| }
|
| @@ -428,8 +478,7 @@ Future _runTest(int index, {bool shouldFail: false}) {
|
|
|
| liveTest.onError.listen(shouldFail
|
| ? expectAsync((_) {})
|
| - : expectAsync((_) {},
|
| - count: 0, reason: "No errors expected for test #$index."));
|
| + : (error) => registerException(error.error, error.stackTrace));
|
|
|
| return liveTest.run();
|
| }
|
|
|