Index: pkg/dart_parser/test/parser_suite.dart |
diff --git a/pkg/dart_parser/test/parser_suite.dart b/pkg/dart_parser/test/parser_suite.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3ad6304a69b88ba2425147758c7b1038e5e4206e |
--- /dev/null |
+++ b/pkg/dart_parser/test/parser_suite.dart |
@@ -0,0 +1,45 @@ |
+// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE.md file. |
+ |
+import 'package:testing/testing.dart'; |
Siggi Cherem (dart-lang)
2017/01/12 21:56:04
I'm curious to take a look at this package in more
ahe
2017/01/13 07:16:21
I have outstanding reviews for landing it, but you
|
+ |
+import 'package:scanner/scanner.dart'; |
+ |
+import 'package:scanner/testing/scanner_chain.dart'; |
+ |
+import 'package:parser/parser.dart'; |
+ |
+Future<ChainContext> createContext( |
+ Chain suite, Map<String, String> enviroment) async { |
+ return new ScannerContext(); |
+} |
+ |
+class ScannerContext extends ChainContext { |
+ final List<Step> steps = const <Step>[ |
+ const Read(), |
+ const Scan(), |
+ const Parse(), |
+ ]; |
+} |
+ |
+class Parse extends Step<ScannerResult, Null, ChainContext> { |
+ const Parse(); |
+ |
+ String get name => "parse"; |
+ |
+ Future<Result<Null>> run( |
+ ScannerResult result, ChainContext context) async { |
+ try { |
+ List<ParserError> errors = parse(result.tokens); |
+ if (errors.isNotEmpty) { |
+ return fail(null, errors.join("\n")); |
+ } |
+ } on ParserError catch (e, s) { |
+ return fail(null, e, s); |
+ } |
+ return pass(null); |
+ } |
+} |
+ |
+main(List<String> arguments) => runMe(arguments, createContext); |