Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(183)

Side by Side Diff: third_party/twisted_8_1/twisted/lore/test/test_lore.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 # IMPORTANT:
2 # When all the unit tests for Lore run, there's one more test to do:
3 # from a shell,
4 # cd Twisted/
5 # admin/process-docs
6 # It takes a while to run (2:03 on a reasonable box)
7 # Make sure there are no errors! Warnings are OK.
8
9 # ++ single anchor added to individual output file
10 # ++ two anchors added to individual output file
11 # ++ anchors added to individual output files
12 # ++ entry added to index
13 # ++ index entry pointing to correct file and anchor
14 # ++ multiple entries added to index
15 # ++ multiple index entries pointing to correct files and anchors
16 # __ all of above for files in deep directory structure
17 #
18 # ++ group index entries by indexed term
19 # ++ sort index entries by indexed term
20 # __ hierarchical index entries (e.g. language!programming)
21 #
22 # ++ add parameter for what the index filename should be
23 # ++ add (default) ability to NOT index (if index not specified)
24 #
25 # ++ put actual index filename into INDEX link (if any) in the template
26 # __ make index links RELATIVE!
27 # __ make index pay attention to the outputdir!
28 #
29 # __ make index look nice
30 #
31 # ++ add section numbers to headers in lore output
32 # ++ make text of index entry links be chapter numbers
33 # ++ make text of index entry links be section numbers
34 #
35 # __ put all of our test files someplace neat and tidy
36 #
37
38 import os, shutil
39 from StringIO import StringIO
40
41 from twisted.trial import unittest
42
43 from twisted.lore import tree, process, indexer, numberer, htmlbook, default
44 from twisted.lore.default import factory
45 from twisted.lore.latex import LatexSpitter
46
47 from twisted.python.util import sibpath
48
49 from twisted.lore.scripts import lore
50
51 from twisted.web import microdom, domhelpers
52
53 def sp(originalFileName):
54 return sibpath(__file__, originalFileName)
55
56 options = {"template" : sp("template.tpl"), 'baseurl': '%s', 'ext': '.xhtml' }
57 d = options
58
59 def filenameGenerator(originalFileName, outputExtension):
60 return os.path.splitext(originalFileName)[0]+"1"+outputExtension
61
62 def filenameGenerator2(originalFileName, outputExtension):
63 return os.path.splitext(originalFileName)[0]+"2"+outputExtension
64
65
66 class TestFactory(unittest.TestCase):
67
68 file = sp('simple.html')
69 linkrel = ""
70
71 def assertEqualFiles1(self, exp, act):
72 if (exp == act): return True
73 fact = open(act)
74 self.assertEqualsFile(exp, fact.read())
75
76 def assertEqualFiles(self, exp, act):
77 if (exp == act): return True
78 fact = open(sp(act))
79 self.assertEqualsFile(exp, fact.read())
80
81 def assertEqualsFile(self, exp, act):
82 expected = open(sp(exp)).read()
83 self.assertEqualsString(expected, act)
84
85 def assertEqualsString(self, expected, act):
86 if len(expected) != len(act): print "Actual: " + act ##d
87 self.assertEquals(len(expected), len(act))
88 for i in range(len(expected)):
89 e = expected[i]
90 a = act[i]
91 self.assertEquals(e, a, "differ at %d: %s vs. %s" % (i, e, a))
92 self.assertEquals(expected, act)
93
94 def makeTemp(self, *filenames):
95 tmp = self.mktemp()
96 os.mkdir(tmp)
97 for filename in filenames:
98 tmpFile = os.path.join(tmp, filename)
99 shutil.copyfile(sp(filename), tmpFile)
100 return tmp
101
102 ########################################
103
104 def setUp(self):
105 indexer.reset()
106 numberer.reset()
107
108 def testProcessingFunctionFactory(self):
109 htmlGenerator = factory.generate_html(options)
110 htmlGenerator(self.file, self.linkrel)
111 self.assertEqualFiles('good_simple.xhtml', 'simple.xhtml')
112
113 def testProcessingFunctionFactoryWithFilenameGenerator(self):
114 htmlGenerator = factory.generate_html(options, filenameGenerator2)
115 htmlGenerator(self.file, self.linkrel)
116 self.assertEqualFiles('good_simple.xhtml', 'simple2.xhtml')
117
118 def test_doFile(self):
119 templ = microdom.parse(open(d['template']))
120
121 tree.doFile(self.file, self.linkrel, d['ext'], d['baseurl'], templ, d)
122 self.assertEqualFiles('good_simple.xhtml', 'simple.xhtml')
123
124 def test_doFile_withFilenameGenerator(self):
125 templ = microdom.parse(open(d['template']))
126
127 tree.doFile(self.file, self.linkrel, d['ext'], d['baseurl'], templ, d, f ilenameGenerator)
128 self.assertEqualFiles('good_simple.xhtml', 'simple1.xhtml')
129
130 def test_munge(self):
131 indexer.setIndexFilename("lore_index_file.html")
132 doc = microdom.parse(open(self.file))
133 templ = microdom.parse(open(d['template']))
134 node = templ.cloneNode(1)
135 tree.munge(doc, node, self.linkrel,
136 os.path.dirname(self.file),
137 self.file,
138 d['ext'], d['baseurl'], d)
139 self.assertEqualsFile('good_internal.xhtml', node.toprettyxml())
140
141 def test_getProcessor(self):
142 options = { 'template': sp('template.tpl'), 'ext': '.xhtml', 'baseurl': 'burl',
143 'filenameMapping': None }
144 p = process.getProcessor(default, "html", options)
145 p(sp('simple3.html'), self.linkrel)
146 self.assertEqualFiles('good_simple.xhtml', 'simple3.xhtml')
147
148 def test_getProcessorWithFilenameGenerator(self):
149 options = { 'template': sp('template.tpl'),
150 'ext': '.xhtml',
151 'baseurl': 'burl',
152 'filenameMapping': 'addFoo' }
153 p = process.getProcessor(default, "html", options)
154 p(sp('simple4.html'), self.linkrel)
155 self.assertEqualFiles('good_simple.xhtml', 'simple4foo.xhtml')
156
157 def test_outputdirGenerator(self):
158 normp = os.path.normpath; join = os.path.join
159 inputdir = normp(join("/", 'home', 'joe'))
160 outputdir = normp(join("/", 'away', 'joseph'))
161 actual = process.outputdirGenerator(join("/", 'home', 'joe', "myfile.htm l"),
162 '.xhtml', inputdir, outputdir)
163 expected = normp(join("/", 'away', 'joseph', 'myfile.xhtml'))
164 self.assertEquals(expected, actual)
165
166 def test_outputdirGeneratorBadInput(self):
167 options = {'outputdir': '/away/joseph/', 'inputdir': '/home/joe/' }
168 self.assertRaises(ValueError, process.outputdirGenerator, '.html', '.xht ml', **options)
169
170 def test_makeSureDirectoryExists(self):
171 dirname = os.path.join("tmp", 'nonexistentdir')
172 if os.path.exists(dirname):
173 os.rmdir(dirname)
174 self.failIf(os.path.exists(dirname), "Hey: someone already created the d ir")
175 filename = os.path.join(dirname, 'newfile')
176 tree.makeSureDirectoryExists(filename)
177 self.failUnless(os.path.exists(dirname), 'should have created dir')
178 os.rmdir(dirname)
179
180 def test_indexAnchorsAdded(self):
181 indexer.setIndexFilename('theIndexFile.html')
182 # generate the output file
183 templ = microdom.parse(open(d['template']))
184 tmp = self.makeTemp('lore_index_test.xhtml')
185
186 tree.doFile(os.path.join(tmp, 'lore_index_test.xhtml'),
187 self.linkrel, '.html', d['baseurl'], templ, d)
188 self.assertEqualFiles1("lore_index_test_out.html",
189 os.path.join(tmp, "lore_index_test.html"))
190
191 def test_indexEntriesAdded(self):
192 indexer.addEntry('lore_index_test.html', 'index02', 'language of program ming', '1.3')
193 indexer.addEntry('lore_index_test.html', 'index01', 'programming languag e', '1.2')
194 indexer.setIndexFilename("lore_index_file.html")
195 indexer.generateIndex()
196 self.assertEqualFiles1("lore_index_file_out.html", "lore_index_file.html ")
197
198 def test_book(self):
199 tmp = self.makeTemp()
200 inputFilename = sp('lore_index_test.xhtml')
201
202 bookFilename = os.path.join(tmp, 'lore_test_book.book')
203 bf = open(bookFilename, 'w')
204 bf.write('Chapter(r"%s", None)\r\n' % inputFilename)
205 bf.close()
206
207 book = htmlbook.Book(bookFilename)
208 expected = {'indexFilename': None,
209 'chapters': [(inputFilename, None)],
210 }
211 dct = book.__dict__
212 for k in dct:
213 self.assertEquals(dct[k], expected[k])
214
215 def test_runningLore(self):
216 options = lore.Options()
217 tmp = self.makeTemp('lore_index_test.xhtml')
218
219 templateFilename = sp('template.tpl')
220 inputFilename = os.path.join(tmp, 'lore_index_test.xhtml')
221 indexFilename = 'theIndexFile'
222
223 bookFilename = os.path.join(tmp, 'lore_test_book.book')
224 bf = open(bookFilename, 'w')
225 bf.write('Chapter(r"%s", None)\n' % inputFilename)
226 bf.close()
227
228 options.parseOptions(['--null', '--book=%s' % bookFilename,
229 '--config', 'template=%s' % templateFilename,
230 '--index=%s' % indexFilename
231 ])
232 result = lore.runGivenOptions(options)
233 self.assertEquals(None, result)
234 self.assertEqualFiles1("lore_index_file_unnumbered_out.html", indexFilen ame + ".html")
235
236 def test_runningLoreMultipleFiles(self):
237 tmp = self.makeTemp('lore_index_test.xhtml', 'lore_index_test2.xhtml')
238 templateFilename = sp('template.tpl')
239 inputFilename = os.path.join(tmp, 'lore_index_test.xhtml')
240 inputFilename2 = os.path.join(tmp, 'lore_index_test2.xhtml')
241 indexFilename = 'theIndexFile'
242
243 bookFilename = os.path.join(tmp, 'lore_test_book.book')
244 bf = open(bookFilename, 'w')
245 bf.write('Chapter(r"%s", None)\n' % inputFilename)
246 bf.write('Chapter(r"%s", None)\n' % inputFilename2)
247 bf.close()
248
249 options = lore.Options()
250 options.parseOptions(['--null', '--book=%s' % bookFilename,
251 '--config', 'template=%s' % templateFilename,
252 '--index=%s' % indexFilename
253 ])
254 result = lore.runGivenOptions(options)
255 self.assertEquals(None, result)
256 self.assertEqualFiles1("lore_index_file_unnumbered_multiple_out.html", i ndexFilename + ".html")
257 self.assertEqualFiles1("lore_index_test_out.html",
258 os.path.join(tmp, "lore_index_test.html"))
259 self.assertEqualFiles1("lore_index_test_out2.html",
260 os.path.join(tmp, "lore_index_test2.html"))
261
262 def XXXtest_NumberedSections(self):
263 # run two files through lore, with numbering turned on
264 # every h2 should be numbered:
265 # first file's h2s should be 1.1, 1.2
266 # second file's h2s should be 2.1, 2.2
267 templateFilename = sp('template.tpl')
268 inputFilename = sp('lore_numbering_test.xhtml')
269 inputFilename2 = sp('lore_numbering_test2.xhtml')
270 indexFilename = 'theIndexFile'
271
272 # you can number without a book:
273 options = lore.Options()
274 options.parseOptions(['--null',
275 '--index=%s' % indexFilename,
276 '--config', 'template=%s' % templateFilename,
277 '--config', 'ext=%s' % ".tns",
278 '--number',
279 inputFilename, inputFilename2])
280 result = lore.runGivenOptions(options)
281
282 self.assertEquals(None, result)
283 #self.assertEqualFiles1("lore_index_file_out_multiple.html", indexFilena me + ".tns")
284 # VVV change to new, numbered files
285 self.assertEqualFiles("lore_numbering_test_out.html", "lore_numbering_te st.tns")
286 self.assertEqualFiles("lore_numbering_test_out2.html", "lore_numbering_t est2.tns")
287
288
289 def test_setIndexLink(self):
290 """
291 Tests to make sure that index links are processed when an index page
292 exists and removed when there is not.
293 """
294 templ = microdom.parse(open(d['template']))
295 indexFilename = 'theIndexFile'
296 numLinks = len(domhelpers.findElementsWithAttribute(templ,
297 "class",
298 "index-link"))
299
300 # if our testing template has no index-link nodes, complain about it
301 self.assertNotEquals(
302 [],
303 domhelpers.findElementsWithAttribute(templ,
304 "class",
305 "index-link"))
306
307 tree.setIndexLink(templ, indexFilename)
308
309 self.assertEquals(
310 [],
311 domhelpers.findElementsWithAttribute(templ,
312 "class",
313 "index-link"))
314
315 indexLinks = domhelpers.findElementsWithAttribute(templ,
316 "href",
317 indexFilename)
318 self.assertTrue(len(indexLinks) >= numLinks)
319
320 templ = microdom.parse(open(d['template']))
321 self.assertNotEquals(
322 [],
323 domhelpers.findElementsWithAttribute(templ,
324 "class",
325 "index-link"))
326 indexFilename = None
327
328 tree.setIndexLink(templ, indexFilename)
329
330 self.assertEquals(
331 [],
332 domhelpers.findElementsWithAttribute(templ,
333 "class",
334 "index-link"))
335
336
337
338
339 class LatexSpitterTestCase(unittest.TestCase):
340 """
341 Tests for the Latex output plugin.
342 """
343 def test_indexedSpan(self):
344 """
345 Test processing of a span tag with an index class results in a latex
346 \\index directive the correct value.
347 """
348 dom = microdom.parseString('<span class="index" value="name" />').docume ntElement
349 out = StringIO()
350 spitter = LatexSpitter(out.write)
351 spitter.visitNode(dom)
352 self.assertEqual(out.getvalue(), u'\\index{name}\n')
OLDNEW
« no previous file with comments | « third_party/twisted_8_1/twisted/lore/test/template.tpl ('k') | third_party/twisted_8_1/twisted/lore/test/test_man2lore.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698