1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
# Copyright (c) 2017 Leo Hemsted
# Licensed under the BSD License, for detailed license information, see COPYING
from __future__ import unicode_literals
import os
import tempfile
import unittest
from subprocess import PIPE, Popen
CLI_SCRIPT = './smartypants'
class TestCLI(unittest.TestCase):
@staticmethod
def _p(args, T=None):
if T:
T = T.encode()
stdin = PIPE if T else None
p = Popen(args, stdin=stdin, stdout=PIPE)
output = p.communicate(input=T)[0]
if isinstance(output, bytes):
output = output.decode() # Python 3
return output
def test_pipe(self):
T = '"foobar"'
E = '“foobar”'
output = self._p([CLI_SCRIPT], T)
self.assertEquals(output, E)
def test_pipe_attr(self):
T = """"foo" ``bar''"""
E = T
output = self._p([CLI_SCRIPT, '--attr', '0'], T)
self.assertEquals(output, E)
E = """"foo" “bar”"""
output = self._p([CLI_SCRIPT, '--attr', 'b'], T)
self.assertEquals(output, E)
def test_skipped_elements(self):
T = '<a>"foo"</a> <b>"bar"</b>'
E = '<a>“foo”</a> <b>“bar”</b>'
output = self._p([CLI_SCRIPT], T)
self.assertEquals(output, E)
E = '<a>"foo"</a> <b>“bar”</b>'
output = self._p([CLI_SCRIPT, '--skip', 'a'], T)
self.assertEquals(output, E)
E = '<a>“foo”</a> <b>"bar"</b>'
output = self._p([CLI_SCRIPT, '--skip', 'b'], T)
self.assertEquals(output, E)
E = T
output = self._p([CLI_SCRIPT, '--skip', 'a,b'], T)
self.assertEquals(output, E)
def test_file(self):
T = '"foobar"'
E = '“foobar”'
F = tempfile.mkstemp()[1]
try:
with open(F, 'w') as f:
f.write(T)
output = self._p([CLI_SCRIPT, F])
finally:
os.remove(F)
self.assertEquals(output, E)
|