| // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| // |
| // @dart=2.7 |
| |
| @TestOn('vm') |
| |
| import 'package:test_descriptor/test_descriptor.dart' as d; |
| |
| import 'package:test/test.dart'; |
| |
| import '../io.dart'; |
| |
| void main() { |
| group('a skipped expect', () { |
| test('marks the test as skipped', () async { |
| await d.file('test.dart', ''' |
| import 'package:test/test.dart'; |
| |
| void main() { |
| test("skipped", () => expect(1, equals(2), skip: true)); |
| } |
| ''').create(); |
| |
| var test = await runTest(['test.dart']); |
| expect(test.stdout, emitsThrough(contains('~1: All tests skipped.'))); |
| await test.shouldExit(0); |
| }); |
| |
| test('prints the skip reason if there is one', () async { |
| await d.file('test.dart', ''' |
| import 'package:test/test.dart'; |
| |
| void main() { |
| test("skipped", () => expect(1, equals(2), |
| reason: "1 is 2", skip: "is failing")); |
| } |
| ''').create(); |
| |
| var test = await runTest(['test.dart']); |
| expect( |
| test.stdout, |
| containsInOrder([ |
| '+0: skipped', |
| ' Skip expect: is failing', |
| '~1: All tests skipped.' |
| ])); |
| await test.shouldExit(0); |
| }); |
| |
| test("prints the expect reason if there's no skip reason", () async { |
| await d.file('test.dart', ''' |
| import 'package:test/test.dart'; |
| |
| void main() { |
| test("skipped", () => expect(1, equals(2), |
| reason: "1 is 2", skip: true)); |
| } |
| ''').create(); |
| |
| var test = await runTest(['test.dart']); |
| expect( |
| test.stdout, |
| containsInOrder([ |
| '+0: skipped', |
| ' Skip expect (1 is 2).', |
| '~1: All tests skipped.' |
| ])); |
| await test.shouldExit(0); |
| }); |
| |
| test('prints the matcher description if there are no reasons', () async { |
| await d.file('test.dart', ''' |
| import 'package:test/test.dart'; |
| |
| void main() { |
| test("skipped", () => expect(1, equals(2), skip: true)); |
| } |
| ''').create(); |
| |
| var test = await runTest(['test.dart']); |
| expect( |
| test.stdout, |
| containsInOrder([ |
| '+0: skipped', |
| ' Skip expect (<2>).', |
| '~1: All tests skipped.' |
| ])); |
| await test.shouldExit(0); |
| }); |
| |
| test('still allows the test to fail', () async { |
| await d.file('test.dart', ''' |
| import 'package:test/test.dart'; |
| |
| void main() { |
| test("failing", () { |
| expect(1, equals(2), skip: true); |
| expect(1, equals(2)); |
| }); |
| } |
| ''').create(); |
| |
| var test = await runTest(['test.dart']); |
| expect( |
| test.stdout, |
| containsInOrder([ |
| '+0: failing', |
| ' Skip expect (<2>).', |
| '+0 -1: failing [E]', |
| ' Expected: <2>', |
| ' Actual: <1>', |
| '+0 -1: Some tests failed.' |
| ])); |
| await test.shouldExit(1); |
| }); |
| }); |
| |
| group('markTestSkipped', () { |
| test('prints the skip reason', () async { |
| await d.file('test.dart', ''' |
| import 'package:test/test.dart'; |
| |
| void main() { |
| test('skipped', () { |
| markTestSkipped('some reason'); |
| }); |
| } |
| ''').create(); |
| |
| var test = await runTest(['test.dart']); |
| expect( |
| test.stdout, |
| containsInOrder([ |
| '+0: skipped', |
| ' some reason', |
| '~1: All tests skipped.', |
| ])); |
| await test.shouldExit(0); |
| }); |
| |
| test('still allows the test to fail', () async { |
| await d.file('test.dart', ''' |
| import 'package:test/test.dart'; |
| |
| void main() { |
| test('failing', () { |
| markTestSkipped('some reason'); |
| expect(1, equals(2)); |
| }); |
| } |
| ''').create(); |
| |
| var test = await runTest(['test.dart']); |
| expect( |
| test.stdout, |
| containsInOrder([ |
| '+0: failing', |
| ' some reason', |
| '+0 -1: failing [E]', |
| ' Expected: <2>', |
| ' Actual: <1>', |
| '+0 -1: Some tests failed.' |
| ])); |
| await test.shouldExit(1); |
| }); |
| |
| test('error when called after the test succeeded', () async { |
| await d.file('test.dart', ''' |
| import 'dart:async'; |
| |
| import 'package:test/test.dart'; |
| |
| void main() { |
| var skipCompleter = Completer(); |
| var waitCompleter = Completer(); |
| test('skip', () { |
| skipCompleter.future.then((_) { |
| waitCompleter.complete(); |
| markTestSkipped('some reason'); |
| }); |
| }); |
| |
| // Trigger the skip completer in a following test to ensure that it |
| // only fires after skip has completed successfully. |
| test('wait', () async { |
| skipCompleter.complete(); |
| await waitCompleter.future; |
| }); |
| } |
| ''').create(); |
| |
| var test = await runTest(['test.dart']); |
| expect( |
| test.stdout, |
| containsInOrder([ |
| '+0: skip', |
| '+1: wait', |
| '+0 -1: skip', |
| 'This test was marked as skipped after it had already completed. ' |
| 'Make sure to use', |
| '[expectAsync] or the [completes] matcher when testing async code.', |
| '+1 -1: Some tests failed.' |
| ])); |
| await test.shouldExit(1); |
| }); |
| }); |
| |
| group('errors', () { |
| test('when called after the test succeeded', () async { |
| await d.file('test.dart', ''' |
| import 'dart:async'; |
| |
| import 'package:test/test.dart'; |
| |
| void main() { |
| var skipCompleter = Completer(); |
| var waitCompleter = Completer(); |
| test("skip", () { |
| skipCompleter.future.then((_) { |
| waitCompleter.complete(); |
| expect(1, equals(2), skip: true); |
| }); |
| }); |
| |
| // Trigger the skip completer in a following test to ensure that it |
| // only fires after skip has completed successfully. |
| test("wait", () async { |
| skipCompleter.complete(); |
| await waitCompleter.future; |
| }); |
| } |
| ''').create(); |
| |
| var test = await runTest(['test.dart']); |
| expect( |
| test.stdout, |
| containsInOrder([ |
| '+0: skip', |
| '+1: wait', |
| '+0 -1: skip', |
| 'This test was marked as skipped after it had already completed. ' |
| 'Make sure to use', |
| '[expectAsync] or the [completes] matcher when testing async code.', |
| '+1 -1: Some tests failed.' |
| ])); |
| await test.shouldExit(1); |
| }); |
| |
| test('when an invalid type is used for skip', () async { |
| await d.file('test.dart', ''' |
| import 'package:test/test.dart'; |
| |
| void main() { |
| test("failing", () { |
| expect(1, equals(2), skip: 10); |
| }); |
| } |
| ''').create(); |
| |
| var test = await runTest(['test.dart']); |
| expect( |
| test.stdout, |
| containsInOrder( |
| ['Invalid argument (skip)', '+0 -1: Some tests failed.'])); |
| await test.shouldExit(1); |
| }); |
| }); |
| } |