Open ricardoamador opened 1 year ago
Do you get more output if you put the --verbose
after run build_runner build
?
Yeah here is the verbose output. Sorry about that:
[SEVERE] mockito:mockBuilder on test/src/utilities/mocks.dart (cached):
type 'SimpleIdentifierImpl' is not a subtype of type 'ListLiteral?' in type cast
package:mockito/src/builder.dart 475:24 _MockTargetGatherer._customMocksAst
package:mockito/src/builder.dart 520:11 _MockTargetGatherer._mockTargetsFromGenerateMocks
package:mockito/src/builder.dart 447:25 new _MockTargetGatherer
package:mockito/src/builder.dart 73:9 MockBuilder.build
[SEVERE] Build:
Failed after 164ms
[+3202 ms] "flutter run" took 3,431ms.
[ +5 ms] pub finished with exit code 1
[ +1 ms]
#0 throwToolExit (package:flutter_tools/src/base/common.dart:10:3)
#1 _DefaultPub.interactively (package:flutter_tools/src/dart/pub.dart:589:7)
<asynchronous suspension>
#2 PackagesForwardCommand.runCommand (package:flutter_tools/src/commands/packages.dart:250:5)
<asynchronous suspension>
#3 FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1244:27)
<asynchronous suspension>
#4 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#5 CommandRunner.runCommand (package:args/command_runner.dart:209:13)
<asynchronous suspension>
#6 FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:283:9)
<asynchronous suspension>
#7 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#8 FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:229:5)
<asynchronous suspension>
#9 run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:64:9)
<asynchronous suspension>
#10 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#11 main (package:flutter_tools/executable.dart:91:3)
<asynchronous suspension>
Ah nice stack trace. It's a bug in mockito, but your code probably does not analyze clean? It looks like you have something like GenerateMocks([], customMocks: xxx)
rather than GenerateMocks([], customMocks: [...])
.
Mockito should fail nicely on bad code, rather than crash.
We use the following:
@GenerateMocks(
<Type>[
...
],
customMocks: _mocks,
)
...
const List<MockSpec<dynamic>> _mocks = <MockSpec<dynamic>>[
MockSpec<Cache<Uint8List>>(),
MockSpec<GitHub>(
fallbackGenerators: <Symbol, Function>{
#postJSON: postJsonShim,
},
),
// MockSpec<GerritService>(fallbackGenerators: <Symbol, Function>{
// #authClientProvider: authClientProviderShim,
// }),
];
Which looks to be GenerateMocks([], customMocks: [...])
Ah I see. We may not be able to support that. Will have to look.
Sure let me know. Also let me know if we are doing something wrong here as well.
CC @yanok. I think this is caused by https://github.com/dart-lang/mockito/commit/d51cd8d9dda44e407fede1fd9d51088fb95c2775 (cl/467867637)
Yep, the mockspecs must be inlined. (That's because I have to inspect the AST before constant evaluation and I don't want to follow definitions in the AST).
But we surely need to complain about this instead of crashing.
@ricardoamador the fix would be to inline _mocks
into the @GenerateMocks
annotation.
@yanok @srawlins that looks to be the fix. I validated with 5.3.2 and inlined the _mocks function call and looks good. Thank you for the help on this!
I can confirm inlining the custom mocks solved the problem for me also, perhaps mentioning this in the exception would be an easy fix?
When we updated to version 5.3.2 we began seeing the following error in our builds:
If we use version 5.3.0 we do not see these errors.
I am creating mocks using the following command:
dart --verbose run build_runner build --delete-conflicting-outputs