Don't try to be smart with `unsupportedMembers`
If `MockSpec` says a member is not supported, just generate a `throw`,
even if it looks like we could get away without it.
PiperOrigin-RevId: 531137412
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a6efc1b..bbb99f6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,4 @@
-## 5.4.1-dev
+## 5.4.1-wip
* Deprecate the `mixingIn` argument to `MockSpec`. Best practice is to avoid
any concrete implementation in classes which extend `Mock`.
diff --git a/lib/src/builder.dart b/lib/src/builder.dart
index 45866fc..b62fb17 100644
--- a/lib/src/builder.dart
+++ b/lib/src/builder.dart
@@ -1380,15 +1380,7 @@
returnType.containsPrivateName ||
parametersContainPrivateName);
- if (throwsUnsupported) {
- if (!mockTarget.unsupportedMembers.contains(name)) {
- // We shouldn't get here as this is guarded against in
- // [_MockTargetGatherer._checkFunction].
- throw InvalidMockitoAnnotationException(
- "Mockito cannot generate a valid override for '$name', as it has a "
- 'non-nullable unknown return type or a private type in its '
- 'signature.');
- }
+ if (mockTarget.unsupportedMembers.contains(name)) {
builder.body = refer('UnsupportedError')
.call([
// Generate a raw string since name might contain a $.
@@ -1400,6 +1392,14 @@
.code;
return;
}
+ if (throwsUnsupported) {
+ // We shouldn't get here as this is guarded against in
+ // [_MockTargetGatherer._checkFunction].
+ throw InvalidMockitoAnnotationException(
+ "Mockito cannot generate a valid override for '$name', as it has a "
+ 'non-nullable unknown return type or a private type in its '
+ 'signature.');
+ }
final invocation =
referImported('Invocation', 'dart:core').property('method').call([
@@ -1881,14 +1881,7 @@
returnType is analyzer.TypeParameterType;
final throwsUnsupported = fallbackGenerator == null &&
(returnTypeIsTypeVariable || getter.returnType.containsPrivateName);
- if (throwsUnsupported) {
- if (!mockTarget.unsupportedMembers.contains(getter.name)) {
- // We shouldn't get here as this is guarded against in
- // [_MockTargetGatherer._checkFunction].
- throw InvalidMockitoAnnotationException(
- "Mockito cannot generate a valid override for '${getter.name}', as "
- 'it has a non-nullable unknown type or a private type.');
- }
+ if (mockTarget.unsupportedMembers.contains(getter.name)) {
builder.body = refer('UnsupportedError')
.call([
// Generate a raw string since getter.name might contain a $.
@@ -1901,6 +1894,13 @@
.code;
return;
}
+ if (throwsUnsupported) {
+ // We shouldn't get here as this is guarded against in
+ // [_MockTargetGatherer._checkFunction].
+ throw InvalidMockitoAnnotationException(
+ "Mockito cannot generate a valid override for '${getter.name}', as "
+ 'it has a non-nullable unknown type or a private type.');
+ }
final invocation =
referImported('Invocation', 'dart:core').property('getter').call([
diff --git a/lib/src/mock.dart b/lib/src/mock.dart
index 58a9cda..97bee48 100644
--- a/lib/src/mock.dart
+++ b/lib/src/mock.dart
@@ -19,13 +19,12 @@
import 'dart:async';
+import 'package:matcher/expect.dart';
import 'package:meta/meta.dart';
import 'package:mockito/src/call_pair.dart';
import 'package:mockito/src/invocation_matcher.dart';
// ignore: deprecated_member_use
import 'package:test_api/fake.dart';
-// ignore: deprecated_member_use
-import 'package:test_api/test_api.dart';
/// Whether a [when] call is "in progress."
///
diff --git a/lib/src/version.dart b/lib/src/version.dart
index cac536c..f346f25 100644
--- a/lib/src/version.dart
+++ b/lib/src/version.dart
@@ -1 +1 @@
-const packageVersion = '5.4.1-dev';
+const packageVersion = '5.4.1-wip';
diff --git a/pubspec.yaml b/pubspec.yaml
index 7fbabe6..dbecddc 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
name: mockito
-version: 5.4.1-dev
+version: 5.4.1-wip
description: >-
A mock framework inspired by Mockito with APIs for Fakes, Mocks,
behavior verification, and stubbing.
@@ -18,7 +18,7 @@
meta: ^1.3.0
path: ^1.8.0
source_gen: '>=0.9.6 <2.0.0'
- test_api: '>=0.2.1 <0.6.0'
+ test_api: '>=0.2.1 <0.7.0'
dev_dependencies:
build_runner: ^2.0.0