Mercurial > bitten > bitten-test
comparison bitten/tests/web_ui.py @ 439:20ddfbb8e879
Fix for #154, added unit tests.
author | cmlenz |
---|---|
date | Tue, 21 Aug 2007 11:13:36 +0000 |
parents | cfbc9ee622d5 |
children | e660687ac89c |
comparison
equal
deleted
inserted
replaced
438:99d516f75169 | 439:20ddfbb8e879 |
---|---|
10 | 10 |
11 import shutil | 11 import shutil |
12 import tempfile | 12 import tempfile |
13 import unittest | 13 import unittest |
14 | 14 |
15 from trac.core import TracError | |
15 from trac.db import DatabaseManager | 16 from trac.db import DatabaseManager |
16 from trac.perm import PermissionCache, PermissionSystem | 17 from trac.perm import PermissionCache, PermissionSystem |
17 from trac.test import EnvironmentStub, Mock | 18 from trac.test import EnvironmentStub, Mock |
19 from trac.util.html import Markup | |
18 from trac.web.clearsilver import HDFWrapper | 20 from trac.web.clearsilver import HDFWrapper |
19 from trac.web.href import Href | 21 from trac.web.href import Href |
20 from bitten.model import BuildConfig, TargetPlatform, schema | 22 from bitten.main import BuildSystem |
21 from bitten.web_ui import BuildConfigController | 23 from bitten.model import Build, BuildConfig, BuildStep, TargetPlatform, schema |
24 from bitten.web_ui import BuildConfigController, SourceFileLinkFormatter | |
22 | 25 |
23 | 26 |
24 class BuildConfigControllerTestCase(unittest.TestCase): | 27 class BuildConfigControllerTestCase(unittest.TestCase): |
25 | 28 |
26 def setUp(self): | 29 def setUp(self): |
119 else: | 122 else: |
120 self.assertEqual('/trac/build/test?page=2', | 123 self.assertEqual('/trac/build/test?page=2', |
121 req.hdf.get('chrome.links.next.0.href')) | 124 req.hdf.get('chrome.links.next.0.href')) |
122 | 125 |
123 | 126 |
127 class SourceFileLinkFormatterTestCase(unittest.TestCase): | |
128 | |
129 def setUp(self): | |
130 self.env = EnvironmentStub() | |
131 | |
132 # Create tables | |
133 db = self.env.get_db_cnx() | |
134 cursor = db.cursor() | |
135 connector, _ = DatabaseManager(self.env)._get_connector() | |
136 for table in schema: | |
137 for stmt in connector.to_sql(table): | |
138 cursor.execute(stmt) | |
139 | |
140 # Hook up a dummy repository | |
141 self.repos = Mock( | |
142 get_node=lambda path, rev=None: Mock(get_history=lambda: [], | |
143 isdir=True), | |
144 normalize_path=lambda path: path, | |
145 sync=lambda: None | |
146 ) | |
147 self.env.get_repository = lambda authname=None: self.repos | |
148 | |
149 def tearDown(self): | |
150 pass | |
151 | |
152 def test_format_simple_link_in_repos(self): | |
153 BuildConfig(self.env, name='test', path='trunk').insert() | |
154 build = Build(self.env, config='test', platform=1, rev=123, rev_time=42, | |
155 status=Build.SUCCESS, slave='hal') | |
156 build.insert() | |
157 step = BuildStep(self.env, build=build.id, name='foo', | |
158 status=BuildStep.SUCCESS) | |
159 step.insert() | |
160 | |
161 self.repos.get_node = lambda path, rev: (path, rev) | |
162 | |
163 req = Mock(method='GET', href=Href('/trac'), authname='hal') | |
164 comp = SourceFileLinkFormatter(self.env) | |
165 formatter = comp.get_formatter(req, build) | |
166 | |
167 output = formatter(step, None, None, u'error in foo/bar.c') | |
168 self.assertEqual(Markup, type(output)) | |
169 self.assertEqual('error in <a href="/trac/browser/trunk/foo/bar.c">' | |
170 'foo/bar.c</a>', output) | |
171 | |
172 def test_format_simple_link_not_in_repos(self): | |
173 BuildConfig(self.env, name='test', path='trunk').insert() | |
174 build = Build(self.env, config='test', platform=1, rev=123, rev_time=42, | |
175 status=Build.SUCCESS, slave='hal') | |
176 build.insert() | |
177 step = BuildStep(self.env, build=build.id, name='foo', | |
178 status=BuildStep.SUCCESS) | |
179 step.insert() | |
180 | |
181 def _raise(): | |
182 raise TracError('No such node') | |
183 self.repos.get_node = lambda path, rev: _raise() | |
184 | |
185 req = Mock(method='GET', href=Href('/trac'), authname='hal') | |
186 comp = SourceFileLinkFormatter(self.env) | |
187 formatter = comp.get_formatter(req, build) | |
188 | |
189 output = formatter(step, None, None, u'error in foo/bar.c') | |
190 self.assertEqual(Markup, type(output)) | |
191 self.assertEqual('error in foo/bar.c', output) | |
192 | |
193 def test_format_link_in_repos_with_line(self): | |
194 BuildConfig(self.env, name='test', path='trunk').insert() | |
195 build = Build(self.env, config='test', platform=1, rev=123, rev_time=42, | |
196 status=Build.SUCCESS, slave='hal') | |
197 build.insert() | |
198 step = BuildStep(self.env, build=build.id, name='foo', | |
199 status=BuildStep.SUCCESS) | |
200 step.insert() | |
201 | |
202 self.repos.get_node = lambda path, rev: (path, rev) | |
203 | |
204 req = Mock(method='GET', href=Href('/trac'), authname='hal') | |
205 comp = SourceFileLinkFormatter(self.env) | |
206 formatter = comp.get_formatter(req, build) | |
207 | |
208 output = formatter(step, None, None, u'error in foo/bar.c:123') | |
209 self.assertEqual(Markup, type(output)) | |
210 self.assertEqual('error in <a href="/trac/browser/trunk/foo/bar.c#L123">' | |
211 'foo/bar.c:123</a>', output) | |
212 | |
213 def test_format_link_not_in_repos_with_line(self): | |
214 BuildConfig(self.env, name='test', path='trunk').insert() | |
215 build = Build(self.env, config='test', platform=1, rev=123, rev_time=42, | |
216 status=Build.SUCCESS, slave='hal') | |
217 build.insert() | |
218 step = BuildStep(self.env, build=build.id, name='foo', | |
219 status=BuildStep.SUCCESS) | |
220 step.insert() | |
221 | |
222 def _raise(): | |
223 raise TracError('No such node') | |
224 self.repos.get_node = lambda path, rev: _raise() | |
225 | |
226 req = Mock(method='GET', href=Href('/trac'), authname='hal') | |
227 comp = SourceFileLinkFormatter(self.env) | |
228 formatter = comp.get_formatter(req, build) | |
229 | |
230 output = formatter(step, None, None, u'error in foo/bar.c:123') | |
231 self.assertEqual(Markup, type(output)) | |
232 self.assertEqual('error in foo/bar.c:123', output) | |
233 | |
234 | |
124 def suite(): | 235 def suite(): |
125 return unittest.makeSuite(BuildConfigControllerTestCase, 'test') | 236 suite = unittest.TestSuite() |
237 suite.addTest(unittest.makeSuite(BuildConfigControllerTestCase, 'test')) | |
238 suite.addTest(unittest.makeSuite(SourceFileLinkFormatterTestCase, 'test')) | |
239 return suite | |
126 | 240 |
127 if __name__ == '__main__': | 241 if __name__ == '__main__': |
128 unittest.main(defaultTest='suite') | 242 unittest.main(defaultTest='suite') |