| // Copyright (c) 2012, 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. | |
| library; | |
| import "dart:io"; | |
| import 'expectation.dart' show Expectation, ExpectationSet; | |
| TestExpectations readTestExpectations( | |
| List<String> statusFilePaths, | |
| ExpectationSet expectationSet, | |
| ) { | |
| TestExpectations testExpectations = TestExpectations(expectationSet); | |
| for (String path in statusFilePaths) { | |
| readTestExpectationsInto(testExpectations, path); | |
| } | |
| return testExpectations; | |
| } | |
| void readTestExpectationsInto( | |
| TestExpectations expectations, | |
| String statusFilePath, | |
| ) { | |
| File file = File(statusFilePath); | |
| for (String line in file.readAsLinesSync()) { | |
| // Remove comments if any. | |
| int index = line.indexOf("#"); | |
| if (index >= 0) { | |
| line = line.substring(0, index); | |
| } | |
| line = line.trim(); | |
| if (line.isEmpty) continue; | |
| // Line should look lie "testName: status1, status2, etc". | |
| List<String> lineSplit = line.split(":"); | |
| if (lineSplit.length != 2) { | |
| throw "Unsupported line: '$line'"; | |
| } | |
| String name = lineSplit[0]; | |
| List<String> allowedStatus = lineSplit[1].trim().split(","); | |
| for (int i = 0; i < allowedStatus.length; i++) { | |
| allowedStatus[i] = allowedStatus[i].trim(); | |
| } | |
| expectations.add(name, allowedStatus); | |
| } | |
| } | |
| class TestExpectations { | |
| final ExpectationSet expectationSet; | |
| final Map<String, Set<Expectation>> _map = {}; | |
| new(this.expectationSet); | |
| void add(String name, List<String> allowedStatus) { | |
| Set<Expectation> expectations = (_map[name] ??= {}); | |
| for (String status in allowedStatus) { | |
| expectations.add(expectationSet[status]); | |
| } | |
| } | |
| Set<Expectation> expectations(String filename) { | |
| Set<Expectation> result = _map[filename] ?? {}; | |
| // If no expectations were found the expectation is that the test | |
| // passes. | |
| if (result.isEmpty) { | |
| result.add(Expectation.pass); | |
| } | |
| return result; | |
| } | |
| } |