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

Side by Side Diff: webkit/tools/layout_tests/layout_package/failure.py

Issue 545145: Move the layout test scripts into a 'webkitpy' subdirectory in preparation... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: try to de-confuse svn and the try bots Created 10 years, 11 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 # Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 CHROMIUM_WIN = "chromium-win"
6 CHROMIUM_MAC = "chromium-mac"
7 CHROMIUM_LINUX = "chromium-linux"
8 WEBKIT_WIN_TITLE = "WebKit Win"
9 WEBKIT_MAC_TITLE = "WebKit Mac"
10 WEBKIT_TITLE = "WebKit"
11 UNKNOWN = "Unknown"
12
13 EXPECTED_IMAGE_FILE_ENDING = "-expected.png"
14 ACTUAL_IMAGE_FILE_ENDING = "-actual.png"
15 UPSTREAM_IMAGE_FILE_ENDING = "-expected-upstream.png"
16 EXPECTED_TEXT_FILE_ENDING = "-expected.txt"
17 ACTUAL_TEXT_FILE_ENDING = "-actual.txt"
18 DIFF_IMAGE_FILE_ENDING = "-diff.png"
19 DIFF_TEXT_FILE_ENDING = "-diff.txt"
20
21 CHROMIUM_SRC_HOME = "http://src.chromium.org/viewvc/chrome/trunk/src/webkit/"
22 CHROMIUM_TRAC_HOME = CHROMIUM_SRC_HOME + "data/layout_tests/"
23 WEBKIT_TRAC_HOME = "http://trac.webkit.org/browser/trunk/LayoutTests/"
24 WEBKIT_SVN_HOSTNAME = "svn.webkit.org"
25 THIRD_PARTY = "third_party"
26
27 WEBKIT_PLATFORM_URL_BASE = WEBKIT_TRAC_HOME + "platform"
28 WEBKIT_LAYOUT_TEST_BASE_URL = "http://svn.webkit.org/repository/webkit/trunk/"
29 WEBKIT_IMAGE_BASELINE_BASE_URL_WIN = (WEBKIT_LAYOUT_TEST_BASE_URL +
30 "LayoutTests/platform/win/")
31 WEBKIT_IMAGE_BASELINE_BASE_URL_MAC = (WEBKIT_LAYOUT_TEST_BASE_URL +
32 "LayoutTests/platform/mac/")
33 WEBKIT_TRAC_IMAGE_BASELINE_BASE_URL_MAC = WEBKIT_PLATFORM_URL_BASE + "/mac/"
34 WEBKIT_TRAC_IMAGE_BASELINE_BASE_URL_WIN = WEBKIT_PLATFORM_URL_BASE + "/win/"
35
36 LAYOUT_TEST_RESULTS_DIR = "layout-test-results"
37
38 FAIL = "FAIL"
39 TIMEOUT = "TIMEOUT"
40 CRASH = "CRASH"
41 PASS = "PASS"
42 WONTFIX = "WONTFIX"
43
44
45 class Failure(object):
46 """
47 This class represents a failure in the test output, and is
48 intended as a data model object.
49 """
50
51 def __init__(self):
52 self.platform = ""
53 self.test_path = ""
54 self.text_diff_mismatch = False
55 self.image_mismatch = False
56 self.timeout = False
57 self.crashed = False
58 self.text_baseline_url = ""
59 self.image_baseline_url = ""
60 self.text_baseline_age = ""
61 self.image_baseline_age = ""
62 self.test_age = ""
63 self.text_baseline_local = ""
64 self.image_baseline_local = ""
65 self.text_actual_local = ""
66 self.image_actual_local = ""
67 self.image_baseline_upstream_url = ""
68 self.image_baseline_upstream_local = ""
69 self.test_expectations_line = ""
70 self.flakiness = 0
71
72 def GetExpectedImageFilename(self):
73 return self._RenameEndOfTestPath(EXPECTED_IMAGE_FILE_ENDING)
74
75 def GetActualImageFilename(self):
76 return self._RenameEndOfTestPath(ACTUAL_IMAGE_FILE_ENDING)
77
78 def GetExpectedTextFilename(self):
79 return self._RenameEndOfTestPath(EXPECTED_TEXT_FILE_ENDING)
80
81 def GetActualTextFilename(self):
82 return self._RenameEndOfTestPath(ACTUAL_TEXT_FILE_ENDING)
83
84 def GetImageDiffFilename(self):
85 return self._RenameEndOfTestPath(DIFF_IMAGE_FILE_ENDING)
86
87 def GetTextDiffFilename(self):
88 return self._RenameEndOfTestPath(DIFF_TEXT_FILE_ENDING)
89
90 def GetImageUpstreamFilename(self):
91 return self._RenameEndOfTestPath(UPSTREAM_IMAGE_FILE_ENDING)
92
93 def _RenameEndOfTestPath(self, suffix):
94 last_index = self.test_path.rfind(".")
95 if last_index == -1:
96 return self.test_path
97 return self.test_path[0:last_index] + suffix
98
99 def GetTestHome(self):
100 if self.test_path.startswith("chrome"):
101 return CHROMIUM_TRAC_HOME + self.test_path
102 return WEBKIT_TRAC_HOME + self.test_path
103
104 def GetImageBaselineTracHome(self):
105 if self.IsImageBaselineInWebkit():
106 return self._GetTracHome(self.image_baseline_url)
107 return self.image_baseline_url
108
109 def GetTextBaselineTracHome(self):
110 if self.text_baseline_url and self.IsTextBaselineInWebkit():
111 return self._GetTracHome(self.text_baseline_url)
112 return self.text_baseline_url
113
114 def _GetTracHome(self, file):
115 return WEBKIT_TRAC_HOME + file[file.find("LayoutTests"):]
116
117 def GetTextBaselineLocation(self):
118 return self._GetFileLocation(self.text_baseline_url)
119
120 def GetImageBaselineLocation(self):
121 return self._GetFileLocation(self.image_baseline_url)
122
123 # TODO(gwilson): Refactor this logic so it can be used by multiple scripts.
124 # TODO(gwilson): Change this so that it respects the fallback order of
125 # different platforms. (If platform is mac, the fallback should be
126 # different.)
127
128 def _GetFileLocation(self, file):
129 if not file:
130 return None
131 if file.find(CHROMIUM_WIN) > -1:
132 return CHROMIUM_WIN
133 if file.find(CHROMIUM_MAC) > -1:
134 return CHROMIUM_MAC
135 if file.find(CHROMIUM_LINUX) > -1:
136 return CHROMIUM_LINUX
137 if file.startswith(WEBKIT_IMAGE_BASELINE_BASE_URL_WIN):
138 return WEBKIT_WIN_TITLE
139 if file.startswith(WEBKIT_IMAGE_BASELINE_BASE_URL_MAC):
140 return WEBKIT_MAC_TITLE
141 # TODO(gwilson): Add mac-snowleopard, mac-leopard, mac-tiger here.
142 if file.startswith(WEBKIT_LAYOUT_TEST_BASE_URL):
143 return WEBKIT_TITLE
144 return UNKNOWN
145
146 def _IsFileInWebKit(self, file):
147 return file != None and (file.find(WEBKIT_SVN_HOSTNAME) > -1 or
148 file.find(THIRD_PARTY) > -1)
149
150 def IsImageBaselineInChromium(self):
151 return not self.IsImageBaselineInWebkit()
152
153 def IsImageBaselineInWebkit(self):
154 return self._IsFileInWebKit(self.image_baseline_url)
155
156 def IsTextBaselineInChromium(self):
157 return not self.IsTextBaselineInWebkit()
158
159 def IsTextBaselineInWebkit(self):
160 return self._IsFileInWebKit(self.text_baseline_url)
161
162 def GetTextResultLocationInZipFile(self):
163 return self._GetFileLocationInZipFile(self.GetActualTextFilename())
164
165 def GetImageResultLocationInZipFile(self):
166 return self._GetFileLocationInZipFile(self.GetActualImageFilename())
167
168 def _GetFileLocationInZipFile(self, file):
169 return "%s/%s" % (LAYOUT_TEST_RESULTS_DIR, file)
170
171 # TODO(gwilson): implement this method.
172 def GetAllBaselineLocations(self):
173 return None
174
175 # This method determines whether the test is actually expected to fail,
176 # in order to know whether to retrieve expected test results for it.
177 # (test results dont exist for tests expected to fail/crash.)
178
179 def IsExpectedToFail(self):
180 return self._FindKeywordInExpectations(FAIL)
181
182 def IsExpectedToTimeout(self):
183 return self._FindKeywordInExpectations(TIMEOUT)
184
185 def IsExpectedToCrash(self):
186 return self._FindKeywordInExpectations(CRASH)
187
188 def IsExpectedToPass(self):
189 return self._FindKeywordInExpectations(PASS)
190
191 def IsWontFix(self):
192 return self._FindKeywordInExpectations(WONTFIX)
193
194 def _FindKeywordInExpectations(self, keyword):
195 if (not self.test_expectations_line or
196 len(self.test_expectations_line) == 0):
197 return False
198 if self.test_expectations_line.find(keyword) > -1:
199 return True
200 return False
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698