diff --git a/dartdoc_test/lib/src/logger.dart b/dartdoc_test/lib/src/logger.dart index bbb5d830..cb065a76 100644 --- a/dartdoc_test/lib/src/logger.dart +++ b/dartdoc_test/lib/src/logger.dart @@ -90,13 +90,24 @@ class Summary { /// Get summery from [DartdocAnalysisResult]. factory Summary.from(List results) { - final isFailed = results.indexWhere((r) => r.errors.isNotEmpty) != -1; - final errors = - results.expand((r) => r.errors).where((e) => e.commentSpan != null); + // Get all errors from all results + final allErrors = results.expand((r) => r.errors); + + // Check if there are any errors at all + final isFailed = allErrors.isNotEmpty; + + // Count only errors that have a comment span (user-facing errors) + final errorsWithSpan = allErrors.where((e) => e.commentSpan != null); + + // Get all code samples final samples = results.map((r) => r.file); + + // Get unique file paths final files = samples.map((s) => s.sample.comment.span.sourceUrl?.path).toSet(); - return Summary(isFailed, errors.length, samples.length, files.length); + + return Summary( + isFailed, errorsWithSpan.length, samples.length, files.length); } @override diff --git a/dartdoc_test/lib/src/model.dart b/dartdoc_test/lib/src/model.dart index 8043d3c4..627774ed 100644 --- a/dartdoc_test/lib/src/model.dart +++ b/dartdoc_test/lib/src/model.dart @@ -93,7 +93,16 @@ final class DocumentationCodeSample { }); /// Whether the code sample has a `main` function. - bool get hasMain => code.contains('void main()'); + /// Detects variations like: + /// - void main() + /// - Future main() + /// - Future main() + /// - main() + bool get hasMain { + // Check for any main function declaration + // Matches: main(), void main(), Future main(), Future main() + return RegExp(r'\b(Future|Future|void)?\s*main\s*\(').hasMatch(code); + } /// Create a sample by wrapping the code with a main function and imports. String wrappedCode(Directory testDir) { diff --git a/dartdoc_test/lib/src/resource.dart b/dartdoc_test/lib/src/resource.dart index f3034d7a..abfb2425 100644 --- a/dartdoc_test/lib/src/resource.dart +++ b/dartdoc_test/lib/src/resource.dart @@ -24,7 +24,7 @@ import 'package:source_span/source_span.dart'; import 'dartdoc_test.dart'; import 'model.dart'; -const _testPath = '.dart_tool/dartdoc_test'; +final _testPath = p.join('.dart_tool', 'dartdoc_test'); final _currentDir = Directory.current;