|
1 | 1 | import sys |
2 | | -import re |
3 | 2 | import unittest |
4 | 3 |
|
5 | 4 | from curtsies.fmtfuncs import bold, green, magenta, cyan, red, plain |
6 | | -from unittest import mock |
7 | 5 |
|
8 | 6 | from bpython.curtsiesfrontend import interpreter |
9 | 7 |
|
10 | 8 | pypy = "PyPy" in sys.version |
11 | 9 |
|
12 | 10 |
|
13 | | -def remove_ansi(s): |
14 | | - return re.sub(r"(\x9B|\x1B\[)[0-?]*[ -\/]*[@-~]".encode("ascii"), b"", s) |
| 11 | +class Interpreter(interpreter.Interp): |
| 12 | + def __init__(self): |
| 13 | + super().__init__() |
| 14 | + self.a = [] |
15 | 15 |
|
| 16 | + def write(self, data): |
| 17 | + self.a.append(data) |
16 | 18 |
|
17 | | -class TestInterpreter(unittest.TestCase): |
18 | | - def interp_errlog(self): |
19 | | - i = interpreter.Interp() |
20 | | - a = [] |
21 | | - i.write = a.append |
22 | | - return i, a |
23 | | - |
24 | | - def err_lineno(self, a): |
25 | | - strings = [x.__unicode__() for x in a] |
26 | | - for line in reversed(strings): |
27 | | - clean_line = remove_ansi(line) |
28 | | - m = re.search(r"line (\d+)[,]", clean_line) |
29 | | - if m: |
30 | | - return int(m.group(1)) |
31 | | - return None |
32 | 19 |
|
| 20 | +class TestInterpreter(unittest.TestCase): |
33 | 21 | def test_syntaxerror(self): |
34 | | - i, a = self.interp_errlog() |
| 22 | + i = Interpreter() |
35 | 23 |
|
36 | 24 | i.runsource("1.1.1.1") |
37 | 25 |
|
@@ -96,11 +84,12 @@ def test_syntaxerror(self): |
96 | 84 | + "\n" |
97 | 85 | ) |
98 | 86 |
|
| 87 | + a = i.a |
99 | 88 | self.assertMultiLineEqual(str(plain("").join(a)), str(expected)) |
100 | 89 | self.assertEqual(plain("").join(a), expected) |
101 | 90 |
|
102 | 91 | def test_traceback(self): |
103 | | - i, a = self.interp_errlog() |
| 92 | + i = Interpreter() |
104 | 93 |
|
105 | 94 | def f(): |
106 | 95 | return 1 / 0 |
@@ -142,6 +131,7 @@ def gfunc(): |
142 | 131 | + "\n" |
143 | 132 | ) |
144 | 133 |
|
| 134 | + a = i.a |
145 | 135 | self.assertMultiLineEqual(str(plain("").join(a)), str(expected)) |
146 | 136 | self.assertEqual(plain("").join(a), expected) |
147 | 137 |
|
|
0 commit comments