OLD | NEW |
1 # Copyright (C) 2013 Google Inc. All rights reserved. | 1 # Copyright (C) 2013 Google Inc. All rights reserved. |
2 # | 2 # |
3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
5 # met: | 5 # met: |
6 # | 6 # |
7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
10 # copyright notice, this list of conditions and the following disclaimer | 10 # copyright notice, this list of conditions and the following disclaimer |
(...skipping 12 matching lines...) Expand all Loading... |
23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
28 | 28 |
29 import webkitpy.thirdparty.unittest2 as unittest | 29 import webkitpy.thirdparty.unittest2 as unittest |
30 | 30 |
31 from webkitpy.layout_tests.layout_package import bot_test_expectations | 31 from webkitpy.layout_tests.layout_package import bot_test_expectations |
32 from webkitpy.layout_tests.models import test_expectations | 32 from webkitpy.layout_tests.models import test_expectations |
| 33 from webkitpy.layout_tests.port import builders |
| 34 |
| 35 |
| 36 class BotTestExpectationsFactoryTest(unittest.TestCase): |
| 37 def fake_results_json_for_builder(self, builder): |
| 38 return bot_test_expectations.ResultsJSON(builder, 'Dummy content') |
| 39 |
| 40 def test_expectations_for_builder(self): |
| 41 factory = bot_test_expectations.BotTestExpectationsFactory() |
| 42 factory._results_json_for_builder = self.fake_results_json_for_builder |
| 43 |
| 44 old_builders = builders._exact_matches |
| 45 builders._exact_matches = { |
| 46 "Dummy builder name": {"port_name": "dummy-port", "specifiers": []}, |
| 47 } |
| 48 |
| 49 try: |
| 50 self.assertIsNotNone(factory.expectations_for_builder('Dummy builder
name')) |
| 51 finally: |
| 52 builders._exact_matches = old_builders |
| 53 |
| 54 def test_expectations_for_port(self): |
| 55 factory = bot_test_expectations.BotTestExpectationsFactory() |
| 56 factory._results_json_for_builder = self.fake_results_json_for_builder |
| 57 |
| 58 old_builders = builders._exact_matches |
| 59 builders._exact_matches = { |
| 60 "Dummy builder name": {"port_name": "dummy-port", "specifiers": []}, |
| 61 } |
| 62 |
| 63 try: |
| 64 self.assertIsNotNone(factory.expectations_for_port('dummy-port')) |
| 65 finally: |
| 66 builders._exact_matches = old_builders |
33 | 67 |
34 | 68 |
35 class BotTestExpectationsTest(unittest.TestCase): | 69 class BotTestExpectationsTest(unittest.TestCase): |
36 # FIXME: Find a way to import this map from Tools/TestResultServer/model/jso
nresults.py. | 70 # FIXME: Find a way to import this map from Tools/TestResultServer/model/jso
nresults.py. |
37 FAILURE_MAP = {"A": "AUDIO", "C": "CRASH", "F": "TEXT", "I": "IMAGE", "O": "
MISSING", | 71 FAILURE_MAP = {"A": "AUDIO", "C": "CRASH", "F": "TEXT", "I": "IMAGE", "O": "
MISSING", |
38 "N": "NO DATA", "P": "PASS", "T": "TIMEOUT", "Y": "NOTRUN", "X": "SKIP",
"Z": "IMAGE+TEXT", "K": "LEAK"} | 72 "N": "NO DATA", "P": "PASS", "T": "TIMEOUT", "Y": "NOTRUN", "X": "SKIP",
"Z": "IMAGE+TEXT", "K": "LEAK"} |
39 | 73 |
40 # All result_string's in this file expect newest result | 74 # All result_string's in this file expect newest result |
41 # on left: "PFF", means it just passed after 2 failures. | 75 # on left: "PFF", means it just passed after 2 failures. |
42 | 76 |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 self._assert_unexpected_results(test_data, { | 189 self._assert_unexpected_results(test_data, { |
156 'foo/pass1.html': sorted(["FAIL", "PASS"]), | 190 'foo/pass1.html': sorted(["FAIL", "PASS"]), |
157 'foo/pass2.html': sorted(["IMAGE", "PASS"]), | 191 'foo/pass2.html': sorted(["IMAGE", "PASS"]), |
158 'foo/fail.html': sorted(["TEXT", "PASS"]), | 192 'foo/fail.html': sorted(["TEXT", "PASS"]), |
159 'foo/f_p.html': sorted(["TEXT", "PASS"]), | 193 'foo/f_p.html': sorted(["TEXT", "PASS"]), |
160 'foo/crash.html': sorted(["WONTFIX", "CRASH", "TEXT"]), | 194 'foo/crash.html': sorted(["WONTFIX", "CRASH", "TEXT"]), |
161 'foo/image.html': sorted(["CRASH", "FAIL", "IMAGE"]), | 195 'foo/image.html': sorted(["CRASH", "FAIL", "IMAGE"]), |
162 'foo/i_f.html': sorted(["PASS", "IMAGE", "TEXT"]), | 196 'foo/i_f.html': sorted(["PASS", "IMAGE", "TEXT"]), |
163 'foo/all.html': sorted(["TEXT", "PASS", "IMAGE+TEXT", "TIMEOUT", "CR
ASH", "IMAGE", "MISSING", "LEAK"]), | 197 'foo/all.html': sorted(["TEXT", "PASS", "IMAGE+TEXT", "TIMEOUT", "CR
ASH", "IMAGE", "MISSING", "LEAK"]), |
164 }) | 198 }) |
OLD | NEW |