110 lines
5.8 KiB
Python
110 lines
5.8 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
#
|
||
|
import unittest
|
||
|
from nose import tools
|
||
|
from nose.plugins.skip import SkipTest
|
||
|
|
||
|
import __builtin__
|
||
|
import base64 as py_b64
|
||
|
import warnings
|
||
|
|
||
|
from kitchen.pycompat24 import sets
|
||
|
from kitchen.pycompat24.base64 import _base64 as base64
|
||
|
|
||
|
class TestSetsNoOverwrite(unittest.TestCase):
|
||
|
def setUp(self):
|
||
|
self.set_val = None
|
||
|
self.frozenset_val = None
|
||
|
if not hasattr(__builtin__, 'set'):
|
||
|
__builtin__.set = self.set_val
|
||
|
else:
|
||
|
self.set_val = __builtin__.set
|
||
|
if not hasattr(__builtin__, 'frozenset'):
|
||
|
__builtin__.frozenset = self.frozenset_val
|
||
|
else:
|
||
|
self.frozenset_val = __builtin__.frozenset
|
||
|
|
||
|
def tearDown(self):
|
||
|
if self.frozenset_val == None:
|
||
|
del(__builtin__.frozenset)
|
||
|
if self.set_val == None:
|
||
|
del(__builtin__.set)
|
||
|
|
||
|
def test_sets_dont_overwrite(self):
|
||
|
'''Test that importing sets when there's already a set and frozenset defined does not overwrite
|
||
|
'''
|
||
|
sets.add_builtin_set()
|
||
|
tools.ok_(__builtin__.set == self.set_val)
|
||
|
tools.ok_(__builtin__.frozenset == self.frozenset_val)
|
||
|
|
||
|
class TestDefineSets(unittest.TestCase):
|
||
|
def setUp(self):
|
||
|
warnings.simplefilter('ignore', DeprecationWarning)
|
||
|
self.set_val = None
|
||
|
self.frozenset_val = None
|
||
|
if hasattr(__builtin__, 'set'):
|
||
|
self.set_val = __builtin__.set
|
||
|
del(__builtin__.set)
|
||
|
if hasattr(__builtin__, 'frozenset'):
|
||
|
self.frozenset_val = __builtin__.frozenset
|
||
|
del(__builtin__.frozenset)
|
||
|
|
||
|
def tearDown(self):
|
||
|
warnings.simplefilter('default', DeprecationWarning)
|
||
|
if self.set_val:
|
||
|
__builtin__.set = self.set_val
|
||
|
else:
|
||
|
del(__builtin__.set)
|
||
|
if self.frozenset_val:
|
||
|
__builtin__.frozenset = self.frozenset_val
|
||
|
else:
|
||
|
del(__builtin__.frozenset)
|
||
|
|
||
|
def test_pycompat_defines_set(self):
|
||
|
'''Test that calling pycompat24.add_builtin_set() adds set and frozenset to __builtin__
|
||
|
'''
|
||
|
import sets as py_sets
|
||
|
sets.add_builtin_set()
|
||
|
if self.set_val:
|
||
|
tools.ok_(__builtin__.set == self.set_val)
|
||
|
tools.ok_(__builtin__.frozenset == self.frozenset_val)
|
||
|
else:
|
||
|
tools.ok_(__builtin__.set == py_sets.Set)
|
||
|
tools.ok_(__builtin__.frozenset == py_sets.ImmutableSet)
|
||
|
|
||
|
class TestSubprocess(unittest.TestCase):
|
||
|
pass
|
||
|
|
||
|
class TestBase64(unittest.TestCase):
|
||
|
b_byte_chars = ' '.join(map(chr, range(0, 256)))
|
||
|
b_byte_encoded = 'ACABIAIgAyAEIAUgBiAHIAggCSAKIAsgDCANIA4gDyAQIBEgEiATIBQgFSAWIBcgGCAZIBogGyAcIB0gHiAfICAgISAiICMgJCAlICYgJyAoICkgKiArICwgLSAuIC8gMCAxIDIgMyA0IDUgNiA3IDggOSA6IDsgPCA9ID4gPyBAIEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFkgWiBbIFwgXSBeIF8gYCBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IHogeyB8IH0gfiB/IIAggSCCIIMghCCFIIYghyCIIIkgiiCLIIwgjSCOII8gkCCRIJIgkyCUIJUgliCXIJggmSCaIJsgnCCdIJ4gnyCgIKEgoiCjIKQgpSCmIKcgqCCpIKogqyCsIK0griCvILAgsSCyILMgtCC1ILYgtyC4ILkguiC7ILwgvSC+IL8gwCDBIMIgwyDEIMUgxiDHIMggySDKIMsgzCDNIM4gzyDQINEg0iDTINQg1SDWINcg2CDZINog2yDcIN0g3iDfIOAg4SDiIOMg5CDlIOYg5yDoIOkg6iDrIOwg7SDuIO8g8CDxIPIg8yD0IPUg9iD3IPgg+SD6IPsg/CD9IP4g/w=='
|
||
|
b_byte_encoded_urlsafe = 'ACABIAIgAyAEIAUgBiAHIAggCSAKIAsgDCANIA4gDyAQIBEgEiATIBQgFSAWIBcgGCAZIBogGyAcIB0gHiAfICAgISAiICMgJCAlICYgJyAoICkgKiArICwgLSAuIC8gMCAxIDIgMyA0IDUgNiA3IDggOSA6IDsgPCA9ID4gPyBAIEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFkgWiBbIFwgXSBeIF8gYCBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IHogeyB8IH0gfiB_IIAggSCCIIMghCCFIIYghyCIIIkgiiCLIIwgjSCOII8gkCCRIJIgkyCUIJUgliCXIJggmSCaIJsgnCCdIJ4gnyCgIKEgoiCjIKQgpSCmIKcgqCCpIKogqyCsIK0griCvILAgsSCyILMgtCC1ILYgtyC4ILkguiC7ILwgvSC-IL8gwCDBIMIgwyDEIMUgxiDHIMggySDKIMsgzCDNIM4gzyDQINEg0iDTINQg1SDWINcg2CDZINog2yDcIN0g3iDfIOAg4SDiIOMg5CDlIOYg5yDoIOkg6iDrIOwg7SDuIO8g8CDxIPIg8yD0IPUg9iD3IPgg-SD6IPsg_CD9IP4g_w=='
|
||
|
|
||
|
def test_base64_encode(self):
|
||
|
tools.ok_(base64.b64encode(self.b_byte_chars) == self.b_byte_encoded)
|
||
|
tools.ok_(base64.b64encode(self.b_byte_chars, altchars='-_') == self.b_byte_encoded_urlsafe)
|
||
|
tools.ok_(base64.standard_b64encode(self.b_byte_chars) == self.b_byte_encoded)
|
||
|
tools.ok_(base64.urlsafe_b64encode(self.b_byte_chars) == self.b_byte_encoded_urlsafe)
|
||
|
|
||
|
tools.ok_(base64.b64encode(self.b_byte_chars) == self.b_byte_encoded)
|
||
|
tools.ok_(base64.b64encode(self.b_byte_chars, altchars='-_') == self.b_byte_encoded_urlsafe)
|
||
|
tools.ok_(base64.standard_b64encode(self.b_byte_chars) == self.b_byte_encoded)
|
||
|
tools.ok_(base64.urlsafe_b64encode(self.b_byte_chars) == self.b_byte_encoded_urlsafe)
|
||
|
|
||
|
def test_base64_decode(self):
|
||
|
tools.ok_(base64.b64decode(self.b_byte_encoded) == self.b_byte_chars)
|
||
|
tools.ok_(base64.b64decode(self.b_byte_encoded_urlsafe, altchars='-_') == self.b_byte_chars)
|
||
|
tools.ok_(base64.standard_b64decode(self.b_byte_encoded) == self.b_byte_chars)
|
||
|
tools.ok_(base64.urlsafe_b64decode(self.b_byte_encoded_urlsafe) == self.b_byte_chars)
|
||
|
|
||
|
tools.ok_(base64.b64decode(self.b_byte_encoded) == self.b_byte_chars)
|
||
|
tools.ok_(base64.b64decode(self.b_byte_encoded_urlsafe, altchars='-_') == self.b_byte_chars)
|
||
|
tools.ok_(base64.standard_b64decode(self.b_byte_encoded) == self.b_byte_chars)
|
||
|
tools.ok_(base64.urlsafe_b64decode(self.b_byte_encoded_urlsafe) == self.b_byte_chars)
|
||
|
|
||
|
def test_base64_stdlib_compat(self):
|
||
|
if not hasattr(py_b64, 'b64encode'):
|
||
|
raise SkipTest('Python-2.3 doesn\'t have b64encode to compare against')
|
||
|
tools.ok_(base64.b64encode(self.b_byte_chars) == py_b64.b64encode(self.b_byte_chars))
|
||
|
tools.ok_(base64.b64decode(self.b_byte_chars) == py_b64.b64decode(self.b_byte_chars))
|