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

Unified Diff: tools/testing/dart/expectation_set.dart

Issue 2885623002: Revert "Refactor and clean up the status file parsing code." (Closed)
Patch Set: Created 3 years, 7 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 | « tools/testing/dart/expectation.dart ('k') | tools/testing/dart/runtime_configuration.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/testing/dart/expectation_set.dart
diff --git a/tools/testing/dart/expectation_set.dart b/tools/testing/dart/expectation_set.dart
deleted file mode 100644
index f7d135f98beceabc9b03ced89e93080ddea90282..0000000000000000000000000000000000000000
--- a/tools/testing/dart/expectation_set.dart
+++ /dev/null
@@ -1,118 +0,0 @@
-// 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 'expectation.dart';
-import 'status_file.dart';
-
-/// Tracks the [Expectation]s associated with a set of file paths.
-///
-/// For any given file path, returns the expected test results for that file.
-/// A set can be loaded from a collection of status files. A file path may
-/// exist in multiple files (or even multiple sections within the file). When
-/// that happens, all of the expectations of every entry are combined.
-class ExpectationSet {
- /// Reads the expectations defined by the status files at [statusFilePaths]
- /// given [environment].
- static ExpectationSet read(
- List<String> statusFilePaths, Map<String, dynamic> environment) {
- var expectations = new ExpectationSet._();
- for (var path in statusFilePaths) {
- var file = new StatusFile.read(path);
- for (var section in file.sections) {
- if (section.isEnabled(environment)) {
- for (var entry in section.entries) {
- expectations.addEntry(entry);
- }
- }
- }
- }
-
- return expectations;
- }
-
- // Only create one copy of each Set<Expectation>.
- // We just use .toString as a key, so we may make a few
- // sets that only differ in their toString element order.
- static Map<String, Set<Expectation>> _cachedSets = {};
-
- Map<String, Set<Expectation>> _map = {};
- Map<String, List<RegExp>> _keyToRegExps;
-
- /// Create a TestExpectations object. See the [expectations] method
- /// for an explanation of matching.
- ExpectationSet._();
-
- /// Add [entry] to the set of expectations.
- void addEntry(StatusEntry entry) {
- // Once we have started using the expectations we cannot add more
- // rules.
- if (_keyToRegExps != null) {
- throw new StateError("Cannot add entries after it is already in use.");
- }
-
- _map
- .putIfAbsent(entry.path, () => new Set<Expectation>())
- .addAll(entry.expectations);
- }
-
- /// Get the expectations for the test at [path].
- ///
- /// For every (key, expectation) pair, matches the key with the file name.
- /// Returns the union of the expectations for all the keys that match.
- ///
- /// Normal matching splits the key and the filename into path components and
- /// checks that the anchored regular expression "^$keyComponent\$" matches
- /// the corresponding filename component.
- Set<Expectation> expectations(String path) {
- var result = new Set<Expectation>();
- var parts = path.split('/');
-
- // Create mapping from keys to list of RegExps once and for all.
- _preprocessForMatching();
-
- _map.forEach((key, expectations) {
- var regExps = _keyToRegExps[key];
- if (regExps.length > parts.length) return;
-
- for (var i = 0; i < regExps.length; i++) {
- if (!regExps[i].hasMatch(parts[i])) return;
- }
-
- // If all components of the status file key matches the filename
- // add the expectations to the result.
- result.addAll(expectations);
- });
-
- // If no expectations were found the expectation is that the test
- // passes.
- if (result.isEmpty) {
- result.add(Expectation.pass);
- }
- return _cachedSets.putIfAbsent(result.toString(), () => result);
- }
-
- /// Preprocesses the expectations for matching against filenames. Generates
- /// lists of regular expressions once and for all for each key.
- void _preprocessForMatching() {
- if (_keyToRegExps != null) return;
-
- _keyToRegExps = {};
- var regExpCache = <String, RegExp>{};
-
- _map.forEach((key, expectations) {
- if (_keyToRegExps[key] != null) return;
- var splitKey = key.split('/');
- var regExps = new List<RegExp>(splitKey.length);
-
- for (var i = 0; i < splitKey.length; i++) {
- var component = splitKey[i];
- var regExp = regExpCache.putIfAbsent(component,
- () => new RegExp("^${splitKey[i]}\$".replaceAll('*', '.*')));
- regExps[i] = regExp;
- }
-
- _keyToRegExps[key] = regExps;
- });
- }
-}
« no previous file with comments | « tools/testing/dart/expectation.dart ('k') | tools/testing/dart/runtime_configuration.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698