]> git.scottworley.com Git - paperdoorknob/blame - paperdoorknob_test.py
Rename: fetch → parse
[paperdoorknob] / paperdoorknob_test.py
CommitLineData
b25a2f90
SW
1# paperdoorknob: Print glowfic
2#
3# This program is free software: you can redistribute it and/or modify it
4# under the terms of the GNU General Public License as published by the
5# Free Software Foundation, version 3.
6
7
8import unittest
36ae1d5f 9import io
07f9b178 10import subprocess
b25a2f90 11import paperdoorknob
41b11505 12from testing.fakeserver import FakeGlowficServer
a64403ac 13from fetch import DirectFetcher
b25a2f90 14
b25a2f90
SW
15TIMEOUT = 8
16
17
a64403ac 18class TestPaperDoorknob(unittest.TestCase):
b25a2f90 19 def setUp(self) -> None:
41b11505
SW
20 self._server = self.enterContext(FakeGlowficServer())
21 self._port = self._server.port()
b25a2f90 22
a2d42468 23 def testReplies(self) -> None:
a64403ac 24 with DirectFetcher(TIMEOUT) as f:
a2d42468
SW
25 replies = paperdoorknob.replies(
26 paperdoorknob.clean(
bf06f467
SW
27 paperdoorknob.parse(
28 f.fetch(f"http://localhost:{self._port}"))))
47cfa3cd 29 self.assertEqual([r.text.strip() for r in replies],
55958ec0 30 ["This is glowfic", "You sure?", "Pretty sure."])
136277e3 31
36ae1d5f 32 def testProcess(self) -> None:
a64403ac 33 with DirectFetcher(TIMEOUT) as f:
36ae1d5f
SW
34 buf = io.BytesIO()
35 paperdoorknob.process(
a64403ac 36 f"http://localhost:{self._port}", f, buf, 'pandoc')
07f9b178
SW
37 self.assertEqual(buf.getvalue(), b'''\\documentclass{article}
38\\begin{document}
39This is glowfic
40You \\emph{sure}?
41Pretty sure.
42\\end{document}
43''')
44
45 def testPDF(self) -> None:
a64403ac 46 with DirectFetcher(TIMEOUT) as f:
07f9b178
SW
47 with open("test.tex", 'wb') as out:
48 paperdoorknob.process(
a64403ac 49 f"http://localhost:{self._port}", f, out, 'pandoc')
07f9b178
SW
50 subprocess.run(['pdflatex', 'test.tex'],
51 stdin=subprocess.DEVNULL, check=True)
36ae1d5f 52
b25a2f90
SW
53
54if __name__ == '__main__':
55 unittest.main()