Visitar URL original
[flutter_tools] Include dev_dependencies hooks for release integratio… · flutter/flutter@4e9c425 · GitHub
Skip to content

Commit 4e9c425

Browse files
committed
[flutter_tools] Include dev_dependencies hooks for release integration tests
1 parent 35f079d commit 4e9c425

2 files changed

Lines changed: 52 additions & 1 deletion

File tree

‎packages/flutter_tools/lib/src/build_system/targets/native_assets.dart‎

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ Future<FlutterNativeAssetsBuildRunner> createFlutterNativeAssetsBuildRunner(
410410
final BuildMode buildMode = buildModeEnvironment == null
411411
? BuildMode.debug
412412
: BuildMode.fromCliName(buildModeEnvironment);
413-
final bool includeDevDependencies = !buildMode.isRelease;
413+
final bool includeDevDependencies = !buildMode.isRelease || _isTestTarget(environment);
414414
return FlutterNativeAssetsBuildRunnerImpl(
415415
environment.packageConfigPath,
416416
packageConfig,
@@ -422,3 +422,20 @@ Future<FlutterNativeAssetsBuildRunner> createFlutterNativeAssetsBuildRunner(
422422
pubspecPath,
423423
);
424424
}
425+
426+
bool _isTestTarget(Environment environment) {
427+
final String? targetFile = environment.defines[kTargetFile];
428+
if (targetFile == null) {
429+
return false;
430+
}
431+
final String absoluteTargetPath = environment.fileSystem.path.isAbsolute(targetFile)
432+
? targetFile
433+
: environment.fileSystem.path.join(environment.projectDir.path, targetFile);
434+
final String relativePath = environment.fileSystem.path.relative(
435+
environment.fileSystem.path.normalize(absoluteTargetPath),
436+
from: environment.projectDir.path,
437+
);
438+
final List<String> parts = environment.fileSystem.path.split(relativePath);
439+
return parts.isNotEmpty &&
440+
const <String>{'integration_test', 'test_driver', 'test'}.contains(parts.first);
441+
}

‎packages/flutter_tools/test/general.shard/isolated/build_system/targets/native_assets_test.dart‎

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,40 @@ void main() {
392392
},
393393
);
394394
}
395+
396+
testUsingContext(
397+
'createFlutterNativeAssetsBuildRunner includes dev dependencies for release test targets',
398+
overrides: <Type, Generator>{
399+
FileSystem: () => fileSystem,
400+
ProcessManager: () => processManager,
401+
},
402+
() async {
403+
writePackageConfigFiles(directory: androidEnvironment.projectDir, mainLibName: 'my_app');
404+
androidEnvironment.defines[kBuildMode] = BuildMode.release.cliName;
405+
406+
androidEnvironment.defines[kTargetFile] = fileSystem.path.join('lib', 'main.dart');
407+
final FlutterNativeAssetsBuildRunner mainRunner = await createFlutterNativeAssetsBuildRunner(
408+
androidEnvironment,
409+
);
410+
expect((mainRunner as FlutterNativeAssetsBuildRunnerImpl).includeDevDependencies, isFalse);
411+
412+
androidEnvironment.defines[kTargetFile] = fileSystem.path.join(
413+
'integration_test',
414+
'app_test.dart',
415+
);
416+
final FlutterNativeAssetsBuildRunner integrationTestRunner =
417+
await createFlutterNativeAssetsBuildRunner(androidEnvironment);
418+
expect(
419+
(integrationTestRunner as FlutterNativeAssetsBuildRunnerImpl).includeDevDependencies,
420+
isTrue,
421+
);
422+
423+
androidEnvironment.defines[kTargetFile] = fileSystem.path.join('test_driver', 'app.dart');
424+
final FlutterNativeAssetsBuildRunner driverRunner =
425+
await createFlutterNativeAssetsBuildRunner(androidEnvironment);
426+
expect((driverRunner as FlutterNativeAssetsBuildRunnerImpl).includeDevDependencies, isTrue);
427+
},
428+
);
395429
}
396430

397431
List<String> _resolvedOutputs(Target target, Environment environment) {

0 commit comments

Comments
 (0)