|
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