OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library status_file_parser; | 5 library status_file_parser; |
6 | 6 |
7 import "dart:async"; | 7 import "dart:async"; |
8 import "dart:convert" show LineSplitter, UTF8; | 8 import "dart:convert" show LineSplitter, UTF8; |
9 import "dart:io"; | 9 import "dart:io"; |
10 | 10 |
(...skipping 17 matching lines...) Expand all Loading... |
28 static Expectation MISSING_STATIC_WARNING = byName('MissingStaticWarning'); | 28 static Expectation MISSING_STATIC_WARNING = byName('MissingStaticWarning'); |
29 static Expectation PUB_GET_ERROR = byName('PubGetError'); | 29 static Expectation PUB_GET_ERROR = byName('PubGetError'); |
30 | 30 |
31 // "meta expectations" | 31 // "meta expectations" |
32 static Expectation OK = byName('Ok'); | 32 static Expectation OK = byName('Ok'); |
33 static Expectation SLOW = byName('Slow'); | 33 static Expectation SLOW = byName('Slow'); |
34 static Expectation SKIP = byName('Skip'); | 34 static Expectation SKIP = byName('Skip'); |
35 static Expectation SKIP_SLOW = byName('SkipSlow'); | 35 static Expectation SKIP_SLOW = byName('SkipSlow'); |
36 static Expectation SKIP_BY_DESIGN = byName('SkipByDesign'); | 36 static Expectation SKIP_BY_DESIGN = byName('SkipByDesign'); |
37 | 37 |
| 38 // Can be returned by the test runner to say the result should be ignored, |
| 39 // and assumed to meet the expectations, due to an infrastructure failure. |
| 40 // Do not place in status files. |
| 41 static Expectation IGNORE = byName('Ignore'); |
| 42 |
38 static Expectation byName(String name) { | 43 static Expectation byName(String name) { |
39 _initialize(); | 44 _initialize(); |
40 name = name.toLowerCase(); | 45 name = name.toLowerCase(); |
41 if (!_AllExpectations.containsKey(name)) { | 46 if (!_AllExpectations.containsKey(name)) { |
42 throw new Exception("Expectation.byName(name='$name'): Invalid name."); | 47 throw new Exception("Expectation.byName(name='$name'): Invalid name."); |
43 } | 48 } |
44 return _AllExpectations[name]; | 49 return _AllExpectations[name]; |
45 } | 50 } |
46 | 51 |
47 // Keep a map of all possible Expectation objects, initialized lazily. | 52 // Keep a map of all possible Expectation objects, initialized lazily. |
(...skipping 22 matching lines...) Expand all Loading... |
70 build("MissingStaticWarning", group: fail); | 75 build("MissingStaticWarning", group: fail); |
71 build("StaticWarning", group: fail); | 76 build("StaticWarning", group: fail); |
72 | 77 |
73 build("PubGetError", group: fail); | 78 build("PubGetError", group: fail); |
74 | 79 |
75 var skip = build("Skip", isMetaExpectation: true); | 80 var skip = build("Skip", isMetaExpectation: true); |
76 build("SkipByDesign", isMetaExpectation: true); | 81 build("SkipByDesign", isMetaExpectation: true); |
77 build("SkipSlow", group: skip, isMetaExpectation: true); | 82 build("SkipSlow", group: skip, isMetaExpectation: true); |
78 build("Ok", isMetaExpectation: true); | 83 build("Ok", isMetaExpectation: true); |
79 build("Slow", isMetaExpectation: true); | 84 build("Slow", isMetaExpectation: true); |
| 85 build("Ignore"); |
80 } | 86 } |
81 } | 87 } |
82 | 88 |
83 final String prettyName; | 89 final String prettyName; |
84 final String name; | 90 final String name; |
85 final Expectation group; | 91 final Expectation group; |
86 // Indicates whether this expectation cannot be a test outcome (i.e. it is a | 92 // Indicates whether this expectation cannot be a test outcome (i.e. it is a |
87 // "meta marker"). | 93 // "meta marker"). |
88 final bool isMetaExpectation; | 94 final bool isMetaExpectation; |
89 | 95 |
90 Expectation._(prettyName, | 96 Expectation._(prettyName, |
91 {Expectation this.group: null, bool this.isMetaExpectation: false}) | 97 {Expectation this.group: null, bool this.isMetaExpectation: false}) |
92 : prettyName = prettyName, | 98 : prettyName = prettyName, |
93 name = prettyName.toLowerCase(); | 99 name = prettyName.toLowerCase(); |
94 | 100 |
95 bool canBeOutcomeOf(Expectation expectation) { | 101 bool canBeOutcomeOf(Expectation expectation) { |
96 Expectation outcome = this; | 102 Expectation outcome = this; |
| 103 if (outcome == IGNORE) return true; |
97 while (outcome != null) { | 104 while (outcome != null) { |
98 if (outcome == expectation) { | 105 if (outcome == expectation) { |
99 return true; | 106 return true; |
100 } | 107 } |
101 outcome = outcome.group; | 108 outcome = outcome.group; |
102 } | 109 } |
103 return false; | 110 return false; |
104 } | 111 } |
105 | 112 |
106 String toString() => prettyName; | 113 String toString() => prettyName; |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 } | 339 } |
333 regExps[i] = regExp; | 340 regExps[i] = regExp; |
334 } | 341 } |
335 _keyToRegExps[key] = regExps; | 342 _keyToRegExps[key] = regExps; |
336 }); | 343 }); |
337 | 344 |
338 _regExpCache = null; | 345 _regExpCache = null; |
339 _preprocessed = true; | 346 _preprocessed = true; |
340 } | 347 } |
341 } | 348 } |
OLD | NEW |