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