findAffectedTests method
Implementation
List<AffectedTestReason> findAffectedTests({
required List<String> changedFiles,
required List<String> testFiles,
}) {
final testSet = testFiles.toSet();
final Map<String, AffectedTestReason> affectedMap = {};
for (final changedFile in changedFiles) {
if (testSet.contains(changedFile)) {
affectedMap[changedFile] = AffectedTestReason(
testPath: changedFile,
dependencyChain: [changedFile],
);
}
final dependentsWithTrace = graph.getTransitiveDependents(changedFile);
dependentsWithTrace.forEach((dependentPath, trace) {
if (testSet.contains(dependentPath)) {
if (!affectedMap.containsKey(dependentPath)) {
affectedMap[dependentPath] = AffectedTestReason(
testPath: dependentPath,
dependencyChain: trace,
);
}
}
});
}
final result = affectedMap.values.toList();
result.sort((a, b) => a.testPath.compareTo(b.testPath));
return result;
}