| 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;
|
| - });
|
| - }
|
| -}
|
|
|