Chromium Code Reviews| 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); |