5
5
import unittest
6
6
from markupsafe import Markup , escape , escape_silent
7
7
from markupsafe ._compat import text_type , PY2
8
+ from markupsafe import _native
9
+ try :
10
+ from markupsafe import _speedups
11
+ have_speedups = True
12
+ except ImportError :
13
+ have_speedups = False
8
14
9
15
10
16
class MarkupTestCase (unittest .TestCase ):
@@ -191,6 +197,51 @@ def test_markup_leaks(self):
191
197
'leak objects, got: ' + str (len (counts ))
192
198
193
199
200
+ class NativeEscapeTestCase (unittest .TestCase ):
201
+
202
+ escape = staticmethod (_native .escape )
203
+
204
+ def test_empty (self ):
205
+ self .assertEqual (Markup (u'' ), self .escape (u'' ))
206
+
207
+ def test_ascii (self ):
208
+ self .assertEqual (
209
+ Markup (u'abcd&><'"efgh' ),
210
+ self .escape (u'abcd&><\' "efgh' ))
211
+ self .assertEqual (
212
+ Markup (u'&><'"efgh' ),
213
+ self .escape (u'&><\' "efgh' ))
214
+ self .assertEqual (
215
+ Markup (u'abcd&><'"' ),
216
+ self .escape (u'abcd&><\' "' ))
217
+
218
+ def test_2byte (self ):
219
+ self .assertEqual (
220
+ Markup (u'こんにちは&><'"こんばんは' ),
221
+ self .escape (u'こんにちは&><\' "こんばんは' ))
222
+ self .assertEqual (
223
+ Markup (u'&><'"こんばんは' ),
224
+ self .escape (u'&><\' "こんばんは' ))
225
+ self .assertEqual (
226
+ Markup (u'こんにちは&><'"' ),
227
+ self .escape (u'こんにちは&><\' "' ))
228
+
229
+ def test_4byte (self ):
230
+ self .assertEqual (
231
+ Markup (u'\U0001F363 \U0001F362 &><'"\U0001F37A xyz' ),
232
+ self .escape (u'\U0001F363 \U0001F362 &><\' "\U0001F37A xyz' ))
233
+ self .assertEqual (
234
+ Markup (u'&><'"\U0001F37A xyz' ),
235
+ self .escape (u'&><\' "\U0001F37A xyz' ))
236
+ self .assertEqual (
237
+ Markup (u'\U0001F363 \U0001F362 &><'"' ),
238
+ self .escape (u'\U0001F363 \U0001F362 &><\' "' ))
239
+
240
+ if have_speedups :
241
+ class SpeedupEscapeTestCase (NativeEscapeTestCase ):
242
+ escape = _speedups .escape
243
+
244
+
194
245
def suite ():
195
246
suite = unittest .TestSuite ()
196
247
suite .addTest (unittest .makeSuite (MarkupTestCase ))
@@ -199,6 +250,10 @@ def suite():
199
250
if not hasattr (escape , 'func_code' ):
200
251
suite .addTest (unittest .makeSuite (MarkupLeakTestCase ))
201
252
253
+ suite .addTest (unittest .makeSuite (NativeEscapeTestCase ))
254
+ if have_speedups :
255
+ suite .addTest (unittest .makeSuite (SpeedupEscapeTestCase ))
256
+
202
257
return suite
203
258
204
259
0 commit comments