@@ -4,6 +4,7 @@ import 'dart:io';
44
55import 'package:code_assets/code_assets.dart' ;
66import 'package:logging/logging.dart' ;
7+ import 'package:meta/meta.dart' ;
78import 'package:pub_semver/pub_semver.dart' ;
89
910import '../builder/user_config.dart' ;
@@ -14,13 +15,16 @@ import '../tool/tool_resolver.dart';
1415/// CMake.
1516final cmake = Tool (name: 'CMake' , defaultResolver: _CmakeResolver ());
1617
18+ @visibleForTesting
19+ CliVersionResolver ? unitTestCmakeAndroidResolver;
20+ @visibleForTesting
21+ CliVersionResolver ? unitTestCmakeSystemResolver;
22+
1723class _CmakeResolver implements ToolResolver {
1824 final executableName = OS .current.executableFileName ('cmake' );
1925
20- @override
21- Future <List <ToolInstance >> resolve ({required Logger ? logger, UserConfig ? userConfig}) async {
22- // here, we always try to find android cmake first and filter out unsatisfied versions
23- final androidResolver = CliVersionResolver (
26+ CliVersionResolver _getAndroidResolver ({UserConfig ? userConfig}) {
27+ return unitTestCmakeAndroidResolver ?? CliVersionResolver (
2428 wrappedResolver: ToolResolvers ([
2529 InstallLocationResolver (
2630 toolName: 'CMake' ,
@@ -33,12 +37,22 @@ class _CmakeResolver implements ToolResolver {
3337 ),
3438 ]),
3539 );
36- final androidCmakeInstances = await androidResolver.resolve (logger: logger);
37- logger? .info ('Found Android CMake: ${androidCmakeInstances .map ((e ) => e .toString ()).join (', ' )}' );
40+ }
3841
39- final systemResolver = CliVersionResolver (
42+ CliVersionResolver _getSystemResolver () {
43+ return unitTestCmakeSystemResolver ?? CliVersionResolver (
4044 wrappedResolver: PathToolResolver (toolName: 'CMake' , executableName: 'cmake' ),
4145 );
46+ }
47+
48+ @override
49+ Future <List <ToolInstance >> resolve ({required Logger ? logger, UserConfig ? userConfig}) async {
50+ // here, we always try to find android cmake first and filter out unsatisfied versions
51+ final androidResolver = _getAndroidResolver (userConfig: userConfig);
52+ final androidCmakeInstances = await androidResolver.resolve (logger: logger);
53+ logger? .info ('Found Android CMake: ${androidCmakeInstances .map ((e ) => e .toString ()).join (', ' )}' );
54+
55+ final systemResolver = _getSystemResolver ();
4256 final systemCmakeInstances = await systemResolver.resolve (logger: logger);
4357 logger? .info ('Found System CMake: ${systemCmakeInstances .map ((e ) => e .toString ()).join (', ' )}' );
4458
0 commit comments