cleanCoverageFile method

Future<List<String>> cleanCoverageFile(
  1. List<Glob> globs,
  2. String pathToCoverageFile
)

Implementation

Future<List<String>> cleanCoverageFile(
    List<Glob> globs, String pathToCoverageFile) async {
  final f = File(pathToCoverageFile);

  final List<String> removedFiles = [];

  bool keep = true;

  bool keeper(String line) {
    if (line.startsWith('SF:') && matchesGlob(globs, line)) {
      removedFiles.add(line.substring(3));
      keep = false;
    } else {
      if (!keep && line == 'end_of_record') {
        keep = true;
        return false;
      }
    }
    return keep;
  }

  final lines = await f.readAsLines();
  await f.writeAsString(lines.where(keeper).join('\n'));

  return removedFiles;
}