Index: packages/petitparser/test/dart_file_tests.dart |
diff --git a/packages/petitparser/test/dart_file_tests.dart b/packages/petitparser/test/dart_file_tests.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d30c21ab725c577117c60aac4824811ed453c14f |
--- /dev/null |
+++ b/packages/petitparser/test/dart_file_tests.dart |
@@ -0,0 +1,37 @@ |
+/// This test-case automatically generates various tests from Dart source |
+/// code. Unfortunately the parser is currently unable to parse most of |
+/// these files. |
+library petitparser.test.dart_file_test; |
+ |
+import 'dart:io'; |
+ |
+import 'package:test/test.dart'; |
+ |
+import 'package:petitparser/dart.dart'; |
+import 'package:petitparser/test.dart'; |
+ |
+void generateTests(DartGrammar dart, String title, List<FileSystemEntity> files) { |
+ group(title, () { |
+ files |
+ .where((file) => file is File && file.path.endsWith('.dart')) |
+ .forEach((File file) { |
+ test(file.path, () { |
+ var source = new StringBuffer(); |
+ file |
+ .openRead() |
+ .transform(SYSTEM_ENCODING.decoder) |
+ .listen((part) => source.write(part), onDone: expectAsync(() { |
+ expect(source.toString(), accept(dart)); |
+ }), onError: fail); |
+ }); |
+ }); |
+ }); |
+} |
+ |
+void main() { |
+ var dart = new DartGrammar(); |
+ generateTests(dart, 'Dart SDK', new Directory('packages') |
+ .listSync(recursive: true, followLinks: false)); |
+ generateTests(dart, 'PetitParser', Directory.current |
+ .listSync(recursive: true, followLinks: true)); |
+} |