writeOptimizedFiles method

Map<String, DetermineFlutterOrDart> writeOptimizedFiles(
  1. Map<String, List<String>> files, {
  2. required String testDir,
  3. required DetermineFlutterOrDart tool,
})

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;
}