writeOptimizedFiles method
The files
param's key is the value of the type of test
The base values for this are dart
for dart tests and flutter
for flutter tests.
When these values are different, it is because flutter has specific
tests to be run. Such as LiveTestWidgetsFlutterBinding
, the value would
be live
Implementation
Map<String, DetermineFlutterOrDart> writeOptimizedFiles(
Map<String, List<String>> files, {
required String testDir,
required DetermineFlutterOrDart tool,
}) {
final optimizedFiles = <String, DetermineFlutterOrDart>{};
final projectName = fs.currentDirectory.basename;
({String packageName, String barrelFile})? exportFile;
if (path.join('lib', '$projectName.dart') case final path
when fs.file(path).existsSync()) {
if (PubspecYamlImpl(fs: fs).parse() case final pubspec?) {
final packageName = pubspec['name'] as String;
exportFile =
(packageName: packageName, barrelFile: '$projectName.dart');
}
} else if (PubspecYamlImpl(fs: fs).parse() case final pubspec?) {
final packageName = pubspec['name'] as String;
if (path.join('lib', '$packageName.dart') case final path
when fs.file(path).existsSync()) {
exportFile =
(packageName: packageName, barrelFile: '$packageName.dart');
}
}
for (final MapEntry(key: type, value: testFiles) in files.entries) {
final optimizedPath = path.join(testDir, optimizedTestFileName(type));
fs.file(optimizedPath).createSync(recursive: true);
final testDirs = testFiles.map(
(e) => Testable(
absolute: e,
optimizedPath: optimizedPath,
testType: type,
),
);
final content = writeOptimizedTestFile(
testDirs,
isFlutterPackage: tool.isFlutter,
barrelFile: exportFile,
);
fs.file(optimizedPath).writeAsStringSync(content);
optimizedFiles[optimizedPath] = tool.setTestType(type);
}
return optimizedFiles;
}