Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(232)

Delta Between Two Patch Sets: MoinMoin/util/_tests/test_interwiki.py

Issue 10439044: Interwiki Module Fixed
Left Patch Set: Created 11 years, 9 months ago
Right Patch Set: TODO Removed :| Created 11 years, 9 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
LEFTRIGHT
1 # Copyright: 2010 MoinMoin:ThomasWaldmann 1 # Copyright: 2010 MoinMoin:ThomasWaldmann
2 # Copyright: 2010 MoinMoin:MicheleOrru 2 # Copyright: 2010 MoinMoin:MicheleOrru
3 # License: GNU GPL v2 (or any later version), see LICENSE.txt for details. 3 # License: GNU GPL v2 (or any later version), see LICENSE.txt for details.
4 4
5 """ 5 """
6 MoinMoin - MoinMoin.util.interwiki Tests 6 MoinMoin - MoinMoin.util.interwiki Tests
7 """ 7 """
8 8
9 9
10 from __future__ import absolute_import, division 10 from __future__ import absolute_import, division
(...skipping 10 matching lines...) Expand all
21 from MoinMoin.constants.keys import CURRENT 21 from MoinMoin.constants.keys import CURRENT
22 from MoinMoin.app import before_wiki 22 from MoinMoin.app import before_wiki
23 23
24 24
25 class TestInterWiki(object): 25 class TestInterWiki(object):
26 class Config(wikiconfig.Config): 26 class Config(wikiconfig.Config):
27 interwiki_map = {'Self': 'http://localhost:8080/', 27 interwiki_map = {'Self': 'http://localhost:8080/',
28 'MoinMoin': 'http://moinmo.in/', 28 'MoinMoin': 'http://moinmo.in/',
29 'OtherWiki': 'http://otherwiki.com/', 29 'OtherWiki': 'http://otherwiki.com/',
30 'OtherWiki/ns1': 'http://otherwiki.com/ns1/', 30 'OtherWiki/ns1': 'http://otherwiki.com/ns1/',
31 'OtherWiki/ns1/ns2': 'http://otherwiki.com/ns1/ns2/', 31 'OtherWiki/ns1/ns2': 'http://otherwiki.com/ns1/ns2/',
Thomas.J.Waldmann 2013/06/21 12:36:26 ok, so we are changing interwiki markup also (as i
32 } 32 }
33 33
34 def test_url_for_item(self): 34 def test_url_for_item(self):
35 before_wiki() 35 before_wiki()
36 revid = 'cdc431e0fc624d6fb8372152dcb66457' 36 revid = 'cdc431e0fc624d6fb8372152dcb66457'
37 37
38 tests = [(('SomePage', '', '', '', CURRENT, 'frontend.show_item', False) , '/SomePage'), 38 tests = [(('SomePage', '', '', '', CURRENT, 'frontend.show_item', False) , '/SomePage'),
39 # Method signature to understand the tuple parameters 39 # Method signature to understand the tuple parameters
40 # (item_name, wiki_name='', namespace='', rev=CURRENT, endpoint ='frontend.show_item', _external=False): 40 # (item_name, wiki_name='', namespace='', rev=CURRENT, endpoint ='frontend.show_item', _external=False):
41 (('SomePage', '', '', '', CURRENT, 'frontend.show_item', True), 'http://localhost:8080/SomePage'), 41 (('SomePage', '', '', '', CURRENT, 'frontend.show_item', True), 'http://localhost:8080/SomePage'),
42 (('SomePage', '', '', '', CURRENT, 'frontend.modify_item', Fals e), '/+modify/SomePage'), 42 (('SomePage', '', '', '', CURRENT, 'frontend.modify_item', Fals e), '/+modify/SomePage'),
43 # FIXME if you set interwiki_map = dict(Self='http://localhost: 8080', MoinMoin='http://moinmo.in/', ), 43 # FIXME if you set interwiki_map = dict(Self='http://localhost: 8080', MoinMoin='http://moinmo.in/', ),
44 # the above line make it fails, it returns http://localhost/+mo dify/SomePage 44 # the above line make it fails, it returns http://localhost/+mo dify/SomePage
45 # (('SomePage', '', '', CURRENT, 'frontend.modify_item', True), 'http://localhost:8080/+modify/SomePage'), 45 # (('SomePage', '', '', CURRENT, 'frontend.modify_item', True), 'http://localhost:8080/+modify/SomePage'),
46 (('SomePage', '', 'revid', '', revid, 'frontend.show_item', Fal se), '/+show/+{0}/%40revid/SomePage'.format(revid)), 46 (('SomeRevID', '', 'revid', '', revid, 'frontend.show_item', Fa lse), '/+show/+{0}/%40revid/SomeRevID'.format(revid)),
Thomas.J.Waldmann 2013/06/21 12:36:26 incorrect test, see below
47 (('SomePage', '', '', '', revid, 'frontend.show_item_meta', Fal se), '/+meta/+{0}/SomePage'.format(revid)), 47 (('SomePage', '', '', '', revid, 'frontend.show_item_meta', Fal se), '/+meta/+{0}/SomePage'.format(revid)),
48 # Valid namespaces 48 # Valid namespaces
49 (('SomePage', '', '', 'ns1', CURRENT, 'frontend.show_item', Fal se), '/ns1/SomePage'), 49 (('SomePage', '', '', 'ns1', CURRENT, 'frontend.show_item', Fal se), '/ns1/SomePage'),
Thomas.J.Waldmann 2013/06/21 12:36:26 seems like we had some extra-indication in the pas
50 (('SomePage', '', 'tags', 'ns1', CURRENT, 'frontend.show_item', False), '/ns1/%40tags/SomePage'), 50 (('SomeTag', '', 'tags', 'ns1', CURRENT, 'frontend.show_item', False), '/ns1/%40tags/SomeTag'),
Thomas.J.Waldmann 2013/06/21 12:36:26 ehrm, really %40 ? when we (waldi an me) chose @ w
51 (('SomePage', '', '', 'ns1/ns2', CURRENT, 'frontend.show_item', True), 'http://localhost:8080/ns1/ns2/SomePage'), 51 (('SomePage', '', '', 'ns1/ns2', CURRENT, 'frontend.show_item', True), 'http://localhost:8080/ns1/ns2/SomePage'),
52 (('SomePage', '', '', 'ns1', CURRENT, 'frontend.modify_item', F alse), '/+modify/ns1/SomePage'), 52 (('SomePage', '', '', 'ns1', CURRENT, 'frontend.modify_item', F alse), '/+modify/ns1/SomePage'),
53 (('SomePage', '', '', 'ns1/ns2', CURRENT, 'frontend.show_item_m eta', True), 'http://localhost:8080/+meta/ns1/ns2/SomePage'), 53 (('SomePage', '', '', 'ns1/ns2', CURRENT, 'frontend.show_item_m eta', True), 'http://localhost:8080/+meta/ns1/ns2/SomePage'),
54 (('SomePage', '', '', 'ns1', revid, 'frontend.show_item', False ), '/+show/+{0}/ns1/SomePage'.format(revid)), 54 (('SomePage', '', '', 'ns1', revid, 'frontend.show_item', False ), '/+show/+{0}/ns1/SomePage'.format(revid)),
55 (('SomePage', '', '', 'ns1/ns2', revid, 'frontend.show_item_met a', False), '/+meta/+{0}/ns1/ns2/SomePage'.format(revid)), 55 (('SomePage', '', '', 'ns1/ns2', revid, 'frontend.show_item_met a', False), '/+meta/+{0}/ns1/ns2/SomePage'.format(revid)),
56 (('SomePage', '', 'revid', 'ns1/ns2', revid, 'frontend.show_ite m_meta', False), '/+meta/+{0}/ns1/ns2/%40revid/SomePage'.format(revid)), 56 (('SomeRevID', '', 'revid', 'ns1/ns2', CURRENT, 'frontend.show_ item_meta', False), '/+meta/ns1/ns2/%40revid/SomeRevID'.format(revid)),
Thomas.J.Waldmann 2013/06/21 12:36:26 that test is incorrect your are using @revid so t
57 57
58 (('SomePage', 'MoinMoin', '', 'ns1', CURRENT, 'frontend.show_it em', False), 'http://moinmo.in/ns1/SomePage'), 58 (('SomePage', 'MoinMoin', '', 'ns1', CURRENT, 'frontend.show_it em', False), 'http://moinmo.in/ns1/SomePage'),
59 (('SomePage', 'MoinMoin', '', '', CURRENT, 'frontend.show_item' , False), 'http://moinmo.in/SomePage'), 59 (('SomePage', 'MoinMoin', '', '', CURRENT, 'frontend.show_item' , False), 'http://moinmo.in/SomePage'),
60 # FIXME will exist a map for this case? maybe there should be a placeholder for it. 60 # FIXME will exist a map for this case? maybe there should be a placeholder for it.
61 # we need that for wiki farms with common search index and sear ch in non-current revisions. 61 # we need that for wiki farms with common search index and sear ch in non-current revisions.
62 (('SomePage', 'MoinMoin', '', '', revid, 'frontend.show_item', False), 'http://moinmo.in/+show/+{0}/SomePage'.format(revid)), 62 (('SomePage', 'MoinMoin', '', '', revid, 'frontend.show_item', False), 'http://moinmo.in/+show/+{0}/SomePage'.format(revid)),
63 (('SomePage', 'non-existent', 'itemid', '', CURRENT, 'frontend. show_item', False), '/non-existent/@itemid/SomePage'), 63 (('SomeItemID', 'non-existent', 'itemid', '', CURRENT, 'fronten d.show_item', False), '/non-existent/@itemid/SomeItemID'),
64 (('SomePage', 'non-existent', '', 'ns1', CURRENT, 'frontend.sho w_item', False), '/non-existent/ns1/SomePage'), 64 (('SomePage', 'non-existent', '', 'ns1', CURRENT, 'frontend.sho w_item', False), '/non-existent/ns1/SomePage'),
65 ] 65 ]
66 66
67 for (item_name, wiki_name, field, namespace, rev, endpoint, _external), url in tests: 67 for (item_name, wiki_name, field, namespace, rev, endpoint, _external), url in tests:
68 assert url_for_item(item_name, wiki_name, field, namespace, rev, end point, _external) == url 68 assert url_for_item(item_name, wiki_name, field, namespace, rev, end point, _external) == url
69 69
70 def test__split_namespace(self): 70 def test__split_namespace(self):
71 map = set() 71 map = set()
72 map.add(u'ns1') 72 map.add(u'ns1')
73 map.add(u'ns1/ns2') 73 map.add(u'ns1/ns2')
74 tests = [('', ('', '')), 74 tests = [('', ('', '')),
75 ('OtherWiki/', ('', 'OtherWiki/')), 75 ('OtherWiki/', ('', 'OtherWiki/')),
76 ('ns1/', ('ns1', '')), 76 ('ns1/', ('ns1', '')),
77 ('ns3/foo', ('', 'ns3/foo')), 77 ('ns3/foo', ('', 'ns3/foo')),
78 ('ns1/OtherPage', ('ns1', 'OtherPage')), 78 ('ns1/OtherPage', ('ns1', 'OtherPage')),
79 ('ns1/ns2/OtherPage', ('ns1/ns2', 'OtherPage')), 79 ('ns1/ns2/OtherPage', ('ns1/ns2', 'OtherPage')),
80 ('ns1/ns2/ns1/ns2/OtherPage', ('ns1/ns2', 'ns1/ns2/OtherPage')) , 80 ('ns1/ns2/ns1/ns2/OtherPage', ('ns1/ns2', 'ns1/ns2/OtherPage')) ,
81 ('SomePage', ('', 'SomePage')), 81 ('SomePage', ('', 'SomePage')),
82 ('OtherWiki/ns1/OtherPage', ('', 'OtherWiki/ns1/OtherPage')), 82 ('OtherWiki/ns1/OtherPage', ('', 'OtherWiki/ns1/OtherPage')),
83 ] 83 ]
84 for markup, (namespace, pagename) in tests: 84 for markup, (namespace, pagename) in tests:
85 assert _split_namespace(map, markup) == (namespace, pagename) 85 assert _split_namespace(map, markup) == (namespace, pagename)
86 namespace, pagename = _split_namespace(map, markup) 86 namespace, pagename = _split_namespace(map, markup)
87 87
88 def test_split_interwiki(self): 88 def test_split_interwiki(self):
89 app.cfg.namespace_mapping = [(u'', 'default_backend'), (u'ns1/', 'defaul t_backend'), (u'ns1/ns2/', 'other_backend')] 89 app.cfg.namespace_mapping = [(u'', 'default_backend'), (u'ns1/', 'defaul t_backend'), (u'ns1/ns2/', 'other_backend')]
90 tests = [('', ('Self', '', '', '')), 90 tests = [('', ('Self', '', 'name_exact', '')),
91 ('OtherWiki/', ('OtherWiki', '', '', '')), 91 ('OtherWiki/', ('OtherWiki', '', 'name_exact', '')),
92 ('/ns1/', ('Self', 'ns1', '', '')), 92 ('/ns1/', ('Self', 'ns1', 'name_exact', '')),
93 ('/@itemid/', ('Self', '', 'itemid', '')), 93 ('/@itemid/', ('Self', '', 'itemid', '')),
94 ('/ns3/foo', ('Self', '', '', 'ns3/foo')), 94 ('/ns3/foo', ('Self', '', 'name_exact', 'ns3/foo')),
95 ('@tags/SomePage', ('Self', '', 'tags', 'SomePage')), 95 ('@tags/SomeTag', ('Self', '', 'tags', 'SomeTag')),
Thomas.J.Waldmann 2013/06/22 20:56:01 looks wrong, see above
96 ('OtherWiki/OtherPage', ('OtherWiki', '', '', 'OtherPage')), 96 ('OtherWiki/OtherPage', ('OtherWiki', '', 'name_exact', 'OtherP age')),
97 ('NonExistentWiki/OtherPage', ('Self', '', '', 'NonExistentWiki /OtherPage')), 97 ('NonExistentWiki/OtherPage', ('Self', '', 'name_exact', 'NonEx istentWiki/OtherPage')),
98 ('OtherWiki/ns1/@chenid/Page', ('OtherWiki', 'ns1', '', '@cheni d/Page')), 98 ('OtherWiki/ns1/@invalidID/Page', ('OtherWiki', 'ns1', 'name_ex act', '@invalidID/Page')),
Thomas.J.Waldmann 2013/06/22 20:56:01 wut?
99 ('/ns1/OtherPage', ('Self', 'ns1', '', 'OtherPage')), 99 ('/ns1/OtherPage', ('Self', 'ns1', 'name_exact', 'OtherPage')),
100 ('/ns1/ns2/OtherPage', ('Self', 'ns1/ns2', '', 'OtherPage')), 100 ('/ns1/ns2/OtherPage', ('Self', 'ns1/ns2', 'name_exact', 'Other Page')),
101 ('ns1/OtherPage', ('Self', 'ns1', '', 'OtherPage')), 101 ('ns1/OtherPage', ('Self', 'ns1', 'name_exact', 'OtherPage')),
102 ('ns1/ns2/OtherPage', ('Self', 'ns1/ns2', '', 'OtherPage')), 102 ('ns1/ns2/OtherPage', ('Self', 'ns1/ns2', 'name_exact', 'OtherP age')),
103 ('OtherWiki/ns1/OtherPage', ('OtherWiki', 'ns1', '', 'OtherPage ')), 103 ('OtherWiki/ns1/OtherPage', ('OtherWiki', 'ns1', 'name_exact', 'OtherPage')),
104 ('OtherWiki/ns1/ns2/OtherPage', ('OtherWiki', 'ns1/ns2', '', 'O therPage')), 104 ('OtherWiki/ns1/ns2/OtherPage', ('OtherWiki', 'ns1/ns2', 'name_ exact', 'OtherPage')),
105 ('OtherWiki/ns1/ns2/@userid/OtherPage', ('OtherWiki', 'ns1/ns2' , 'userid', 'OtherPage')), 105 ('OtherWiki/ns1/ns2/@userid/SomeUserID', ('OtherWiki', 'ns1/ns2 ', 'userid', 'SomeUserID')),
Thomas.J.Waldmann 2013/06/22 20:56:01 looks wrong, see above
106 ('OtherWiki/ns3/ns2/@userid/OtherPage/foo', ('OtherWiki', '', ' ', 'ns3/ns2/@userid/OtherPage/foo')), 106 ('OtherWiki/ns3/ns2/@Notfield/OtherPage/foo', ('OtherWiki', '', 'name_exact', 'ns3/ns2/@Notfield/OtherPage/foo')),
Thomas.J.Waldmann 2013/06/22 20:56:01 looks wrong, see above
107 ] 107 ]
108 for markup, (wikiname, namespace, field, pagename) in tests: 108 for markup, (wikiname, namespace, field, pagename) in tests:
109 assert split_interwiki(markup) == (wikiname, namespace, field, pagen ame) 109 assert split_interwiki(markup) == (wikiname, namespace, field, pagen ame)
110 wikiname, namespace, field, pagename = split_interwiki(markup) 110 wikiname, namespace, field, pagename = split_interwiki(markup)
111 assert isinstance(namespace, unicode) 111 assert isinstance(namespace, unicode)
112 assert isinstance(pagename, unicode) 112 assert isinstance(pagename, unicode)
113 assert isinstance(field, unicode) 113 assert isinstance(field, unicode)
114 assert isinstance(wikiname, unicode) 114 assert isinstance(wikiname, unicode)
115 115
116 def testJoinWiki(self): 116 def testJoinWiki(self):
117 tests = [(('http://example.org/', u'SomePage', '', ''), 'http://example. org/SomePage'), 117 tests = [(('http://example.org/', u'SomePage', '', ''), 'http://example. org/SomePage'),
118 (('', u'SomePage', '', ''), 'SomePage'), 118 (('', u'SomePage', '', ''), 'SomePage'),
119 (('http://example.org/?page=$PAGE&action=show', u'SomePage', '' , ''), 'http://example.org/?page=SomePage&action=show'), 119 (('http://example.org/?page=$PAGE&action=show', u'SomePage', '' , ''), 'http://example.org/?page=SomePage&action=show'),
120 (('http://example.org/', u'Aktuelle\xc4nderungen', '', ''), 'ht tp://example.org/Aktuelle%C3%84nderungen'), 120 (('http://example.org/', u'Aktuelle\xc4nderungen', '', ''), 'ht tp://example.org/Aktuelle%C3%84nderungen'),
121 (('http://example.org/$PAGE/show', u'Aktuelle\xc4nderungen', '' , ''), 'http://example.org/Aktuelle%C3%84nderungen/show'), 121 (('http://example.org/$PAGE/show', u'Aktuelle\xc4nderungen', '' , ''), 'http://example.org/Aktuelle%C3%84nderungen/show'),
122 122
123 (('http://example.org/', u'SomePage', 'itemid', u'ns1'), 'http: //example.org/ns1/@itemid/SomePage'), 123 (('http://example.org/', u'SomeItemID', 'itemid', u'ns1'), 'htt p://example.org/ns1/@itemid/SomeItemID'),
Thomas.J.Waldmann 2013/06/21 12:36:26 test looks wrong - please systematically review al
124 (('http://example.org/?page=$PAGE&action=show&namespace=$NAMESP ACE', u'SomePage', '', u'ns1'), 'http://example.org/?page=SomePage&action=show&n amespace=ns1'), 124 (('http://example.org/?page=$PAGE&action=show&namespace=$NAMESP ACE', u'SomePage', '', u'ns1'), 'http://example.org/?page=SomePage&action=show&n amespace=ns1'),
125 (('http://example.org/', u'Aktuelle\xc4nderungen', '', u'ns1\xc 4'), 'http://example.org/ns1%C3%84/Aktuelle%C3%84nderungen'), 125 (('http://example.org/', u'Aktuelle\xc4nderungen', '', u'ns1\xc 4'), 'http://example.org/ns1%C3%84/Aktuelle%C3%84nderungen'),
126 (('http://example.org/$NAMESPACE/$PAGE/show', u'Aktuelle\xc4nde rungen', '', u'ns\xc41'), 'http://example.org/ns%C3%841/Aktuelle%C3%84nderungen/ show'), 126 (('http://example.org/$NAMESPACE/$PAGE/show', u'Aktuelle\xc4nde rungen', '', u'ns\xc41'), 'http://example.org/ns%C3%841/Aktuelle%C3%84nderungen/ show'),
127 (('http://example.org/@$FIELD/$PAGE/show', u'Aktuelle\xc4nderun gen', u'itemid', u''), 'http://example.org/@itemid/Aktuelle%C3%84nderungen/show' ), 127 (('http://example.org/@$FIELD/$PAGE/show', u'Aktuelle\xc4nderun gen', u'itemid', u''), 'http://example.org/@itemid/Aktuelle%C3%84nderungen/show' ),
128 ] 128 ]
129 for (baseurl, pagename, field, namespace), url in tests: 129 for (baseurl, pagename, field, namespace), url in tests:
130 assert join_wiki(baseurl, pagename, field, namespace) == url 130 assert join_wiki(baseurl, pagename, field, namespace) == url
131 131
132 def test_split_fqname(self): 132 def test_split_fqname(self):
133 app.cfg.namespace_mapping = [(u'', 'default_backend'), (u'ns1/', 'defaul t_backend'), (u'ns1/ns2/', 'other_backend')] 133 app.cfg.namespace_mapping = [(u'', 'default_backend'), (u'ns1/', 'defaul t_backend'), (u'ns1/ns2/', 'other_backend')]
134 tests = [('ns1/ns2/@itemid/Page', ('ns1/ns2', 'itemid', 'Page')), 134 tests = [('ns1/ns2/@itemid/SomeItemID', ('ns1/ns2', 'itemid', 'SomeItemI D')),
Thomas.J.Waldmann 2013/06/22 20:56:01 looks wrong, see above
135 ('ns3/@itemid/Page', ('', '', 'ns3/@itemid/Page')), 135 ('ns3/@itemid/SomeItemID', ('', 'name_exact', 'ns3/@itemid/Some ItemID')),
Thomas.J.Waldmann 2013/06/22 20:56:01 looks wrong, see above
136 ('Page', ('', '', 'Page')), 136 ('Page', ('', 'name_exact', 'Page')),
137 ('ns1/ns2/@tags', ('ns1/ns2', 'tags', '')), 137 ('ns1/ns2/@tags/SomeTag', ('ns1/ns2', 'tags', 'SomeTag')),
Thomas.J.Waldmann 2013/06/22 20:56:01 sense?
138 ('@tags/cheenu', ('', 'tags', 'cheenu')), 138 ('@tags/SomeTag', ('', 'tags', 'SomeTag')),
Thomas.J.Waldmann 2013/06/22 20:56:01 wut?
139 ('ns1/ns2/@notid', ('ns1/ns2', '', '@notid')), 139 ('ns1/ns2/@notid', ('ns1/ns2', 'name_exact', '@notid')),
Thomas.J.Waldmann 2013/06/22 20:56:01 i think we should disallow itemnames starting with
140 ('ns1/ns2/ns3/@itemid/ns4', ('ns1/ns2', '', 'ns3/@itemid/ns4')) , 140 ('ns1/ns2/ns3/Thisisapagename/ns4', ('ns1/ns2', 'name_exact', ' ns3/Thisisapagename/ns4')),
Thomas.J.Waldmann 2013/06/22 20:56:01 sense?
141 ] 141 ]
142 for url, (namespace, field, pagename) in tests: 142 for url, (namespace, field, pagename) in tests:
143 assert split_fqname(url) == (namespace, field, pagename) 143 assert split_fqname(url) == (namespace, field, pagename)
144 144
145 145
146 class TestInterWikiMapBackend(object): 146 class TestInterWikiMapBackend(object):
147 """ 147 """
148 tests for interwiki map 148 tests for interwiki map
149 """ 149 """
150 150
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 testiwm = InterWikiMap.from_file(testfile) 211 testiwm = InterWikiMap.from_file(testfile)
212 212
213 assert 'MoinSrc' in testiwm.iwmap 213 assert 'MoinSrc' in testiwm.iwmap
214 assert testiwm.iwmap['MoinMaster'] == 'http://master.moinmo.in/' 214 assert testiwm.iwmap['MoinMaster'] == 'http://master.moinmo.in/'
215 assert 'PythonInfo' in testiwm.iwmap 215 assert 'PythonInfo' in testiwm.iwmap
216 assert 'this' not in testiwm.iwmap 216 assert 'this' not in testiwm.iwmap
217 assert testiwm.iwmap['MoinCVS'] == 'http://hg.moinmo.in/moin/2.0?f=-1;fi le=' 217 assert testiwm.iwmap['MoinCVS'] == 'http://hg.moinmo.in/moin/2.0?f=-1;fi le='
218 218
219 219
220 coverage_modules = ['MoinMoin.util.interwiki'] 220 coverage_modules = ['MoinMoin.util.interwiki']
LEFTRIGHT

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b