##// END OF EJS Templates
test fix to try path for cwd
Marin Gilles -
Show More
@@ -1,191 +1,192 b''
1 # encoding: utf-8
1 # encoding: utf-8
2 """Tests for IPython.utils.text"""
2 """Tests for IPython.utils.text"""
3 from __future__ import print_function
3 from __future__ import print_function
4
4
5 #-----------------------------------------------------------------------------
5 #-----------------------------------------------------------------------------
6 # Copyright (C) 2011 The IPython Development Team
6 # Copyright (C) 2011 The IPython Development Team
7 #
7 #
8 # Distributed under the terms of the BSD License. The full license is in
8 # Distributed under the terms of the BSD License. The full license is in
9 # the file COPYING, distributed as part of this software.
9 # the file COPYING, distributed as part of this software.
10 #-----------------------------------------------------------------------------
10 #-----------------------------------------------------------------------------
11
11
12 #-----------------------------------------------------------------------------
12 #-----------------------------------------------------------------------------
13 # Imports
13 # Imports
14 #-----------------------------------------------------------------------------
14 #-----------------------------------------------------------------------------
15
15
16 import os
16 import os
17 import math
17 import math
18 import random
18 import random
19 import sys
19 import sys
20
20
21 import nose.tools as nt
21 import nose.tools as nt
22
22
23 from IPython.utils import text
23 from IPython.utils import text
24
24
25 #-----------------------------------------------------------------------------
25 #-----------------------------------------------------------------------------
26 # Globals
26 # Globals
27 #-----------------------------------------------------------------------------
27 #-----------------------------------------------------------------------------
28
28
29 def test_columnize():
29 def test_columnize():
30 """Basic columnize tests."""
30 """Basic columnize tests."""
31 size = 5
31 size = 5
32 items = [l*size for l in 'abc']
32 items = [l*size for l in 'abc']
33 out = text.columnize(items, displaywidth=80)
33 out = text.columnize(items, displaywidth=80)
34 nt.assert_equal(out, 'aaaaa bbbbb ccccc\n')
34 nt.assert_equal(out, 'aaaaa bbbbb ccccc\n')
35 out = text.columnize(items, displaywidth=12)
35 out = text.columnize(items, displaywidth=12)
36 nt.assert_equal(out, 'aaaaa ccccc\nbbbbb\n')
36 nt.assert_equal(out, 'aaaaa ccccc\nbbbbb\n')
37 out = text.columnize(items, displaywidth=10)
37 out = text.columnize(items, displaywidth=10)
38 nt.assert_equal(out, 'aaaaa\nbbbbb\nccccc\n')
38 nt.assert_equal(out, 'aaaaa\nbbbbb\nccccc\n')
39
39
40 def test_columnize_random():
40 def test_columnize_random():
41 """Test with random input to hopfully catch edge case """
41 """Test with random input to hopfully catch edge case """
42 for nitems in [random.randint(2,70) for i in range(2,20)]:
42 for nitems in [random.randint(2,70) for i in range(2,20)]:
43 displaywidth = random.randint(20,200)
43 displaywidth = random.randint(20,200)
44 rand_len = [random.randint(2,displaywidth) for i in range(nitems)]
44 rand_len = [random.randint(2,displaywidth) for i in range(nitems)]
45 items = ['x'*l for l in rand_len]
45 items = ['x'*l for l in rand_len]
46 out = text.columnize(items, displaywidth=displaywidth)
46 out = text.columnize(items, displaywidth=displaywidth)
47 longer_line = max([len(x) for x in out.split('\n')])
47 longer_line = max([len(x) for x in out.split('\n')])
48 longer_element = max(rand_len)
48 longer_element = max(rand_len)
49 if longer_line > displaywidth:
49 if longer_line > displaywidth:
50 print("Columnize displayed something lager than displaywidth : %s " % longer_line)
50 print("Columnize displayed something lager than displaywidth : %s " % longer_line)
51 print("longer element : %s " % longer_element)
51 print("longer element : %s " % longer_element)
52 print("displaywidth : %s " % displaywidth)
52 print("displaywidth : %s " % displaywidth)
53 print("number of element : %s " % nitems)
53 print("number of element : %s " % nitems)
54 print("size of each element :\n %s" % rand_len)
54 print("size of each element :\n %s" % rand_len)
55 assert False
55 assert False
56
56
57 def test_columnize_medium():
57 def test_columnize_medium():
58 """Test with inputs than shouldn't be wider tahn 80 """
58 """Test with inputs than shouldn't be wider tahn 80 """
59 size = 40
59 size = 40
60 items = [l*size for l in 'abc']
60 items = [l*size for l in 'abc']
61 out = text.columnize(items, displaywidth=80)
61 out = text.columnize(items, displaywidth=80)
62 nt.assert_equal(out, '\n'.join(items+['']))
62 nt.assert_equal(out, '\n'.join(items+['']))
63
63
64 def test_columnize_long():
64 def test_columnize_long():
65 """Test columnize with inputs longer than the display window"""
65 """Test columnize with inputs longer than the display window"""
66 size = 11
66 size = 11
67 items = [l*size for l in 'abc']
67 items = [l*size for l in 'abc']
68 out = text.columnize(items, displaywidth=size-1)
68 out = text.columnize(items, displaywidth=size-1)
69 nt.assert_equal(out, '\n'.join(items+['']))
69 nt.assert_equal(out, '\n'.join(items+['']))
70
70
71 def eval_formatter_check(f):
71 def eval_formatter_check(f):
72 ns = dict(n=12, pi=math.pi, stuff='hello there', os=os, u=u"cafΓ©", b="cafΓ©")
72 ns = dict(n=12, pi=math.pi, stuff='hello there', os=os, u=u"cafΓ©", b="cafΓ©")
73 s = f.format("{n} {n//4} {stuff.split()[0]}", **ns)
73 s = f.format("{n} {n//4} {stuff.split()[0]}", **ns)
74 nt.assert_equal(s, "12 3 hello")
74 nt.assert_equal(s, "12 3 hello")
75 s = f.format(' '.join(['{n//%i}'%i for i in range(1,8)]), **ns)
75 s = f.format(' '.join(['{n//%i}'%i for i in range(1,8)]), **ns)
76 nt.assert_equal(s, "12 6 4 3 2 2 1")
76 nt.assert_equal(s, "12 6 4 3 2 2 1")
77 s = f.format('{[n//i for i in range(1,8)]}', **ns)
77 s = f.format('{[n//i for i in range(1,8)]}', **ns)
78 nt.assert_equal(s, "[12, 6, 4, 3, 2, 2, 1]")
78 nt.assert_equal(s, "[12, 6, 4, 3, 2, 2, 1]")
79 s = f.format("{stuff!s}", **ns)
79 s = f.format("{stuff!s}", **ns)
80 nt.assert_equal(s, ns['stuff'])
80 nt.assert_equal(s, ns['stuff'])
81 s = f.format("{stuff!r}", **ns)
81 s = f.format("{stuff!r}", **ns)
82 nt.assert_equal(s, repr(ns['stuff']))
82 nt.assert_equal(s, repr(ns['stuff']))
83
83
84 # Check with unicode:
84 # Check with unicode:
85 s = f.format("{u}", **ns)
85 s = f.format("{u}", **ns)
86 nt.assert_equal(s, ns['u'])
86 nt.assert_equal(s, ns['u'])
87 # This decodes in a platform dependent manner, but it shouldn't error out
87 # This decodes in a platform dependent manner, but it shouldn't error out
88 s = f.format("{b}", **ns)
88 s = f.format("{b}", **ns)
89
89
90 nt.assert_raises(NameError, f.format, '{dne}', **ns)
90 nt.assert_raises(NameError, f.format, '{dne}', **ns)
91
91
92 def eval_formatter_slicing_check(f):
92 def eval_formatter_slicing_check(f):
93 ns = dict(n=12, pi=math.pi, stuff='hello there', os=os)
93 ns = dict(n=12, pi=math.pi, stuff='hello there', os=os)
94 s = f.format(" {stuff.split()[:]} ", **ns)
94 s = f.format(" {stuff.split()[:]} ", **ns)
95 nt.assert_equal(s, " ['hello', 'there'] ")
95 nt.assert_equal(s, " ['hello', 'there'] ")
96 s = f.format(" {stuff.split()[::-1]} ", **ns)
96 s = f.format(" {stuff.split()[::-1]} ", **ns)
97 nt.assert_equal(s, " ['there', 'hello'] ")
97 nt.assert_equal(s, " ['there', 'hello'] ")
98 s = f.format("{stuff[::2]}", **ns)
98 s = f.format("{stuff[::2]}", **ns)
99 nt.assert_equal(s, ns['stuff'][::2])
99 nt.assert_equal(s, ns['stuff'][::2])
100
100
101 nt.assert_raises(SyntaxError, f.format, "{n:x}", **ns)
101 nt.assert_raises(SyntaxError, f.format, "{n:x}", **ns)
102
102
103 def eval_formatter_no_slicing_check(f):
103 def eval_formatter_no_slicing_check(f):
104 ns = dict(n=12, pi=math.pi, stuff='hello there', os=os)
104 ns = dict(n=12, pi=math.pi, stuff='hello there', os=os)
105
105
106 s = f.format('{n:x} {pi**2:+f}', **ns)
106 s = f.format('{n:x} {pi**2:+f}', **ns)
107 nt.assert_equal(s, "c +9.869604")
107 nt.assert_equal(s, "c +9.869604")
108
108
109 s = f.format('{stuff[slice(1,4)]}', **ns)
109 s = f.format('{stuff[slice(1,4)]}', **ns)
110 nt.assert_equal(s, 'ell')
110 nt.assert_equal(s, 'ell')
111
111
112 if sys.version_info >= (3, 4):
112 if sys.version_info >= (3, 4):
113 # String formatting has changed in Python 3.4, so this now works.
113 # String formatting has changed in Python 3.4, so this now works.
114 s = f.format("{a[:]}", a=[1, 2])
114 s = f.format("{a[:]}", a=[1, 2])
115 nt.assert_equal(s, "[1, 2]")
115 nt.assert_equal(s, "[1, 2]")
116 else:
116 else:
117 nt.assert_raises(SyntaxError, f.format, "{a[:]}")
117 nt.assert_raises(SyntaxError, f.format, "{a[:]}")
118
118
119 def test_eval_formatter():
119 def test_eval_formatter():
120 f = text.EvalFormatter()
120 f = text.EvalFormatter()
121 eval_formatter_check(f)
121 eval_formatter_check(f)
122 eval_formatter_no_slicing_check(f)
122 eval_formatter_no_slicing_check(f)
123
123
124 def test_full_eval_formatter():
124 def test_full_eval_formatter():
125 f = text.FullEvalFormatter()
125 f = text.FullEvalFormatter()
126 eval_formatter_check(f)
126 eval_formatter_check(f)
127 eval_formatter_slicing_check(f)
127 eval_formatter_slicing_check(f)
128
128
129 def test_dollar_formatter():
129 def test_dollar_formatter():
130 f = text.DollarFormatter()
130 f = text.DollarFormatter()
131 eval_formatter_check(f)
131 eval_formatter_check(f)
132 eval_formatter_slicing_check(f)
132 eval_formatter_slicing_check(f)
133
133
134 ns = dict(n=12, pi=math.pi, stuff='hello there', os=os)
134 ns = dict(n=12, pi=math.pi, stuff='hello there', os=os)
135 s = f.format("$n", **ns)
135 s = f.format("$n", **ns)
136 nt.assert_equal(s, "12")
136 nt.assert_equal(s, "12")
137 s = f.format("$n.real", **ns)
137 s = f.format("$n.real", **ns)
138 nt.assert_equal(s, "12")
138 nt.assert_equal(s, "12")
139 s = f.format("$n/{stuff[:5]}", **ns)
139 s = f.format("$n/{stuff[:5]}", **ns)
140 nt.assert_equal(s, "12/hello")
140 nt.assert_equal(s, "12/hello")
141 s = f.format("$n $$HOME", **ns)
141 s = f.format("$n $$HOME", **ns)
142 nt.assert_equal(s, "12 $HOME")
142 nt.assert_equal(s, "12 $HOME")
143 s = f.format("${foo}", foo="HOME")
143 s = f.format("${foo}", foo="HOME")
144 nt.assert_equal(s, "$HOME")
144 nt.assert_equal(s, "$HOME")
145
145
146
146
147 def test_long_substr():
147 def test_long_substr():
148 data = ['hi']
148 data = ['hi']
149 nt.assert_equal(text.long_substr(data), 'hi')
149 nt.assert_equal(text.long_substr(data), 'hi')
150
150
151
151
152 def test_long_substr2():
152 def test_long_substr2():
153 data = ['abc', 'abd', 'abf', 'ab']
153 data = ['abc', 'abd', 'abf', 'ab']
154 nt.assert_equal(text.long_substr(data), 'ab')
154 nt.assert_equal(text.long_substr(data), 'ab')
155
155
156 def test_long_substr_empty():
156 def test_long_substr_empty():
157 data = []
157 data = []
158 nt.assert_equal(text.long_substr(data), '')
158 nt.assert_equal(text.long_substr(data), '')
159
159
160 def test_strip_email():
160 def test_strip_email():
161 src = """\
161 src = """\
162 >> >>> def f(x):
162 >> >>> def f(x):
163 >> ... return x+1
163 >> ... return x+1
164 >> ...
164 >> ...
165 >> >>> zz = f(2.5)"""
165 >> >>> zz = f(2.5)"""
166 cln = """\
166 cln = """\
167 >>> def f(x):
167 >>> def f(x):
168 ... return x+1
168 ... return x+1
169 ...
169 ...
170 >>> zz = f(2.5)"""
170 >>> zz = f(2.5)"""
171 nt.assert_equal(text.strip_email_quotes(src), cln)
171 nt.assert_equal(text.strip_email_quotes(src), cln)
172
172
173
173
174 def test_strip_email2():
174 def test_strip_email2():
175 src = '> > > list()'
175 src = '> > > list()'
176 cln = 'list()'
176 cln = 'list()'
177 nt.assert_equal(text.strip_email_quotes(src), cln)
177 nt.assert_equal(text.strip_email_quotes(src), cln)
178
178
179 def test_LSString():
179 def test_LSString():
180 lss = text.LSString("abc\ndef")
180 lss = text.LSString("abc\ndef")
181 nt.assert_equal(lss.l, ['abc', 'def'])
181 nt.assert_equal(lss.l, ['abc', 'def'])
182 nt.assert_equal(lss.s, 'abc def')
182 nt.assert_equal(lss.s, 'abc def')
183 lss = text.LSString(os.getcwd())
183 nt.assert_is_instance(lss.p[0], path.path)
184 nt.assert_is_instance(lss.p[0], path.path)
184
185
185 def test_SList():
186 def test_SList():
186 sl = text.SList(['a 11', 'b 1', 'a 2'])
187 sl = text.SList(['a 11', 'b 1', 'a 2'])
187 nt.assert_equal(sl.n, 'a 11\nb 1\na 2')
188 nt.assert_equal(sl.n, 'a 11\nb 1\na 2')
188 nt.assert_equal(sl.s, 'a 11 b 1 a 2')
189 nt.assert_equal(sl.s, 'a 11 b 1 a 2')
189 nt.assert_equal(sl.grep(lambda x: x.startswith('a')), text.SList(['a 11', 'a 2']))
190 nt.assert_equal(sl.grep(lambda x: x.startswith('a')), text.SList(['a 11', 'a 2']))
190 nt.assert_equal(sl.fields(0), text.SList(['a', 'b', 'a']))
191 nt.assert_equal(sl.fields(0), text.SList(['a', 'b', 'a']))
191 nt.assert_equal(sl.sort(field=1, nums=True), text.SList(['b 1', 'a 2', 'a 11']))
192 nt.assert_equal(sl.sort(field=1, nums=True), text.SList(['b 1', 'a 2', 'a 11']))
General Comments 0
You need to be logged in to leave comments. Login now