combineLcovToRoot method

void combineLcovToRoot({
  1. required String workingDirectory,
  2. bool isDeleteRootCoverageFirst = false,
})

Implementation

void combineLcovToRoot({
  required String workingDirectory,
  bool isDeleteRootCoverageFirst = false,
}) {
  final pathMergeLcovRoot = join(current, 'coverage', 'merge_lcov.info');
  if (!exists(pathMergeLcovRoot)) {
    touch(pathMergeLcovRoot, create: true);
  } else if (isDeleteRootCoverageFirst) {
    delete(pathMergeLcovRoot);
    touch(pathMergeLcovRoot, create: true);
  }

  final pathLcov = find(
    'lcov.info',
    recursive: true,
    types: [Find.file],
    workingDirectory: workingDirectory,
  ).toList();

  for (var path in pathLcov) {
    final splitPathLcov = path.split(separator);
    final newFileName = 'merge_${splitPathLcov.removeLast()}';
    final newPathFileLcov = '${splitPathLcov.join(separator)}/$newFileName';
    copy(path, newPathFileLcov, overwrite: true);
    final pathReplace = newPathFileLcov
        .replaceAll('$current/', '')
        .replaceAll(RegExp(r'(\/)?coverage\/merge_lcov.info(\/)?'), '')
        .replaceAll(RegExp(r'(\/)?coverage\/lcov.info(\/)?'), '');

    replace(newPathFileLcov, RegExp(r'SF:lib\/'), 'SF:$pathReplace/lib/');

    pathMergeLcovRoot.append(readFile(newPathFileLcov));
  }
}