saveTestsForWidget method
Future<void>
saveTestsForWidget({
- required ClassDeclaration widget,
- required String widgetName,
- required CompilationUnit compilationUnit,
- required String fileImport,
- required File subjectFile,
- required TestRunInfo testRunInfo,
- ClassDeclaration? classAstNode,
- ExtensionDeclaration? extAstNode,
- String? className,
- Map<
String, MethodDeclaration> ? methodAstNodes,
Implementation
Future<void> saveTestsForWidget({
required ClassDeclaration widget,
required String widgetName,
required CompilationUnit compilationUnit,
required String fileImport,
required File subjectFile,
required TestRunInfo testRunInfo,
ClassDeclaration? classAstNode,
ExtensionDeclaration? extAstNode,
String? className,
Map<String, MethodDeclaration>? methodAstNodes,
}) async {
try {
final testRequestData = await widgetTestExecutor.prepareRequest(
classDeclaration: widget, compilationUnit: compilationUnit);
final file = PathUtils.correspondingPermanentWidgetTestFile(
widgetName, subjectFile.path);
if (!(await file.exists())) return;
final testIsSaved = await cacheManager.checkIfWidgetTestSaved(
await testRequestData.codeInScrutity(excludeAnnotations: false),
subjectFile.path,
testRequestData.widgetName,
);
if (testIsSaved) return; //this test is already saved.
var hasErrors =
await fixerExecutor.hasCompilationErrors(file.absolute.path);
if (hasErrors) {
wtLog.log(
"⚠️ File ${PathUtils.relatetiveLibFilePath(file.path)} has errors and will not be updated");
return;
}
final fixedTest = await file.readAsString();
await generationRepository.updateWidgetTest(testRequestData, fixedTest);
await cacheManager.cacheWidgetTest(
code: await testRequestData.codeInScrutity(excludeAnnotations: false),
codeFilePath: subjectFile.path,
test: fixedTest,
testFilePath: file.path,
widgetName: widgetName,
saved: true);
testRunInfo.incrementFromAction(TestGenerationStatus.update, widgetName);
} catch (e, stackTrace) {
wtTelemetry.trackError(
severity: Severity.error, error: e, stackTrace: stackTrace);
wtLog.warning("Error saving widget tests for widget: ${widgetName}");
wtLog.log(e.toString());
}
}