Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Unified Diff: pkg/analyzer/test/error/error_test.dart

Issue 2990273002: Add missed files from previous CL (Closed)
Patch Set: Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | pkg/analyzer/test/error/test_all.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/test/error/error_test.dart
diff --git a/pkg/analyzer/test/error/error_test.dart b/pkg/analyzer/test/error/error_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..b8d81dea48a934afb1a1201885ee55347562ec2a
--- /dev/null
+++ b/pkg/analyzer/test/error/error_test.dart
@@ -0,0 +1,107 @@
+// Copyright (c) 2017, 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 file.
+
+import 'dart:core';
+import 'dart:io';
+
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:path/path.dart' as path;
+import 'package:test/test.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../generated/parser_test.dart';
+
+main() {
+ defineReflectiveSuite(() {
+ defineReflectiveTests(ErrorCodeValuesTest);
+ });
+}
+
+@reflectiveTest
+class ErrorCodeValuesTest extends ParserTestCase {
+ List<String> _rootComponents;
+
+ List<String> get rootComponents {
+ if (_rootComponents == null) {
+ List<String> components = path.split(Platform.script.toFilePath());
+ _rootComponents =
+ components.sublist(0, components.indexOf('analyzer') + 1);
+ }
+ return _rootComponents;
+ }
+
+ bool bad() {
+ return false;
+ }
+
+ List<String> getDeclaredCodes(List<String> relativeComponents) {
+ List<String> declaredCodes = <String>[];
+ CompilationUnit definingUnit = parseFile(relativeComponents);
+ for (CompilationUnitMember declaration in definingUnit.declarations) {
+ if (declaration is ClassDeclaration) {
+ ExtendsClause extendsClause = declaration.extendsClause;
+ if (extendsClause != null &&
+ extendsClause.superclass.name.name == 'ErrorCode') {
+ String className = declaration.name.name;
+ for (ClassMember member in declaration.members) {
+ if (member is FieldDeclaration &&
+ member.isStatic &&
+ (member.fields.type == null ? bad() : true) &&
+ member.fields.type.toSource() == className) {
+ String fieldName = member.fields.variables[0].name.name;
+ declaredCodes.add(className + '.' + fieldName);
+ }
+ }
+ }
+ }
+ }
+ return declaredCodes;
+ }
+
+ List<String> getListedCodes() {
+ List<String> listedCodes = <String>[];
+ CompilationUnit listingUnit = parseFile(['lib', 'error', 'error.dart']);
+ TopLevelVariableDeclaration declaration = listingUnit.declarations
+ .firstWhere(
+ (member) =>
+ member is TopLevelVariableDeclaration &&
+ member.variables.variables[0].name.name == 'errorCodeValues',
+ orElse: () => null);
+ ListLiteral listLiteral = declaration.variables.variables[0].initializer;
+ for (PrefixedIdentifier element in listLiteral.elements) {
+ listedCodes.add(element.name);
+ }
+ return listedCodes;
+ }
+
+ CompilationUnit parseFile(List<String> relativeComponents) {
+ List<String> pathComponents = rootComponents.toList()
+ ..addAll(relativeComponents);
+ String filePath = path.normalize(path.joinAll(pathComponents));
+ return parseCompilationUnit(new File(filePath).readAsStringSync());
+ }
+
+ test_errorCodeValues() {
+ List<String> listedCodes = getListedCodes();
+ List<String> missingCodes = <String>[];
+ List<List<String>> declaringPaths = [
+ ['lib', 'src', 'analysis_options', 'error', 'option_codes.dart'],
+ ['lib', 'src', 'dart', 'error', 'hint_codes.dart'],
+ ['lib', 'src', 'dart', 'error', 'lint_codes.dart'],
+ ['lib', 'src', 'dart', 'error', 'todo_codes.dart'],
+ ['lib', 'src', 'html', 'error', 'html_codes.dart'],
+ ['lib', 'src', 'dart', 'error', 'syntactic_errors.dart'],
+ ['lib', 'src', 'error', 'codes.dart'],
+ ['..', 'front_end', 'lib', 'src', 'scanner', 'errors.dart']
+ ];
+ for (List<String> path in declaringPaths) {
+ for (String declaredCode in getDeclaredCodes(path)) {
+ if (!listedCodes.contains(declaredCode)) {
+ missingCodes.add(declaredCode);
+ }
+ }
+ }
+ expect(missingCodes, isEmpty);
+ }
+}
« no previous file with comments | « no previous file | pkg/analyzer/test/error/test_all.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698