File tree Expand file tree Collapse file tree 2 files changed +25
-4
lines changed Expand file tree Collapse file tree 2 files changed +25
-4
lines changed Original file line number Diff line number Diff line change @@ -242,11 +242,11 @@ def test_get_yajl_version_correctlyParsesYajlVersion(self):
242
242
def test_check_yajl_version_warnsOnlyWhenMismatchedVersions (self ):
243
243
import warnings
244
244
self .mock ('warnings.warn' )
245
- self .mock ('yajl.__version__' , mock_obj = '1.1.1' )
246
- self .mock ('yajl.yajl_version' , mock_obj = '1.1.1' )
245
+ self .mock ('yajl.wrapped. __version__' , mock_obj = '1.1.1' )
246
+ self .mock ('yajl.wrapped. yajl_version' , mock_obj = '1.1.1' )
247
247
self .assertTrue (yajl .check_yajl_version ())
248
248
self .assertSameTrace ('' )
249
- self .mock ('yajl.yajl_version' , mock_obj = '1.1.0' )
249
+ self .mock ('yajl.wrapped. yajl_version' , mock_obj = '1.1.0' )
250
250
self .assertFalse (yajl .check_yajl_version ())
251
251
self .assertSameTrace (
252
252
"Called warnings.warn("
@@ -257,3 +257,12 @@ def test_check_yajl_version_warnsOnlyWhenMismatchedVersions(self):
257
257
258
258
def test_checkYajlPyAndYajlHaveSameVersion (self ):
259
259
self .assertTrue (yajl .check_yajl_version ())
260
+
261
+ def test_checkYajlPyRaisesImportErrorIfDumpsOrLoadsUsedAnyJSONHack (self ):
262
+ for attr in 'dumps' , 'loads' :
263
+ try :
264
+ getattr (yajl , attr )
265
+ except ImportError :
266
+ pass
267
+ else :
268
+ self .fail ('No ImportError Raised for yajl.%s' % attr )
Original file line number Diff line number Diff line change 14
14
from yajl_parse import *
15
15
from yajl_gen import *
16
16
17
- __version__ = '2.0.5'
17
+ __version__ = '2.0.5'
18
18
yajl_version = get_yajl_version ()
19
19
20
20
def check_yajl_version ():
@@ -35,3 +35,15 @@ def check_yajl_version():
35
35
return True
36
36
37
37
check_yajl_version ()
38
+
39
+ # monkey patch yajl, because anyjson devs are slacking off,
40
+ # and I got an issue request that I would like to help out.
41
+ class Wrapper (object ):
42
+ def __init__ (self , wrapped ):
43
+ self .wrapped = wrapped
44
+ def __getattr__ (self , name ):
45
+ if name in ('dumps' , 'loads' ):
46
+ raise ImportError ('this is not py-yajl ... anyjson!' )
47
+ return getattr (self .wrapped , name )
48
+
49
+ sys .modules [__name__ ] = Wrapper (sys .modules [__name__ ])
You can’t perform that action at this time.
0 commit comments