##// END OF EJS Templates
file tests updates + extended the feed tests
marcink -
r1064:113a8db2 beta
parent child Browse files
Show More
@@ -1,15 +1,22 b''
1 from rhodecode.tests import *
1 from rhodecode.tests import *
2
2
3 class TestFeedController(TestController):
3 class TestFeedController(TestController):
4
4
5 def test_rss(self):
5 def test_rss(self):
6 self.log_user()
6 self.log_user()
7 response = self.app.get(url(controller='feed', action='rss',
7 response = self.app.get(url(controller='feed', action='rss',
8 repo_name=HG_REPO))
8 repo_name=HG_REPO))
9 # Test response...
9
10
11
12 assert response.content_type == "application/rss+xml"
13 assert """<rss version="2.0">""" in response
10
14
11 def test_atom(self):
15 def test_atom(self):
12 self.log_user()
16 self.log_user()
13 response = self.app.get(url(controller='feed', action='atom',
17 response = self.app.get(url(controller='feed', action='atom',
14 repo_name=HG_REPO))
18 repo_name=HG_REPO))
15 # Test response... No newline at end of file
19
20 assert response.content_type == """application/atom+xml"""
21 assert """<?xml version="1.0" encoding="utf-8"?>""" in response
22 assert """<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-us">""" in response
@@ -1,315 +1,314 b''
1 from rhodecode.tests import *
1 from rhodecode.tests import *
2
2
3 ARCHIVE_SPECS = {
3 ARCHIVE_SPECS = {
4 '.tar.bz2': ('application/x-bzip2', 'tbz2', ''),
4 '.tar.bz2': ('application/x-bzip2', 'tbz2', ''),
5 '.tar.gz': ('application/x-gzip', 'tgz', ''),
5 '.tar.gz': ('application/x-gzip', 'tgz', ''),
6 '.zip': ('application/zip', 'zip', ''),
6 '.zip': ('application/zip', 'zip', ''),
7 }
7 }
8
8
9 class TestFilesController(TestController):
9 class TestFilesController(TestController):
10
10
11 def test_index(self):
11 def test_index(self):
12 self.log_user()
12 self.log_user()
13 response = self.app.get(url(controller='files', action='index',
13 response = self.app.get(url(controller='files', action='index',
14 repo_name=HG_REPO,
14 repo_name=HG_REPO,
15 revision='tip',
15 revision='tip',
16 f_path='/'))
16 f_path='/'))
17 # Test response...
17 # Test response...
18 assert '<a class="browser-dir" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/docs">docs</a>' in response.body, 'missing dir'
18 assert '<a class="browser-dir" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/docs">docs</a>' in response.body, 'missing dir'
19 assert '<a class="browser-dir" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/tests">tests</a>' in response.body, 'missing dir'
19 assert '<a class="browser-dir" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/tests">tests</a>' in response.body, 'missing dir'
20 assert '<a class="browser-dir" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/vcs">vcs</a>' in response.body, 'missing dir'
20 assert '<a class="browser-dir" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/vcs">vcs</a>' in response.body, 'missing dir'
21 assert '<a class="browser-file" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/.hgignore">.hgignore</a>' in response.body, 'missing file'
21 assert '<a class="browser-file" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/.hgignore">.hgignore</a>' in response.body, 'missing file'
22 assert '<a class="browser-file" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/MANIFEST.in">MANIFEST.in</a>' in response.body, 'missing file'
22 assert '<a class="browser-file" href="/vcs_test_hg/files/27cd5cce30c96924232dffcd24178a07ffeb5dfc/MANIFEST.in">MANIFEST.in</a>' in response.body, 'missing file'
23
23
24
24
25 def test_index_revision(self):
25 def test_index_revision(self):
26 self.log_user()
26 self.log_user()
27
27
28 response = self.app.get(url(controller='files', action='index',
28 response = self.app.get(url(controller='files', action='index',
29 repo_name=HG_REPO,
29 repo_name=HG_REPO,
30 revision='7ba66bec8d6dbba14a2155be32408c435c5f4492',
30 revision='7ba66bec8d6dbba14a2155be32408c435c5f4492',
31 f_path='/'))
31 f_path='/'))
32
32
33
33
34
34
35 #Test response...
35 #Test response...
36
36
37 assert '<a class="browser-dir" href="/vcs_test_hg/files/7ba66bec8d6dbba14a2155be32408c435c5f4492/docs">docs</a>' in response.body, 'missing dir'
37 assert '<a class="browser-dir" href="/vcs_test_hg/files/7ba66bec8d6dbba14a2155be32408c435c5f4492/docs">docs</a>' in response.body, 'missing dir'
38 assert '<a class="browser-dir" href="/vcs_test_hg/files/7ba66bec8d6dbba14a2155be32408c435c5f4492/tests">tests</a>' in response.body, 'missing dir'
38 assert '<a class="browser-dir" href="/vcs_test_hg/files/7ba66bec8d6dbba14a2155be32408c435c5f4492/tests">tests</a>' in response.body, 'missing dir'
39 assert '<a class="browser-file" href="/vcs_test_hg/files/7ba66bec8d6dbba14a2155be32408c435c5f4492/README.rst">README.rst</a>' in response.body, 'missing file'
39 assert '<a class="browser-file" href="/vcs_test_hg/files/7ba66bec8d6dbba14a2155be32408c435c5f4492/README.rst">README.rst</a>' in response.body, 'missing file'
40 assert '1.1 KiB' in response.body, 'missing size of setup.py'
40 assert '1.1 KiB' in response.body, 'missing size of setup.py'
41 assert 'text/x-python' in response.body, 'missing mimetype of setup.py'
41 assert 'text/x-python' in response.body, 'missing mimetype of setup.py'
42
42
43
43
44
44
45 def test_index_different_branch(self):
45 def test_index_different_branch(self):
46 self.log_user()
46 self.log_user()
47
47
48 response = self.app.get(url(controller='files', action='index',
48 response = self.app.get(url(controller='files', action='index',
49 repo_name=HG_REPO,
49 repo_name=HG_REPO,
50 revision='97e8b885c04894463c51898e14387d80c30ed1ee',
50 revision='97e8b885c04894463c51898e14387d80c30ed1ee',
51 f_path='/'))
51 f_path='/'))
52
52
53
53
54
54
55 assert """<span style="text-transform: uppercase;"><a href="#">branch: git</a></span>""" in response.body, 'missing or wrong branch info'
55 assert """<span style="text-transform: uppercase;"><a href="#">branch: git</a></span>""" in response.body, 'missing or wrong branch info'
56
56
57
57
58
58
59 def test_index_paging(self):
59 def test_index_paging(self):
60 self.log_user()
60 self.log_user()
61
61
62 for r in [(73, 'a066b25d5df7016b45a41b7e2a78c33b57adc235'),
62 for r in [(73, 'a066b25d5df7016b45a41b7e2a78c33b57adc235'),
63 (92, 'cc66b61b8455b264a7a8a2d8ddc80fcfc58c221e'),
63 (92, 'cc66b61b8455b264a7a8a2d8ddc80fcfc58c221e'),
64 (109, '75feb4c33e81186c87eac740cee2447330288412'),
64 (109, '75feb4c33e81186c87eac740cee2447330288412'),
65 (1, '3d8f361e72ab303da48d799ff1ac40d5ac37c67e'),
65 (1, '3d8f361e72ab303da48d799ff1ac40d5ac37c67e'),
66 (0, 'b986218ba1c9b0d6a259fac9b050b1724ed8e545')]:
66 (0, 'b986218ba1c9b0d6a259fac9b050b1724ed8e545')]:
67
67
68 response = self.app.get(url(controller='files', action='index',
68 response = self.app.get(url(controller='files', action='index',
69 repo_name=HG_REPO,
69 repo_name=HG_REPO,
70 revision=r[1],
70 revision=r[1],
71 f_path='/'))
71 f_path='/'))
72
72
73 assert """@ r%s:%s""" % (r[0], r[1][:12]) in response.body, 'missing info about current revision'
73 assert """@ r%s:%s""" % (r[0], r[1][:12]) in response.body, 'missing info about current revision'
74
74
75 def test_file_source(self):
75 def test_file_source(self):
76 self.log_user()
76 self.log_user()
77 response = self.app.get(url(controller='files', action='index',
77 response = self.app.get(url(controller='files', action='index',
78 repo_name=HG_REPO,
78 repo_name=HG_REPO,
79 revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc',
79 revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc',
80 f_path='vcs/nodes.py'))
80 f_path='vcs/nodes.py'))
81
81
82 #test or history
82 #test or history
83 assert """<optgroup label="Changesets">
83 assert """<optgroup label="Changesets">
84 <option selected="selected" value="8911406ad776fdd3d0b9932a2e89677e57405a48">r167:8911406ad776</option>
84 <option selected="selected" value="8911406ad776fdd3d0b9932a2e89677e57405a48">r167:8911406ad776</option>
85 <option value="aa957ed78c35a1541f508d2ec90e501b0a9e3167">r165:aa957ed78c35</option>
85 <option value="aa957ed78c35a1541f508d2ec90e501b0a9e3167">r165:aa957ed78c35</option>
86 <option value="48e11b73e94c0db33e736eaeea692f990cb0b5f1">r140:48e11b73e94c</option>
86 <option value="48e11b73e94c0db33e736eaeea692f990cb0b5f1">r140:48e11b73e94c</option>
87 <option value="adf3cbf483298563b968a6c673cd5bde5f7d5eea">r126:adf3cbf48329</option>
87 <option value="adf3cbf483298563b968a6c673cd5bde5f7d5eea">r126:adf3cbf48329</option>
88 <option value="6249fd0fb2cfb1411e764129f598e2cf0de79a6f">r113:6249fd0fb2cf</option>
88 <option value="6249fd0fb2cfb1411e764129f598e2cf0de79a6f">r113:6249fd0fb2cf</option>
89 <option value="75feb4c33e81186c87eac740cee2447330288412">r109:75feb4c33e81</option>
89 <option value="75feb4c33e81186c87eac740cee2447330288412">r109:75feb4c33e81</option>
90 <option value="9a4dc232ecdc763ef2e98ae2238cfcbba4f6ad8d">r108:9a4dc232ecdc</option>
90 <option value="9a4dc232ecdc763ef2e98ae2238cfcbba4f6ad8d">r108:9a4dc232ecdc</option>
91 <option value="595cce4efa21fda2f2e4eeb4fe5f2a6befe6fa2d">r107:595cce4efa21</option>
91 <option value="595cce4efa21fda2f2e4eeb4fe5f2a6befe6fa2d">r107:595cce4efa21</option>
92 <option value="4a8bd421fbc2dfbfb70d85a3fe064075ab2c49da">r104:4a8bd421fbc2</option>
92 <option value="4a8bd421fbc2dfbfb70d85a3fe064075ab2c49da">r104:4a8bd421fbc2</option>
93 <option value="57be63fc8f85e65a0106a53187f7316f8c487ffa">r102:57be63fc8f85</option>
93 <option value="57be63fc8f85e65a0106a53187f7316f8c487ffa">r102:57be63fc8f85</option>
94 <option value="5530bd87f7e2e124a64d07cb2654c997682128be">r101:5530bd87f7e2</option>
94 <option value="5530bd87f7e2e124a64d07cb2654c997682128be">r101:5530bd87f7e2</option>
95 <option value="e516008b1c93f142263dc4b7961787cbad654ce1">r99:e516008b1c93</option>
95 <option value="e516008b1c93f142263dc4b7961787cbad654ce1">r99:e516008b1c93</option>
96 <option value="41f43fc74b8b285984554532eb105ac3be5c434f">r93:41f43fc74b8b</option>
96 <option value="41f43fc74b8b285984554532eb105ac3be5c434f">r93:41f43fc74b8b</option>
97 <option value="cc66b61b8455b264a7a8a2d8ddc80fcfc58c221e">r92:cc66b61b8455</option>
97 <option value="cc66b61b8455b264a7a8a2d8ddc80fcfc58c221e">r92:cc66b61b8455</option>
98 <option value="73ab5b616b3271b0518682fb4988ce421de8099f">r91:73ab5b616b32</option>
98 <option value="73ab5b616b3271b0518682fb4988ce421de8099f">r91:73ab5b616b32</option>
99 <option value="e0da75f308c0f18f98e9ce6257626009fdda2b39">r82:e0da75f308c0</option>
99 <option value="e0da75f308c0f18f98e9ce6257626009fdda2b39">r82:e0da75f308c0</option>
100 <option value="fb2e41e0f0810be4d7103bc2a4c7be16ee3ec611">r81:fb2e41e0f081</option>
100 <option value="fb2e41e0f0810be4d7103bc2a4c7be16ee3ec611">r81:fb2e41e0f081</option>
101 <option value="602ae2f5e7ade70b3b66a58cdd9e3e613dc8a028">r76:602ae2f5e7ad</option>
101 <option value="602ae2f5e7ade70b3b66a58cdd9e3e613dc8a028">r76:602ae2f5e7ad</option>
102 <option value="a066b25d5df7016b45a41b7e2a78c33b57adc235">r73:a066b25d5df7</option>
102 <option value="a066b25d5df7016b45a41b7e2a78c33b57adc235">r73:a066b25d5df7</option>
103 <option value="637a933c905958ce5151f154147c25c1c7b68832">r61:637a933c9059</option>
103 <option value="637a933c905958ce5151f154147c25c1c7b68832">r61:637a933c9059</option>
104 <option value="0c21004effeb8ce2d2d5b4a8baf6afa8394b6fbc">r60:0c21004effeb</option>
104 <option value="0c21004effeb8ce2d2d5b4a8baf6afa8394b6fbc">r60:0c21004effeb</option>
105 <option value="a1f39c56d3f1d52d5fb5920370a2a2716cd9a444">r59:a1f39c56d3f1</option>
105 <option value="a1f39c56d3f1d52d5fb5920370a2a2716cd9a444">r59:a1f39c56d3f1</option>
106 <option value="97d32df05c715a3bbf936bf3cc4e32fb77fe1a7f">r58:97d32df05c71</option>
106 <option value="97d32df05c715a3bbf936bf3cc4e32fb77fe1a7f">r58:97d32df05c71</option>
107 <option value="08eaf14517718dccea4b67755a93368341aca919">r57:08eaf1451771</option>
107 <option value="08eaf14517718dccea4b67755a93368341aca919">r57:08eaf1451771</option>
108 <option value="22f71ad265265a53238359c883aa976e725aa07d">r56:22f71ad26526</option>
108 <option value="22f71ad265265a53238359c883aa976e725aa07d">r56:22f71ad26526</option>
109 <option value="97501f02b7b4330924b647755663a2d90a5e638d">r49:97501f02b7b4</option>
109 <option value="97501f02b7b4330924b647755663a2d90a5e638d">r49:97501f02b7b4</option>
110 <option value="86ede6754f2b27309452bb11f997386ae01d0e5a">r47:86ede6754f2b</option>
110 <option value="86ede6754f2b27309452bb11f997386ae01d0e5a">r47:86ede6754f2b</option>
111 <option value="014c40c0203c423dc19ecf94644f7cac9d4cdce0">r45:014c40c0203c</option>
111 <option value="014c40c0203c423dc19ecf94644f7cac9d4cdce0">r45:014c40c0203c</option>
112 <option value="ee87846a61c12153b51543bf860e1026c6d3dcba">r30:ee87846a61c1</option>
112 <option value="ee87846a61c12153b51543bf860e1026c6d3dcba">r30:ee87846a61c1</option>
113 <option value="9bb326a04ae5d98d437dece54be04f830cf1edd9">r26:9bb326a04ae5</option>
113 <option value="9bb326a04ae5d98d437dece54be04f830cf1edd9">r26:9bb326a04ae5</option>
114 <option value="536c1a19428381cfea92ac44985304f6a8049569">r24:536c1a194283</option>
114 <option value="536c1a19428381cfea92ac44985304f6a8049569">r24:536c1a194283</option>
115 <option value="dc5d2c0661b61928834a785d3e64a3f80d3aad9c">r8:dc5d2c0661b6</option>
115 <option value="dc5d2c0661b61928834a785d3e64a3f80d3aad9c">r8:dc5d2c0661b6</option>
116 <option value="3803844fdbd3b711175fc3da9bdacfcd6d29a6fb">r7:3803844fdbd3</option>
116 <option value="3803844fdbd3b711175fc3da9bdacfcd6d29a6fb">r7:3803844fdbd3</option>
117 </optgroup>
117 </optgroup>
118 <optgroup label="Branches">
118 <optgroup label="Branches">
119 <option value="27cd5cce30c96924232dffcd24178a07ffeb5dfc">default</option>
119 <option value="27cd5cce30c96924232dffcd24178a07ffeb5dfc">default</option>
120 <option value="97e8b885c04894463c51898e14387d80c30ed1ee">git</option>
120 <option value="97e8b885c04894463c51898e14387d80c30ed1ee">git</option>
121 <option value="2e6a2bf9356ca56df08807f4ad86d480da72a8f4">web</option>
121 <option value="2e6a2bf9356ca56df08807f4ad86d480da72a8f4">web</option>
122 </optgroup>
122 </optgroup>
123 <optgroup label="Tags">
123 <optgroup label="Tags">
124 <option value="27cd5cce30c96924232dffcd24178a07ffeb5dfc">tip</option>
124 <option value="27cd5cce30c96924232dffcd24178a07ffeb5dfc">tip</option>
125 <option value="fd4bdb5e9b2a29b4393a4ac6caef48c17ee1a200">0.1.4</option>
125 <option value="fd4bdb5e9b2a29b4393a4ac6caef48c17ee1a200">0.1.4</option>
126 <option value="17544fbfcd33ffb439e2b728b5d526b1ef30bfcf">0.1.3</option>
126 <option value="17544fbfcd33ffb439e2b728b5d526b1ef30bfcf">0.1.3</option>
127 <option value="a7e60bff65d57ac3a1a1ce3b12a70f8a9e8a7720">0.1.2</option>
127 <option value="a7e60bff65d57ac3a1a1ce3b12a70f8a9e8a7720">0.1.2</option>
128 <option value="eb3a60fc964309c1a318b8dfe26aa2d1586c85ae">0.1.1</option>
128 <option value="eb3a60fc964309c1a318b8dfe26aa2d1586c85ae">0.1.1</option>
129 </optgroup>""" in response.body
129 </optgroup>""" in response.body
130
130
131
131
132 assert """<div class="commit">"Partially implemented #16. filecontent/commit message/author/node name are safe_unicode now.
132 assert """<div class="commit">"Partially implemented #16. filecontent/commit message/author/node name are safe_unicode now.
133 In addition some other __str__ are unicode as well
133 In addition some other __str__ are unicode as well
134 Added test for unicode
134 Added test for unicode
135 Improved test to clone into uniq repository.
135 Improved test to clone into uniq repository.
136 removed extra unicode conversion in diff."</div>""" in response.body
136 removed extra unicode conversion in diff."</div>""" in response.body
137
137
138 assert """<span style="text-transform: uppercase;"><a href="#">branch: default</a></span>""" in response.body, 'missing or wrong branch info'
138 assert """<span style="text-transform: uppercase;"><a href="#">branch: default</a></span>""" in response.body, 'missing or wrong branch info'
139
139
140 def test_file_annotation(self):
140 def test_file_annotation(self):
141 self.log_user()
141 self.log_user()
142 response = self.app.get(url(controller='files', action='annotate',
142 response = self.app.get(url(controller='files', action='annotate',
143 repo_name=HG_REPO,
143 repo_name=HG_REPO,
144 revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc',
144 revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc',
145 f_path='vcs/nodes.py'))
145 f_path='vcs/nodes.py'))
146
146
147 print response.body
147 print response.body
148 assert """<optgroup label="Changesets">
148 assert """<optgroup label="Changesets">
149 <option selected="selected" value="8911406ad776fdd3d0b9932a2e89677e57405a48">r167:8911406ad776</option>
149 <option selected="selected" value="8911406ad776fdd3d0b9932a2e89677e57405a48">r167:8911406ad776</option>
150 <option value="aa957ed78c35a1541f508d2ec90e501b0a9e3167">r165:aa957ed78c35</option>
150 <option value="aa957ed78c35a1541f508d2ec90e501b0a9e3167">r165:aa957ed78c35</option>
151 <option value="48e11b73e94c0db33e736eaeea692f990cb0b5f1">r140:48e11b73e94c</option>
151 <option value="48e11b73e94c0db33e736eaeea692f990cb0b5f1">r140:48e11b73e94c</option>
152 <option value="adf3cbf483298563b968a6c673cd5bde5f7d5eea">r126:adf3cbf48329</option>
152 <option value="adf3cbf483298563b968a6c673cd5bde5f7d5eea">r126:adf3cbf48329</option>
153 <option value="6249fd0fb2cfb1411e764129f598e2cf0de79a6f">r113:6249fd0fb2cf</option>
153 <option value="6249fd0fb2cfb1411e764129f598e2cf0de79a6f">r113:6249fd0fb2cf</option>
154 <option value="75feb4c33e81186c87eac740cee2447330288412">r109:75feb4c33e81</option>
154 <option value="75feb4c33e81186c87eac740cee2447330288412">r109:75feb4c33e81</option>
155 <option value="9a4dc232ecdc763ef2e98ae2238cfcbba4f6ad8d">r108:9a4dc232ecdc</option>
155 <option value="9a4dc232ecdc763ef2e98ae2238cfcbba4f6ad8d">r108:9a4dc232ecdc</option>
156 <option value="595cce4efa21fda2f2e4eeb4fe5f2a6befe6fa2d">r107:595cce4efa21</option>
156 <option value="595cce4efa21fda2f2e4eeb4fe5f2a6befe6fa2d">r107:595cce4efa21</option>
157 <option value="4a8bd421fbc2dfbfb70d85a3fe064075ab2c49da">r104:4a8bd421fbc2</option>
157 <option value="4a8bd421fbc2dfbfb70d85a3fe064075ab2c49da">r104:4a8bd421fbc2</option>
158 <option value="57be63fc8f85e65a0106a53187f7316f8c487ffa">r102:57be63fc8f85</option>
158 <option value="57be63fc8f85e65a0106a53187f7316f8c487ffa">r102:57be63fc8f85</option>
159 <option value="5530bd87f7e2e124a64d07cb2654c997682128be">r101:5530bd87f7e2</option>
159 <option value="5530bd87f7e2e124a64d07cb2654c997682128be">r101:5530bd87f7e2</option>
160 <option value="e516008b1c93f142263dc4b7961787cbad654ce1">r99:e516008b1c93</option>
160 <option value="e516008b1c93f142263dc4b7961787cbad654ce1">r99:e516008b1c93</option>
161 <option value="41f43fc74b8b285984554532eb105ac3be5c434f">r93:41f43fc74b8b</option>
161 <option value="41f43fc74b8b285984554532eb105ac3be5c434f">r93:41f43fc74b8b</option>
162 <option value="cc66b61b8455b264a7a8a2d8ddc80fcfc58c221e">r92:cc66b61b8455</option>
162 <option value="cc66b61b8455b264a7a8a2d8ddc80fcfc58c221e">r92:cc66b61b8455</option>
163 <option value="73ab5b616b3271b0518682fb4988ce421de8099f">r91:73ab5b616b32</option>
163 <option value="73ab5b616b3271b0518682fb4988ce421de8099f">r91:73ab5b616b32</option>
164 <option value="e0da75f308c0f18f98e9ce6257626009fdda2b39">r82:e0da75f308c0</option>
164 <option value="e0da75f308c0f18f98e9ce6257626009fdda2b39">r82:e0da75f308c0</option>
165 <option value="fb2e41e0f0810be4d7103bc2a4c7be16ee3ec611">r81:fb2e41e0f081</option>
165 <option value="fb2e41e0f0810be4d7103bc2a4c7be16ee3ec611">r81:fb2e41e0f081</option>
166 <option value="602ae2f5e7ade70b3b66a58cdd9e3e613dc8a028">r76:602ae2f5e7ad</option>
166 <option value="602ae2f5e7ade70b3b66a58cdd9e3e613dc8a028">r76:602ae2f5e7ad</option>
167 <option value="a066b25d5df7016b45a41b7e2a78c33b57adc235">r73:a066b25d5df7</option>
167 <option value="a066b25d5df7016b45a41b7e2a78c33b57adc235">r73:a066b25d5df7</option>
168 <option value="637a933c905958ce5151f154147c25c1c7b68832">r61:637a933c9059</option>
168 <option value="637a933c905958ce5151f154147c25c1c7b68832">r61:637a933c9059</option>
169 <option value="0c21004effeb8ce2d2d5b4a8baf6afa8394b6fbc">r60:0c21004effeb</option>
169 <option value="0c21004effeb8ce2d2d5b4a8baf6afa8394b6fbc">r60:0c21004effeb</option>
170 <option value="a1f39c56d3f1d52d5fb5920370a2a2716cd9a444">r59:a1f39c56d3f1</option>
170 <option value="a1f39c56d3f1d52d5fb5920370a2a2716cd9a444">r59:a1f39c56d3f1</option>
171 <option value="97d32df05c715a3bbf936bf3cc4e32fb77fe1a7f">r58:97d32df05c71</option>
171 <option value="97d32df05c715a3bbf936bf3cc4e32fb77fe1a7f">r58:97d32df05c71</option>
172 <option value="08eaf14517718dccea4b67755a93368341aca919">r57:08eaf1451771</option>
172 <option value="08eaf14517718dccea4b67755a93368341aca919">r57:08eaf1451771</option>
173 <option value="22f71ad265265a53238359c883aa976e725aa07d">r56:22f71ad26526</option>
173 <option value="22f71ad265265a53238359c883aa976e725aa07d">r56:22f71ad26526</option>
174 <option value="97501f02b7b4330924b647755663a2d90a5e638d">r49:97501f02b7b4</option>
174 <option value="97501f02b7b4330924b647755663a2d90a5e638d">r49:97501f02b7b4</option>
175 <option value="86ede6754f2b27309452bb11f997386ae01d0e5a">r47:86ede6754f2b</option>
175 <option value="86ede6754f2b27309452bb11f997386ae01d0e5a">r47:86ede6754f2b</option>
176 <option value="014c40c0203c423dc19ecf94644f7cac9d4cdce0">r45:014c40c0203c</option>
176 <option value="014c40c0203c423dc19ecf94644f7cac9d4cdce0">r45:014c40c0203c</option>
177 <option value="ee87846a61c12153b51543bf860e1026c6d3dcba">r30:ee87846a61c1</option>
177 <option value="ee87846a61c12153b51543bf860e1026c6d3dcba">r30:ee87846a61c1</option>
178 <option value="9bb326a04ae5d98d437dece54be04f830cf1edd9">r26:9bb326a04ae5</option>
178 <option value="9bb326a04ae5d98d437dece54be04f830cf1edd9">r26:9bb326a04ae5</option>
179 <option value="536c1a19428381cfea92ac44985304f6a8049569">r24:536c1a194283</option>
179 <option value="536c1a19428381cfea92ac44985304f6a8049569">r24:536c1a194283</option>
180 <option value="dc5d2c0661b61928834a785d3e64a3f80d3aad9c">r8:dc5d2c0661b6</option>
180 <option value="dc5d2c0661b61928834a785d3e64a3f80d3aad9c">r8:dc5d2c0661b6</option>
181 <option value="3803844fdbd3b711175fc3da9bdacfcd6d29a6fb">r7:3803844fdbd3</option>
181 <option value="3803844fdbd3b711175fc3da9bdacfcd6d29a6fb">r7:3803844fdbd3</option>
182 </optgroup>
182 </optgroup>
183 <optgroup label="Branches">
183 <optgroup label="Branches">
184 <option value="27cd5cce30c96924232dffcd24178a07ffeb5dfc">default</option>
184 <option value="27cd5cce30c96924232dffcd24178a07ffeb5dfc">default</option>
185 <option value="97e8b885c04894463c51898e14387d80c30ed1ee">git</option>
185 <option value="97e8b885c04894463c51898e14387d80c30ed1ee">git</option>
186 <option value="2e6a2bf9356ca56df08807f4ad86d480da72a8f4">web</option>
186 <option value="2e6a2bf9356ca56df08807f4ad86d480da72a8f4">web</option>
187 </optgroup>
187 </optgroup>
188 <optgroup label="Tags">
188 <optgroup label="Tags">
189 <option value="27cd5cce30c96924232dffcd24178a07ffeb5dfc">tip</option>
189 <option value="27cd5cce30c96924232dffcd24178a07ffeb5dfc">tip</option>
190 <option value="fd4bdb5e9b2a29b4393a4ac6caef48c17ee1a200">0.1.4</option>
190 <option value="fd4bdb5e9b2a29b4393a4ac6caef48c17ee1a200">0.1.4</option>
191 <option value="17544fbfcd33ffb439e2b728b5d526b1ef30bfcf">0.1.3</option>
191 <option value="17544fbfcd33ffb439e2b728b5d526b1ef30bfcf">0.1.3</option>
192 <option value="a7e60bff65d57ac3a1a1ce3b12a70f8a9e8a7720">0.1.2</option>
192 <option value="a7e60bff65d57ac3a1a1ce3b12a70f8a9e8a7720">0.1.2</option>
193 <option value="eb3a60fc964309c1a318b8dfe26aa2d1586c85ae">0.1.1</option>
193 <option value="eb3a60fc964309c1a318b8dfe26aa2d1586c85ae">0.1.1</option>
194 </optgroup>""" in response.body, 'missing or wrong history in annotation'
194 </optgroup>""" in response.body, 'missing or wrong history in annotation'
195
195
196 assert """<span style="text-transform: uppercase;"><a href="#">branch: default</a></span>""" in response.body, 'missing or wrong branch info'
196 assert """<span style="text-transform: uppercase;"><a href="#">branch: default</a></span>""" in response.body, 'missing or wrong branch info'
197
197
198
198
199
199
200 def test_archival(self):
200 def test_archival(self):
201 self.log_user()
201 self.log_user()
202
202
203 for arch_ext, info in ARCHIVE_SPECS.items():
203 for arch_ext, info in ARCHIVE_SPECS.items():
204 fname = '27cd5cce30c96924232dffcd24178a07ffeb5dfc%s' % arch_ext
204 fname = '27cd5cce30c96924232dffcd24178a07ffeb5dfc%s' % arch_ext
205 filename = '%s-%s' % (HG_REPO, fname)
205 filename = '%s-%s' % (HG_REPO, fname)
206
206
207 response = self.app.get(url(controller='files', action='archivefile',
207 response = self.app.get(url(controller='files', action='archivefile',
208 repo_name=HG_REPO,
208 repo_name=HG_REPO,
209 fname=fname))
209 fname=fname))
210
210
211 assert response.status == '200 OK', 'wrong response code'
211 assert response.status == '200 OK', 'wrong response code'
212 assert response.response._headers.items() == [('Pragma', 'no-cache'),
212 assert response.response._headers.items() == [('Pragma', 'no-cache'),
213 ('Cache-Control', 'no-cache'),
213 ('Cache-Control', 'no-cache'),
214 ('Content-Type', '%s; charset=utf-8' % info[0]),
214 ('Content-Type', '%s; charset=utf-8' % info[0]),
215 ('Content-Disposition', 'attachment; filename=%s' % filename), ], 'wrong headers'
215 ('Content-Disposition', 'attachment; filename=%s' % filename), ], 'wrong headers'
216
216
217 def test_archival_wrong_ext(self):
217 def test_archival_wrong_ext(self):
218 self.log_user()
218 self.log_user()
219
219
220 for arch_ext in ['tar', 'rar', 'x', '..ax', '.zipz']:
220 for arch_ext in ['tar', 'rar', 'x', '..ax', '.zipz']:
221 fname = '27cd5cce30c96924232dffcd24178a07ffeb5dfc%s' % arch_ext
221 fname = '27cd5cce30c96924232dffcd24178a07ffeb5dfc%s' % arch_ext
222
222
223 response = self.app.get(url(controller='files', action='archivefile',
223 response = self.app.get(url(controller='files', action='archivefile',
224 repo_name=HG_REPO,
224 repo_name=HG_REPO,
225 fname=fname))
225 fname=fname))
226 assert 'Unknown archive type' in response.body
226 assert 'Unknown archive type' in response.body
227
227
228
228
229 def test_archival_wrong_revision(self):
229 def test_archival_wrong_revision(self):
230 self.log_user()
230 self.log_user()
231
231
232 for rev in ['00x000000', 'tar', 'wrong', '@##$@$424213232', '232dffcd']:
232 for rev in ['00x000000', 'tar', 'wrong', '@##$@$424213232', '232dffcd']:
233 fname = '%s.zip' % rev
233 fname = '%s.zip' % rev
234
234
235 response = self.app.get(url(controller='files', action='archivefile',
235 response = self.app.get(url(controller='files', action='archivefile',
236 repo_name=HG_REPO,
236 repo_name=HG_REPO,
237 fname=fname))
237 fname=fname))
238 assert 'Unknown revision' in response.body
238 assert 'Unknown revision' in response.body
239
239
240 #==========================================================================
240 #==========================================================================
241 # RAW FILE
241 # RAW FILE
242 #==========================================================================
242 #==========================================================================
243 def test_raw_file_ok(self):
243 def test_raw_file_ok(self):
244 self.log_user()
244 self.log_user()
245 response = self.app.get(url(controller='files', action='rawfile',
245 response = self.app.get(url(controller='files', action='rawfile',
246 repo_name=HG_REPO,
246 repo_name=HG_REPO,
247 revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc',
247 revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc',
248 f_path='vcs/nodes.py'))
248 f_path='vcs/nodes.py'))
249 #print response.body()
249
250 #assert False
250 assert response.content_disposition == "attachment; filename=nodes.py"
251 #TODO: put in more
251 assert response.content_type == "text/x-python"
252
252
253 def test_raw_file_wrong_cs(self):
253 def test_raw_file_wrong_cs(self):
254 self.log_user()
254 self.log_user()
255 rev = u'ERRORce30c96924232dffcd24178a07ffeb5dfc'
255 rev = u'ERRORce30c96924232dffcd24178a07ffeb5dfc'
256 f_path = 'vcs/nodes.py'
256 f_path = 'vcs/nodes.py'
257
257
258 response = self.app.get(url(controller='files', action='rawfile',
258 response = self.app.get(url(controller='files', action='rawfile',
259 repo_name=HG_REPO,
259 repo_name=HG_REPO,
260 revision=rev,
260 revision=rev,
261 f_path='vcs/nodes.py'))
261 f_path=f_path))
262
262
263 assert """Revision %r does not exist for this repository""" % (rev) in response.session['flash'][0][1], 'No flash message'
263 assert """Revision %r does not exist for this repository""" % (rev) in response.session['flash'][0][1], 'No flash message'
264 assert """%s""" % (HG_REPO) in response.session['flash'][0][1], 'No flash message'
264 assert """%s""" % (HG_REPO) in response.session['flash'][0][1], 'No flash message'
265
265
266
266
267
267
268 def test_raw_file_wrong_f_path(self):
268 def test_raw_file_wrong_f_path(self):
269 self.log_user()
269 self.log_user()
270 rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
270 rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
271 f_path = 'vcs/ERRORnodes.py'
271 f_path = 'vcs/ERRORnodes.py'
272 response = self.app.get(url(controller='files', action='rawfile',
272 response = self.app.get(url(controller='files', action='rawfile',
273 repo_name=HG_REPO,
273 repo_name=HG_REPO,
274 revision=rev,
274 revision=rev,
275 f_path=f_path))
275 f_path=f_path))
276 assert "There is no file nor directory at the given path: %r at revision %r" % (f_path, rev[:12]) in response.session['flash'][0][1], 'No flash message'
276 assert "There is no file nor directory at the given path: %r at revision %r" % (f_path, rev[:12]) in response.session['flash'][0][1], 'No flash message'
277
277
278 #==========================================================================
278 #==========================================================================
279 # RAW
279 # RAW RESPONSE - PLAIN
280 #==========================================================================
280 #==========================================================================
281 def test_raw_ok(self):
281 def test_raw_ok(self):
282 self.log_user()
282 self.log_user()
283 response = self.app.get(url(controller='files', action='raw',
283 response = self.app.get(url(controller='files', action='raw',
284 repo_name=HG_REPO,
284 repo_name=HG_REPO,
285 revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc',
285 revision='27cd5cce30c96924232dffcd24178a07ffeb5dfc',
286 f_path='vcs/nodes.py'))
286 f_path='vcs/nodes.py'))
287 #assert False
287
288 #TODO: put in more
288 assert response.content_type == "text/plain"
289
289
290 def test_raw_wrong_cs(self):
290 def test_raw_wrong_cs(self):
291 self.log_user()
291 self.log_user()
292 rev = u'ERRORcce30c96924232dffcd24178a07ffeb5dfc'
292 rev = u'ERRORcce30c96924232dffcd24178a07ffeb5dfc'
293 f_path = 'vcs/nodes.py'
293 f_path = 'vcs/nodes.py'
294
294
295 response = self.app.get(url(controller='files', action='raw',
295 response = self.app.get(url(controller='files', action='raw',
296 repo_name=HG_REPO,
296 repo_name=HG_REPO,
297 revision=rev,
297 revision=rev,
298 f_path='vcs/nodes.py'))
298 f_path=f_path))
299
299
300 print response.session['flash'][0][1]
301 assert """Revision %r does not exist for this repository""" % (rev) in response.session['flash'][0][1], 'No flash message'
300 assert """Revision %r does not exist for this repository""" % (rev) in response.session['flash'][0][1], 'No flash message'
302 assert """%s""" % (HG_REPO) in response.session['flash'][0][1], 'No flash message'
301 assert """%s""" % (HG_REPO) in response.session['flash'][0][1], 'No flash message'
303
302
304
303
305 def test_raw_wrong_f_path(self):
304 def test_raw_wrong_f_path(self):
306 self.log_user()
305 self.log_user()
307 rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
306 rev = '27cd5cce30c96924232dffcd24178a07ffeb5dfc'
308 f_path = 'vcs/ERRORnodes.py'
307 f_path = 'vcs/ERRORnodes.py'
309 response = self.app.get(url(controller='files', action='raw',
308 response = self.app.get(url(controller='files', action='raw',
310 repo_name=HG_REPO,
309 repo_name=HG_REPO,
311 revision=rev,
310 revision=rev,
312 f_path=f_path))
311 f_path=f_path))
313
312
314 assert "There is no file nor directory at the given path: %r at revision %r" % (f_path, rev[:12]) in response.session['flash'][0][1], 'No flash message'
313 assert "There is no file nor directory at the given path: %r at revision %r" % (f_path, rev[:12]) in response.session['flash'][0][1], 'No flash message'
315
314
General Comments 0
You need to be logged in to leave comments. Login now