Mercurial > bitten > bitten-test
annotate bitten/tests/web_ui.py @ 629:f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
Tests and updated documentation included.
Closes #132.
author | osimons |
---|---|
date | Tue, 11 Aug 2009 22:47:55 +0000 |
parents | 99831ab37fd3 |
children | 29a5793c452a |
rev | line source |
---|---|
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
1 # -*- coding: utf-8 -*- |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
2 # |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
3 # Copyright (C) 2005-2007 Christopher Lenz <cmlenz@gmx.de> |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
4 # Copyright (C) 2007 Edgewall Software |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
5 # All rights reserved. |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
6 # |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
7 # This software is licensed as described in the file COPYING, which |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
8 # you should have received as part of this distribution. The terms |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
9 # are also available at http://bitten.edgewall.org/wiki/License. |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
10 |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
11 import shutil |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
12 import tempfile |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
13 import unittest |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
14 |
439 | 15 from trac.core import TracError |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
16 from trac.db import DatabaseManager |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
17 from trac.perm import PermissionCache, PermissionSystem |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
18 from trac.test import EnvironmentStub, Mock |
439 | 19 from trac.util.html import Markup |
575
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
20 from trac.web.api import HTTPNotFound |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
21 from trac.web.href import Href |
439 | 22 from bitten.main import BuildSystem |
23 from bitten.model import Build, BuildConfig, BuildStep, TargetPlatform, schema | |
575
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
24 from bitten.web_ui import BuildConfigController, BuildController, \ |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
25 SourceFileLinkFormatter |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
26 |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
27 |
575
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
28 class AbstractWebUITestCase(unittest.TestCase): |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
29 |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
30 def setUp(self): |
458 | 31 self.env = EnvironmentStub(enable=['trac.*', 'bitten.*']) |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
32 self.env.path = tempfile.mkdtemp() |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
33 |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
34 # Create tables |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
35 db = self.env.get_db_cnx() |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
36 cursor = db.cursor() |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
37 connector, _ = DatabaseManager(self.env)._get_connector() |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
38 for table in schema: |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
39 for stmt in connector.to_sql(table): |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
40 cursor.execute(stmt) |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
41 |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
42 # Set up permissions |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
43 self.env.config.set('trac', 'permission_store', |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
44 'DefaultPermissionStore') |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
45 |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
46 # Hook up a dummy repository |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
47 self.repos = Mock( |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
48 get_node=lambda path, rev=None: Mock(get_history=lambda: [], |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
49 isdir=True), |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
50 normalize_path=lambda path: path, |
562
a8c84285e67a
Complete rights restrictions for build configs etc - see #384. Also enhance tests to work with this code (but don't yet check that rights are restricted properly)
dfraser
parents:
528
diff
changeset
|
51 sync=lambda: None, |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
52 ) |
562
a8c84285e67a
Complete rights restrictions for build configs etc - see #384. Also enhance tests to work with this code (but don't yet check that rights are restricted properly)
dfraser
parents:
528
diff
changeset
|
53 self.repos.authz = Mock(has_permission=lambda path: True, assert_permission=lambda path: None) |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
54 self.env.get_repository = lambda authname=None: self.repos |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
55 |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
56 def tearDown(self): |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
57 shutil.rmtree(self.env.path) |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
58 |
575
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
59 |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
60 class BuildConfigControllerTestCase(AbstractWebUITestCase): |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
61 |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
62 def test_overview(self): |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
63 PermissionSystem(self.env).grant_permission('joe', 'BUILD_VIEW') |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
64 req = Mock(method='GET', base_path='', cgi_location='', |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
65 path_info='/build', href=Href('/trac'), args={}, chrome={}, |
562
a8c84285e67a
Complete rights restrictions for build configs etc - see #384. Also enhance tests to work with this code (but don't yet check that rights are restricted properly)
dfraser
parents:
528
diff
changeset
|
66 perm=PermissionCache(self.env, 'joe'), authname='joe') |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
67 |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
68 module = BuildConfigController(self.env) |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
69 assert module.match_request(req) |
503
a7c795920c4a
Merging trac-0.11 branch to trunk. This revision is equivalent to [571].
wbell
parents:
458
diff
changeset
|
70 _, data, _ = module.process_request(req) |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
71 |
503
a7c795920c4a
Merging trac-0.11 branch to trunk. This revision is equivalent to [571].
wbell
parents:
458
diff
changeset
|
72 self.assertEqual('overview', data['page_mode']) |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
73 |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
74 def test_view_config(self): |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
75 config = BuildConfig(self.env, name='test', path='trunk') |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
76 config.insert() |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
77 platform = TargetPlatform(self.env, config='test', name='any') |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
78 platform.insert() |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
79 |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
80 PermissionSystem(self.env).grant_permission('joe', 'BUILD_VIEW') |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
81 req = Mock(method='GET', base_path='', cgi_location='', |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
82 path_info='/build/test', href=Href('/trac'), args={}, |
503
a7c795920c4a
Merging trac-0.11 branch to trunk. This revision is equivalent to [571].
wbell
parents:
458
diff
changeset
|
83 chrome={}, authname='joe', |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
84 perm=PermissionCache(self.env, 'joe')) |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
85 |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
86 root = Mock(get_entries=lambda: ['foo'], |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
87 get_history=lambda: [('trunk', rev, 'edit') for rev in |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
88 range(123, 111, -1)]) |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
89 self.repos = Mock(get_node=lambda path, rev=None: root, |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
90 sync=lambda: None, normalize_path=lambda path: path) |
562
a8c84285e67a
Complete rights restrictions for build configs etc - see #384. Also enhance tests to work with this code (but don't yet check that rights are restricted properly)
dfraser
parents:
528
diff
changeset
|
91 self.repos.authz = Mock(has_permission=lambda path: True, assert_permission=lambda path: None) |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
92 |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
93 module = BuildConfigController(self.env) |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
94 assert module.match_request(req) |
503
a7c795920c4a
Merging trac-0.11 branch to trunk. This revision is equivalent to [571].
wbell
parents:
458
diff
changeset
|
95 _, data, _ = module.process_request(req) |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
96 |
503
a7c795920c4a
Merging trac-0.11 branch to trunk. This revision is equivalent to [571].
wbell
parents:
458
diff
changeset
|
97 self.assertEqual('view_config', data['page_mode']) |
a7c795920c4a
Merging trac-0.11 branch to trunk. This revision is equivalent to [571].
wbell
parents:
458
diff
changeset
|
98 assert not 'next' in req.chrome['links'] |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
99 |
629
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
100 from trac.resource import Resource |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
101 self.assertEquals(Resource('build', 'test'), data['context'].resource) |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
102 |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
103 self.assertEquals([], data['config']['attachments']['attachments']) |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
104 self.assertEquals('/trac/attachment/build/test/', |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
105 data['config']['attachments']['attach_href']) |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
106 |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
107 def test_view_config_paging(self): |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
108 config = BuildConfig(self.env, name='test', path='trunk') |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
109 config.insert() |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
110 platform = TargetPlatform(self.env, config='test', name='any') |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
111 platform.insert() |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
112 |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
113 PermissionSystem(self.env).grant_permission('joe', 'BUILD_VIEW') |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
114 req = Mock(method='GET', base_path='', cgi_location='', |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
115 path_info='/build/test', href=Href('/trac'), args={}, |
503
a7c795920c4a
Merging trac-0.11 branch to trunk. This revision is equivalent to [571].
wbell
parents:
458
diff
changeset
|
116 chrome={}, authname='joe', |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
117 perm=PermissionCache(self.env, 'joe')) |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
118 |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
119 root = Mock(get_entries=lambda: ['foo'], |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
120 get_history=lambda: [('trunk', rev, 'edit') for rev in |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
121 range(123, 110, -1)]) |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
122 self.repos = Mock(get_node=lambda path, rev=None: root, |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
123 sync=lambda: None, normalize_path=lambda path: path) |
562
a8c84285e67a
Complete rights restrictions for build configs etc - see #384. Also enhance tests to work with this code (but don't yet check that rights are restricted properly)
dfraser
parents:
528
diff
changeset
|
124 self.repos.authz = Mock(has_permission=lambda path: True, assert_permission=lambda path: None) |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
125 |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
126 module = BuildConfigController(self.env) |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
127 assert module.match_request(req) |
503
a7c795920c4a
Merging trac-0.11 branch to trunk. This revision is equivalent to [571].
wbell
parents:
458
diff
changeset
|
128 _, data, _ = module.process_request(req) |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
129 |
503
a7c795920c4a
Merging trac-0.11 branch to trunk. This revision is equivalent to [571].
wbell
parents:
458
diff
changeset
|
130 if req.chrome: |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
131 self.assertEqual('/trac/build/test?page=2', |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
132 req.chrome['links']['next'][0]['href']) |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
133 |
575
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
134 def test_raise_404(self): |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
135 PermissionSystem(self.env).grant_permission('joe', 'BUILD_VIEW') |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
136 module = BuildConfigController(self.env) |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
137 req = Mock(method='GET', base_path='', cgi_location='', |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
138 path_info='/build/nonexisting', href=Href('/trac'), args={}, |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
139 chrome={}, authname='joe', |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
140 perm=PermissionCache(self.env, 'joe')) |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
141 self.failUnless(module.match_request(req)) |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
142 try: |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
143 module.process_request(req) |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
144 except Exception, e: |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
145 self.failUnless(isinstance(e, HTTPNotFound)) |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
146 self.assertEquals(str(e), "404 Not Found (Build configuration " |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
147 "'nonexisting' does not exist.)") |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
148 return |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
149 self.fail("This should have raised HTTPNotFound") |
439 | 150 |
151 | |
575
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
152 class BuildControllerTestCase(AbstractWebUITestCase): |
439 | 153 |
629
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
154 def test_view_build(self): |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
155 config = BuildConfig(self.env, name='test', path='trunk') |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
156 config.insert() |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
157 platform = TargetPlatform(self.env, config='test', name='any') |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
158 platform.insert() |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
159 build = Build(self.env, config='test', platform=1, rev=123, rev_time=42, |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
160 status=Build.SUCCESS, slave='hal') |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
161 build.insert() |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
162 |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
163 PermissionSystem(self.env).grant_permission('joe', 'BUILD_VIEW') |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
164 req = Mock(method='GET', base_path='', cgi_location='', |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
165 path_info='/build/test/1', href=Href('/trac'), args={}, |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
166 chrome={}, authname='joe', |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
167 perm=PermissionCache(self.env, 'joe')) |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
168 |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
169 root = Mock(get_entries=lambda: ['foo'], |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
170 get_history=lambda: [('trunk', rev, 'edit') for rev in |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
171 range(123, 111, -1)]) |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
172 self.repos = Mock(get_node=lambda path, rev=None: root, |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
173 sync=lambda: None, |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
174 normalize_path=lambda path: path, |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
175 get_changeset=lambda rev: Mock(author='joe')) |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
176 self.repos.authz = Mock(has_permission=lambda path: True, assert_permission=lambda path: None) |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
177 |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
178 module = BuildController(self.env) |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
179 assert module.match_request(req) |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
180 _, data, _ = module.process_request(req) |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
181 |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
182 self.assertEqual('view_build', data['page_mode']) |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
183 |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
184 from trac.resource import Resource |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
185 self.assertEquals(Resource('build', 'test/1'), data['context'].resource) |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
186 |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
187 self.assertEquals([], data['build']['attachments']['attachments']) |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
188 self.assertEquals('/trac/attachment/build/test/1/', |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
189 data['build']['attachments']['attach_href']) |
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
190 |
575
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
191 def test_raise_404(self): |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
192 PermissionSystem(self.env).grant_permission('joe', 'BUILD_VIEW') |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
193 module = BuildController(self.env) |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
194 config = BuildConfig(self.env, name='existing', path='trunk') |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
195 config.insert() |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
196 req = Mock(method='GET', base_path='', cgi_location='', |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
197 path_info='/build/existing/42', href=Href('/trac'), args={}, |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
198 chrome={}, authname='joe', |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
199 perm=PermissionCache(self.env, 'joe')) |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
200 self.failUnless(module.match_request(req)) |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
201 try: |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
202 module.process_request(req) |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
203 except Exception, e: |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
204 self.failUnless(isinstance(e, HTTPNotFound)) |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
205 self.assertEquals(str(e), |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
206 "404 Not Found (Build '42' does not exist.)") |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
207 return |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
208 self.fail("This should have raised HTTPNotFound") |
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
209 |
629
f3bb52da9e3c
0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build.
osimons
parents:
593
diff
changeset
|
210 |
575
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
211 class SourceFileLinkFormatterTestCase(AbstractWebUITestCase): |
439 | 212 |
213 def test_format_simple_link_in_repos(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 self.repos.get_node = lambda path, rev: (path, rev) | |
223 | |
224 req = Mock(method='GET', href=Href('/trac'), authname='hal') | |
225 comp = SourceFileLinkFormatter(self.env) | |
226 formatter = comp.get_formatter(req, build) | |
227 | |
593
99831ab37fd3
0.6dev: Making source-linking work also for Windows-style file references (as output by Windows slaves). Thanks to Doug Patterson for updated regexp.
osimons
parents:
575
diff
changeset
|
228 # posix |
440
e660687ac89c
Follow-up fix to [486]: trailing chars in auto-linked log messages was getting removed.
cmlenz
parents:
439
diff
changeset
|
229 output = formatter(step, None, None, u'error in foo/bar.c: bad') |
439 | 230 self.assertEqual(Markup, type(output)) |
231 self.assertEqual('error in <a href="/trac/browser/trunk/foo/bar.c">' | |
440
e660687ac89c
Follow-up fix to [486]: trailing chars in auto-linked log messages was getting removed.
cmlenz
parents:
439
diff
changeset
|
232 'foo/bar.c</a>: bad', output) |
593
99831ab37fd3
0.6dev: Making source-linking work also for Windows-style file references (as output by Windows slaves). Thanks to Doug Patterson for updated regexp.
osimons
parents:
575
diff
changeset
|
233 # windows |
99831ab37fd3
0.6dev: Making source-linking work also for Windows-style file references (as output by Windows slaves). Thanks to Doug Patterson for updated regexp.
osimons
parents:
575
diff
changeset
|
234 output = formatter(step, None, None, u'error in foo\\win.c: bad') |
99831ab37fd3
0.6dev: Making source-linking work also for Windows-style file references (as output by Windows slaves). Thanks to Doug Patterson for updated regexp.
osimons
parents:
575
diff
changeset
|
235 self.assertEqual(Markup, type(output)) |
99831ab37fd3
0.6dev: Making source-linking work also for Windows-style file references (as output by Windows slaves). Thanks to Doug Patterson for updated regexp.
osimons
parents:
575
diff
changeset
|
236 self.assertEqual(r'error in <a href="/trac/browser/trunk/foo/win.c">' |
99831ab37fd3
0.6dev: Making source-linking work also for Windows-style file references (as output by Windows slaves). Thanks to Doug Patterson for updated regexp.
osimons
parents:
575
diff
changeset
|
237 'foo\win.c</a>: bad', output) |
439 | 238 |
528
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
239 def test_format_bad_links(self): |
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
240 BuildConfig(self.env, name='test', path='trunk').insert() |
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
241 build = Build(self.env, config='test', platform=1, rev=123, rev_time=42, |
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
242 status=Build.SUCCESS, slave='hal') |
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
243 build.insert() |
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
244 step = BuildStep(self.env, build=build.id, name='foo', |
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
245 status=BuildStep.SUCCESS) |
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
246 step.insert() |
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
247 |
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
248 self.repos.get_node = lambda path, rev: (path, rev) |
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
249 |
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
250 req = Mock(method='GET', href=Href('/trac'), authname='hal') |
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
251 comp = SourceFileLinkFormatter(self.env) |
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
252 formatter = comp.get_formatter(req, build) |
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
253 |
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
254 output = formatter(step, None, None, u'Linking -I../.. with ../libtool') |
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
255 self.assertEqual(Markup, type(output)) |
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
256 self.assertEqual('Linking -I../.. with ../libtool', output) |
f3bf55de8a34
Prevent path highlighting from passing non-canonical paths to svn:
dfraser
parents:
503
diff
changeset
|
257 |
439 | 258 def test_format_simple_link_not_in_repos(self): |
259 BuildConfig(self.env, name='test', path='trunk').insert() | |
260 build = Build(self.env, config='test', platform=1, rev=123, rev_time=42, | |
261 status=Build.SUCCESS, slave='hal') | |
262 build.insert() | |
263 step = BuildStep(self.env, build=build.id, name='foo', | |
264 status=BuildStep.SUCCESS) | |
265 step.insert() | |
266 | |
267 def _raise(): | |
268 raise TracError('No such node') | |
269 self.repos.get_node = lambda path, rev: _raise() | |
270 | |
271 req = Mock(method='GET', href=Href('/trac'), authname='hal') | |
272 comp = SourceFileLinkFormatter(self.env) | |
273 formatter = comp.get_formatter(req, build) | |
274 | |
440
e660687ac89c
Follow-up fix to [486]: trailing chars in auto-linked log messages was getting removed.
cmlenz
parents:
439
diff
changeset
|
275 output = formatter(step, None, None, u'error in foo/bar.c: bad') |
439 | 276 self.assertEqual(Markup, type(output)) |
440
e660687ac89c
Follow-up fix to [486]: trailing chars in auto-linked log messages was getting removed.
cmlenz
parents:
439
diff
changeset
|
277 self.assertEqual('error in foo/bar.c: bad', output) |
439 | 278 |
279 def test_format_link_in_repos_with_line(self): | |
280 BuildConfig(self.env, name='test', path='trunk').insert() | |
281 build = Build(self.env, config='test', platform=1, rev=123, rev_time=42, | |
282 status=Build.SUCCESS, slave='hal') | |
283 build.insert() | |
284 step = BuildStep(self.env, build=build.id, name='foo', | |
285 status=BuildStep.SUCCESS) | |
286 step.insert() | |
287 | |
288 self.repos.get_node = lambda path, rev: (path, rev) | |
289 | |
290 req = Mock(method='GET', href=Href('/trac'), authname='hal') | |
291 comp = SourceFileLinkFormatter(self.env) | |
292 formatter = comp.get_formatter(req, build) | |
293 | |
593
99831ab37fd3
0.6dev: Making source-linking work also for Windows-style file references (as output by Windows slaves). Thanks to Doug Patterson for updated regexp.
osimons
parents:
575
diff
changeset
|
294 # posix |
440
e660687ac89c
Follow-up fix to [486]: trailing chars in auto-linked log messages was getting removed.
cmlenz
parents:
439
diff
changeset
|
295 output = formatter(step, None, None, u'error in foo/bar.c:123: bad') |
439 | 296 self.assertEqual(Markup, type(output)) |
297 self.assertEqual('error in <a href="/trac/browser/trunk/foo/bar.c#L123">' | |
440
e660687ac89c
Follow-up fix to [486]: trailing chars in auto-linked log messages was getting removed.
cmlenz
parents:
439
diff
changeset
|
298 'foo/bar.c:123</a>: bad', output) |
593
99831ab37fd3
0.6dev: Making source-linking work also for Windows-style file references (as output by Windows slaves). Thanks to Doug Patterson for updated regexp.
osimons
parents:
575
diff
changeset
|
299 # windows |
99831ab37fd3
0.6dev: Making source-linking work also for Windows-style file references (as output by Windows slaves). Thanks to Doug Patterson for updated regexp.
osimons
parents:
575
diff
changeset
|
300 output = formatter(step, None, None, u'error in foo\\win.c:123: bad') |
99831ab37fd3
0.6dev: Making source-linking work also for Windows-style file references (as output by Windows slaves). Thanks to Doug Patterson for updated regexp.
osimons
parents:
575
diff
changeset
|
301 self.assertEqual(Markup, type(output)) |
99831ab37fd3
0.6dev: Making source-linking work also for Windows-style file references (as output by Windows slaves). Thanks to Doug Patterson for updated regexp.
osimons
parents:
575
diff
changeset
|
302 self.assertEqual(r'error in <a href="/trac/browser/trunk/foo/win.c#L123">' |
99831ab37fd3
0.6dev: Making source-linking work also for Windows-style file references (as output by Windows slaves). Thanks to Doug Patterson for updated regexp.
osimons
parents:
575
diff
changeset
|
303 'foo\win.c:123</a>: bad', output) |
439 | 304 |
305 def test_format_link_not_in_repos_with_line(self): | |
306 BuildConfig(self.env, name='test', path='trunk').insert() | |
307 build = Build(self.env, config='test', platform=1, rev=123, rev_time=42, | |
308 status=Build.SUCCESS, slave='hal') | |
309 build.insert() | |
310 step = BuildStep(self.env, build=build.id, name='foo', | |
311 status=BuildStep.SUCCESS) | |
312 step.insert() | |
313 | |
314 def _raise(): | |
315 raise TracError('No such node') | |
316 self.repos.get_node = lambda path, rev: _raise() | |
317 | |
318 req = Mock(method='GET', href=Href('/trac'), authname='hal') | |
319 comp = SourceFileLinkFormatter(self.env) | |
320 formatter = comp.get_formatter(req, build) | |
321 | |
440
e660687ac89c
Follow-up fix to [486]: trailing chars in auto-linked log messages was getting removed.
cmlenz
parents:
439
diff
changeset
|
322 output = formatter(step, None, None, u'error in foo/bar.c:123: bad') |
439 | 323 self.assertEqual(Markup, type(output)) |
440
e660687ac89c
Follow-up fix to [486]: trailing chars in auto-linked log messages was getting removed.
cmlenz
parents:
439
diff
changeset
|
324 self.assertEqual('error in foo/bar.c:123: bad', output) |
439 | 325 |
326 | |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
327 def suite(): |
439 | 328 suite = unittest.TestSuite() |
329 suite.addTest(unittest.makeSuite(BuildConfigControllerTestCase, 'test')) | |
575
9ae8f6a95d4b
0.6dev: Adding tests for [645], and also reworked web_ui testcase classes to inherit from an abstract class that contains all the shared `setUp()` and `tearDown()` code.
osimons
parents:
562
diff
changeset
|
330 suite.addTest(unittest.makeSuite(BuildControllerTestCase, 'test')) |
439 | 331 suite.addTest(unittest.makeSuite(SourceFileLinkFormatterTestCase, 'test')) |
332 return suite | |
410
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
333 |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
334 if __name__ == '__main__': |
7930cdd83d13
More restructuring: got rid of the `trac_ext` subpackage, which makes no sense now that the master is also coupled to Trac.
cmlenz
parents:
diff
changeset
|
335 unittest.main(defaultTest='suite') |