Initialize git-dpm

This commit is contained in:
SVN-Git Migration 2015-10-08 09:26:24 -07:00
commit 66e3cc8957
21 changed files with 287 additions and 553 deletions

8
debian/.git-dpm vendored Normal file
View File

@ -0,0 +1,8 @@
# see git-dpm(1) from git-dpm package
ed8b5f7485e7b707bd1aee95665254852ecf1848
ed8b5f7485e7b707bd1aee95665254852ecf1848
dfb12f36e61fa1e7eee95b322935d1ac6c0043e3
dfb12f36e61fa1e7eee95b322935d1ac6c0043e3
kitchen_1.1.1.orig.tar.gz
89de2b9cc2d61710de8da66c55b50ffa0edbb034
158105

View File

@ -1,19 +1,21 @@
From f2639ec4f393da7c790000b29525e331c81f2789 Mon Sep 17 00:00:00 2001
From ed8b5f7485e7b707bd1aee95665254852ecf1848 Mon Sep 17 00:00:00 2001
From: Simon Chopin <chopin.simon@gmail.com>
Date: Tue, 30 Apr 2013 18:27:15 +0200
Subject: [PATCH] Make kitchen.text.converters.exception_to_* not swallow
Subject: Make kitchen.text.converters.exception_to_* not swallow
general errors such as KeyboardInterrupt
Bug: https://fedorahosted.org/kitchen/ticket/9
Patch-Name: explicit_Exception_catching
---
kitchen/text/converters.py | 4 ++--
kitchen/text/converters.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/kitchen/text/converters.py b/kitchen/text/converters.py
index 8b5aac6..0fb882f 100644
index 0eb57b4..a89d092 100644
--- a/kitchen/text/converters.py
+++ b/kitchen/text/converters.py
@@ -502,7 +502,7 @@ def exception_to_unicode(exc, converters=EXCEPTION_CONVERTERS):
@@ -500,7 +500,7 @@ def exception_to_unicode(exc, converters=EXCEPTION_CONVERTERS):
for func in converters:
try:
msg = func(exc)
@ -22,7 +24,7 @@ index 8b5aac6..0fb882f 100644
pass
else:
break
@@ -534,7 +534,7 @@ def exception_to_bytes(exc, converters=EXCEPTION_CONVERTERS):
@@ -532,7 +532,7 @@ def exception_to_bytes(exc, converters=EXCEPTION_CONVERTERS):
for func in converters:
try:
msg = func(exc)
@ -31,6 +33,3 @@ index 8b5aac6..0fb882f 100644
pass
else:
break
--
1.7.10.4

View File

@ -1,32 +1,38 @@
From 9a6c2b3ee1be305e6260b3f1e1fc15abc1249656 Mon Sep 17 00:00:00 2001
From 5691cd2707367cb46b7bda425d093b3f39089bbf Mon Sep 17 00:00:00 2001
From: Simon Chopin <chopin.simon@gmail.com>
Date: Tue, 30 Apr 2013 17:28:27 +0200
Subject: [PATCH] Fix several typos
Subject: Fix several typos
Bug: https://fedorahosted.org/kitchen/ticket/8
Patch-Name: fix_typos
---
docs/api-pycompat27.rst | 2 +-
docs/designing-unicode-apis.rst | 2 +-
docs/hacking.rst | 2 +-
docs/unicode-frustrations.rst | 4 ++--
kitchen/i18n/__init__.py | 6 +++---
kitchen/pycompat25/collections/_defaultdict.py | 2 +-
kitchen/text/display.py | 6 +++---
releaseutils.py | 2 +-
docs/api-pycompat27.rst | 2 +-
docs/designing-unicode-apis.rst | 2 +-
docs/hacking.rst | 2 +-
docs/unicode-frustrations.rst | 4 ++--
kitchen/i18n/__init__.py | 6 +++---
kitchen/pycompat25/collections/_defaultdict.py | 2 +-
kitchen/text/display.py | 6 +++---
releaseutils.py | 2 +-
8 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/docs/api-pycompat27.rst b/docs/api-pycompat27.rst
index 6ef6db1..9654b31 100644
--- a/docs/api-pycompat27.rst
+++ b/docs/api-pycompat27.rst
@@ -31,5 +31,5 @@
@@ -31,5 +31,5 @@ New API Feature Ver
.. seealso::
- The stdlib :mod:`subprocess` documenation
+ The stdlib :mod:`subprocess` documentation
For complete documentation on how to use subprocess
diff --git a/docs/designing-unicode-apis.rst b/docs/designing-unicode-apis.rst
index 24265fb..5c909a9 100644
--- a/docs/designing-unicode-apis.rst
+++ b/docs/designing-unicode-apis.rst
@@ -581,7 +581,7 @@
@@ -581,7 +581,7 @@ you should consider when designing a :class:`unicode`-only API:
that you may not have thought of. Corner cases in these other places may
mean that processing bytes is desirable.
2. In python2, byte :class:`str` and :class:`unicode` are often used
@ -35,9 +41,11 @@ Bug: https://fedorahosted.org/kitchen/ticket/8
your API may have received :class:`str` from some other API and it would be
most convenient for their code if your API accepted it.
diff --git a/docs/hacking.rst b/docs/hacking.rst
index 9fbad1a..60f0ca6 100644
--- a/docs/hacking.rst
+++ b/docs/hacking.rst
@@ -272,7 +272,7 @@
@@ -272,7 +272,7 @@ version.
Criteria for subpackages in kitchen
===================================
@ -46,9 +54,11 @@ Bug: https://fedorahosted.org/kitchen/ticket/8
* Generally useful or needed for other pieces of kitchen.
diff --git a/docs/unicode-frustrations.rst b/docs/unicode-frustrations.rst
index c46e797..1588107 100644
--- a/docs/unicode-frustrations.rst
+++ b/docs/unicode-frustrations.rst
@@ -33,7 +33,7 @@
@@ -33,7 +33,7 @@ In python-2.x, there's two types that deal with text.
with byte :class:`str` as those devices are going to need to deal with
concrete implementations of what bytes represent your abstract characters.
@ -57,7 +67,7 @@ Bug: https://fedorahosted.org/kitchen/ticket/8
are several important APIs where only one or the other will do the right
thing. When you give the wrong type of string to an API that wants the other
type, you may end up with an exception being raised (:exc:`UnicodeDecodeError`
@@ -122,7 +122,7 @@
@@ -122,7 +122,7 @@ we're all set::
So that was simple, right? Well... there's one gotcha that makes things a bit
harder to debug sometimes. When you attempt to write non-:term:`ASCII`
@ -66,9 +76,11 @@ Bug: https://fedorahosted.org/kitchen/ticket/8
But what happens when you use :func:`print`? The terminal is a file-like object
so it should raise an exception right? The answer to that is....
*sometimes*:
diff --git a/kitchen/i18n/__init__.py b/kitchen/i18n/__init__.py
index 29561a2..a7eacf8 100644
--- a/kitchen/i18n/__init__.py
+++ b/kitchen/i18n/__init__.py
@@ -251,8 +251,8 @@
@@ -251,8 +251,8 @@ class DummyTranslations(object, gettext.NullTranslations):
def _reencode_if_necessary(self, message, output_encoding):
'''Return a byte string that's valid in a specific charset.
@ -79,7 +91,7 @@ Bug: https://fedorahosted.org/kitchen/ticket/8
output encoding.
'''
valid = False
@@ -668,7 +668,7 @@
@@ -668,7 +668,7 @@ def get_translation_object(domain, localedirs=tuple(), languages=None,
objects by default. These are superior to the
:class:`gettext.GNUTranslations` and :class:`gettext.NullTranslations`
objects because they are consistent in the string type they return and
@ -88,9 +100,11 @@ Bug: https://fedorahosted.org/kitchen/ticket/8
:exc:`UnicodeError`.
2. This function takes multiple directories to search for
:term:`message catalogs`.
diff --git a/kitchen/pycompat25/collections/_defaultdict.py b/kitchen/pycompat25/collections/_defaultdict.py
index 0560a3b..639af29 100644
--- a/kitchen/pycompat25/collections/_defaultdict.py
+++ b/kitchen/pycompat25/collections/_defaultdict.py
@@ -73,7 +73,7 @@
@@ -73,7 +73,7 @@ the defaultdict class provided by python-2.5 and above.
# Pylint disabled messages
#
@ -99,6 +113,8 @@ Bug: https://fedorahosted.org/kitchen/ticket/8
# the format of that name.
import types
diff --git a/kitchen/text/display.py b/kitchen/text/display.py
index 8624109..431815b 100644
--- a/kitchen/text/display.py
+++ b/kitchen/text/display.py
@@ -3,7 +3,7 @@
@ -119,7 +135,7 @@ Bug: https://fedorahosted.org/kitchen/ticket/8
# Toshio Kuratomi <toshio@fedoraproject.org>
# Tim Lauridsen
# Ville Skyttä
@@ -210,7 +210,7 @@
@@ -210,7 +210,7 @@ def _generate_combining_table():
This is used to generate the :data:`~kitchen.text.display._COMBINING`
table.
'''
@ -128,9 +144,11 @@ Bug: https://fedorahosted.org/kitchen/ticket/8
# characters generated ifrom Unicode 5.0 data by:
# "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c"
markus_kuhn_combining_5_0 = (
diff --git a/releaseutils.py b/releaseutils.py
index d10d62e..ba5d8da 100755
--- a/releaseutils.py
+++ b/releaseutils.py
@@ -35,7 +35,7 @@
@@ -35,7 +35,7 @@ def main():
shutil.rmtree('locale')
except OSError, e:
# If the error is that locale does not exist, we're okay. We're

View File

@ -1,13 +1,21 @@
Description: Normalize the locale names when testing i18n features
Author: Simon Chopin <chopin.simon@gmail.com>
From dc04f079ab85676464ed231c3675646135280f6d Mon Sep 17 00:00:00 2001
From: Simon Chopin <chopin.simon@gmail.com>
Date: Thu, 8 Oct 2015 09:26:21 -0700
Subject: Normalize the locale names when testing i18n features
Forwarded: https://lists.fedorahosted.org/pipermail/kitchen-devel/2013-April/000020.html
Last-Update: 2013-04-23
Patch-Name: normalize_test_unicode_name
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
tests/test_i18n.py | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/tests/test_i18n.py b/tests/test_i18n.py
index 62039ab..dc06a0c 100644
--- a/tests/test_i18n.py
+++ b/tests/test_i18n.py
@@ -13,7 +13,7 @@
@@ -13,7 +13,7 @@ import base_classes
class TestI18N_UTF8(unittest.TestCase):
def setUp(self):
self.old_LC_ALL = os.environ.get('LC_ALL', None)
@ -16,7 +24,7 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
def tearDown(self):
if self.old_LC_ALL:
@@ -331,7 +331,7 @@
@@ -331,7 +331,7 @@ class TestDummyTranslations(base_classes.UnicodeTestData):
class TestI18N_Latin1(unittest.TestCase):
def setUp(self):
self.old_LC_ALL = os.environ.get('LC_ALL', None)
@ -25,7 +33,7 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
def tearDown(self):
if self.old_LC_ALL:
@@ -357,7 +357,7 @@
@@ -357,7 +357,7 @@ class TestI18N_Latin1(unittest.TestCase):
class TestNewGNUTranslationsNoMatch(TestDummyTranslations):
def setUp(self):
self.old_LC_ALL = os.environ.get('LC_ALL', None)
@ -34,7 +42,7 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
self.translations = i18n.get_translation_object('test', ['%s/data/locale/' % os.path.dirname(__file__)])
def tearDown(self):
@@ -370,7 +370,7 @@
@@ -370,7 +370,7 @@ class TestNewGNUTranslationsNoMatch(TestDummyTranslations):
class TestNewGNURealTranslations_UTF8(unittest.TestCase):
def setUp(self):
self.old_LC_ALL = os.environ.get('LC_ALL', None)
@ -43,7 +51,7 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
self.translations = i18n.get_translation_object('test', ['%s/data/locale/' % os.path.dirname(__file__)])
def tearDown(self):
@@ -455,7 +455,7 @@
@@ -455,7 +455,7 @@ class TestNewGNURealTranslations_UTF8(unittest.TestCase):
class TestNewGNURealTranslations_Latin1(TestNewGNURealTranslations_UTF8):
def setUp(self):
self.old_LC_ALL = os.environ.get('LC_ALL', None)
@ -52,7 +60,7 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
self.translations = i18n.get_translation_object('test', ['%s/data/locale/' % os.path.dirname(__file__)])
def tearDown(self):
@@ -511,7 +511,7 @@
@@ -511,7 +511,7 @@ class TestFallbackNewGNUTranslationsNoMatch(TestDummyTranslations):
class TestFallbackNewGNURealTranslations_UTF8(unittest.TestCase):
def setUp(self):
self.old_LC_ALL = os.environ.get('LC_ALL', None)
@ -61,7 +69,7 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
self.translations = i18n.get_translation_object('test',
['%s/data/locale/' % os.path.dirname(__file__),
'%s/data/locale-old' % os.path.dirname(__file__)])
@@ -598,7 +598,7 @@
@@ -598,7 +598,7 @@ class TestFallbackNewGNURealTranslations_UTF8(unittest.TestCase):
class TestFallbackNewGNURealTranslations_Latin1(unittest.TestCase):
def setUp(self):
self.old_LC_ALL = os.environ.get('LC_ALL', None)
@ -70,7 +78,7 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
self.translations = i18n.get_translation_object('test',
['%s/data/locale/' % os.path.dirname(__file__),
'%s/data/locale-old' % os.path.dirname(__file__)])
@@ -685,7 +685,7 @@
@@ -685,7 +685,7 @@ class TestFallbackNewGNURealTranslations_Latin1(unittest.TestCase):
class TestFallback(unittest.TestCase):
def setUp(self):
self.old_LC_ALL = os.environ.get('LC_ALL', None)
@ -79,7 +87,7 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
self.gtranslations = i18n.get_translation_object('test',
['%s/data/locale/' % os.path.dirname(__file__),
'%s/data/locale-old' % os.path.dirname(__file__)])
@@ -721,7 +721,7 @@
@@ -721,7 +721,7 @@ class TestFallback(unittest.TestCase):
class TestDefaultLocaleDir(unittest.TestCase):
def setUp(self):
self.old_LC_ALL = os.environ.get('LC_ALL', None)

View File

@ -1,23 +1,30 @@
Description: Remove the pycompat* submodules
From 613271973b9fc62cbfce188b5d60157d695a572b Mon Sep 17 00:00:00 2001
From: Simon Chopin <chopin.simon@gmail.com>
Date: Thu, 8 Oct 2015 09:26:23 -0700
Subject: Remove the pycompat* submodules
Those are not needed in Debian as we already ship the latest runtime version.
Author: Simon Chopin <chopin.simon@gmail.com>
Forwarded: not-needed
Last-Update: 2013-04-30
Patch-Name: remove_compat_layers
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/setup.py
+++ b/setup.py
@@ -52,6 +52,6 @@
'Topic :: Software Development :: Libraries :: Python Modules',
'Topic :: Text Processing :: General',
],
- packages=find_packages(),
+ packages=find_packages(exclude=['*pycompat*']),
data_files=[],
)
kitchen/text/converters.py | 2 -
kitchen/text/misc.py | 3 -
setup.py | 2 +-
tests/test__all__.py | 2 -
tests/test_base64.py | 190 ---------------------------------------------
tests/test_pycompat.py | 25 ------
tests/test_pycompat24.py | 109 --------------------------
7 files changed, 1 insertion(+), 332 deletions(-)
delete mode 100644 tests/test_base64.py
delete mode 100644 tests/test_pycompat.py
delete mode 100644 tests/test_pycompat24.py
diff --git a/kitchen/text/converters.py b/kitchen/text/converters.py
index 8b5aac6..0eb57b4 100644
--- a/kitchen/text/converters.py
+++ b/kitchen/text/converters.py
@@ -53,8 +53,6 @@
@@ -53,8 +53,6 @@ import xml.sax.saxutils
# We need to access b_() for localizing our strings but we'll end up with
# a circular import if we import it directly.
import kitchen as k
@ -26,9 +33,11 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
from kitchen.text.exceptions import ControlCharError, XmlEncodeError
from kitchen.text.misc import guess_encoding, html_entities_unescape, \
diff --git a/kitchen/text/misc.py b/kitchen/text/misc.py
index ca1be44..305ebfb 100644
--- a/kitchen/text/misc.py
+++ b/kitchen/text/misc.py
@@ -40,11 +40,8 @@
@@ -40,11 +40,8 @@ except ImportError:
# We need to access b_() for localizing our strings but we'll end up with
# a circular import if we import it directly.
import kitchen as k
@ -40,149 +49,23 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
# Define a threshold for chardet confidence. If we fall below this we decode
# byte strings we're guessing about as latin1
_CHARDET_THRESHHOLD = 0.6
--- a/tests/test_pycompat.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-import unittest
-from nose import tools
-
-class TestUsableModules(unittest.TestCase):
- def test_subprocess(self):
- '''Test that importing subprocess as a module works
- '''
- try:
- from kitchen.pycompat24.subprocess import Popen
- except ImportError:
- tools.ok_(False, 'Unable to import pycompat24.subprocess as a module')
- try:
- from kitchen.pycompat27.subprocess import Popen
- except ImportError:
- tools.ok_(False, 'Unable to import pycompat27.subprocess as a module')
-
- def test_base64(self):
- '''Test that importing base64 as a module works
- '''
- try:
- from kitchen.pycompat24.base64 import b64encode
- except ImportError:
- tools.ok_(False, 'Unable to import pycompat24.base64 as a module')
--- a/tests/test_pycompat24.py
+++ /dev/null
@@ -1,109 +0,0 @@
-# -*- 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))
diff --git a/setup.py b/setup.py
index 238af78..914f61c 100755
--- a/setup.py
+++ b/setup.py
@@ -52,6 +52,6 @@ setup(name='kitchen',
'Topic :: Software Development :: Libraries :: Python Modules',
'Topic :: Text Processing :: General',
],
- packages=find_packages(),
+ packages=find_packages(exclude=['*pycompat*']),
data_files=[],
)
diff --git a/tests/test__all__.py b/tests/test__all__.py
index 9f58f7a..a0be25d 100644
--- a/tests/test__all__.py
+++ b/tests/test__all__.py
@@ -4,8 +4,6 @@
@@ -4,8 +4,6 @@ from nose import tools
import os
import types
import warnings
@ -191,6 +74,9 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
def logit(msg):
log = open('/var/tmp/test.log', 'a')
diff --git a/tests/test_base64.py b/tests/test_base64.py
deleted file mode 100644
index bdb388d..0000000
--- a/tests/test_base64.py
+++ /dev/null
@@ -1,190 +0,0 @@
@ -384,3 +270,149 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
-#
-#if __name__ == '__main__':
-# test_main()
diff --git a/tests/test_pycompat.py b/tests/test_pycompat.py
deleted file mode 100644
index 50a059b..0000000
--- a/tests/test_pycompat.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-import unittest
-from nose import tools
-
-class TestUsableModules(unittest.TestCase):
- def test_subprocess(self):
- '''Test that importing subprocess as a module works
- '''
- try:
- from kitchen.pycompat24.subprocess import Popen
- except ImportError:
- tools.ok_(False, 'Unable to import pycompat24.subprocess as a module')
- try:
- from kitchen.pycompat27.subprocess import Popen
- except ImportError:
- tools.ok_(False, 'Unable to import pycompat27.subprocess as a module')
-
- def test_base64(self):
- '''Test that importing base64 as a module works
- '''
- try:
- from kitchen.pycompat24.base64 import b64encode
- except ImportError:
- tools.ok_(False, 'Unable to import pycompat24.base64 as a module')
diff --git a/tests/test_pycompat24.py b/tests/test_pycompat24.py
deleted file mode 100644
index adea7fe..0000000
--- a/tests/test_pycompat24.py
+++ /dev/null
@@ -1,109 +0,0 @@
-# -*- 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))

View File

@ -31,5 +31,5 @@ New API Feature Ver
.. seealso::
The stdlib :mod:`subprocess` documenation
The stdlib :mod:`subprocess` documentation
For complete documentation on how to use subprocess

View File

@ -581,7 +581,7 @@ you should consider when designing a :class:`unicode`-only API:
that you may not have thought of. Corner cases in these other places may
mean that processing bytes is desirable.
2. In python2, byte :class:`str` and :class:`unicode` are often used
interchangably with each other. That means that people programming against
interchangeably with each other. That means that people programming against
your API may have received :class:`str` from some other API and it would be
most convenient for their code if your API accepted it.

View File

@ -272,7 +272,7 @@ version.
Criteria for subpackages in kitchen
===================================
Supackages within kitchen should meet these criteria:
Subpackages within kitchen should meet these criteria:
* Generally useful or needed for other pieces of kitchen.

View File

@ -33,7 +33,7 @@ In python-2.x, there's two types that deal with text.
with byte :class:`str` as those devices are going to need to deal with
concrete implementations of what bytes represent your abstract characters.
In the python2 world many APIs use these two classes interchangably but there
In the python2 world many APIs use these two classes interchangeably but there
are several important APIs where only one or the other will do the right
thing. When you give the wrong type of string to an API that wants the other
type, you may end up with an exception being raised (:exc:`UnicodeDecodeError`
@ -122,7 +122,7 @@ we're all set::
So that was simple, right? Well... there's one gotcha that makes things a bit
harder to debug sometimes. When you attempt to write non-:term:`ASCII`
:class:`unicode` strings to a file-like object you get a traceback everytime.
:class:`unicode` strings to a file-like object you get a traceback every time.
But what happens when you use :func:`print`? The terminal is a file-like object
so it should raise an exception right? The answer to that is....
*sometimes*:

View File

@ -251,8 +251,8 @@ class DummyTranslations(object, gettext.NullTranslations):
def _reencode_if_necessary(self, message, output_encoding):
'''Return a byte string that's valid in a specific charset.
.. warning:: This method may mangle the message if the inpput encoding
is not known or the message isn't represntable in the chosen
.. warning:: This method may mangle the message if the input encoding
is not known or the message isn't representable in the chosen
output encoding.
'''
valid = False
@ -668,7 +668,7 @@ def get_translation_object(domain, localedirs=tuple(), languages=None,
objects by default. These are superior to the
:class:`gettext.GNUTranslations` and :class:`gettext.NullTranslations`
objects because they are consistent in the string type they return and
they fix several issues that can causethe |stdlib|_ objects to throw
they fix several issues that can cause the |stdlib|_ objects to throw
:exc:`UnicodeError`.
2. This function takes multiple directories to search for
:term:`message catalogs`.

View File

@ -73,7 +73,7 @@ the defaultdict class provided by python-2.5 and above.
# Pylint disabled messages
#
# :C0103: We're defnining a compatible class name therefore we need to match
# :C0103: We're defining a compatible class name therefore we need to match
# the format of that name.
import types

View File

@ -53,8 +53,6 @@ import xml.sax.saxutils
# We need to access b_() for localizing our strings but we'll end up with
# a circular import if we import it directly.
import kitchen as k
from kitchen.pycompat24 import sets
sets.add_builtin_set()
from kitchen.text.exceptions import ControlCharError, XmlEncodeError
from kitchen.text.misc import guess_encoding, html_entities_unescape, \
@ -502,7 +500,7 @@ def exception_to_unicode(exc, converters=EXCEPTION_CONVERTERS):
for func in converters:
try:
msg = func(exc)
except:
except Exception:
pass
else:
break
@ -534,7 +532,7 @@ def exception_to_bytes(exc, converters=EXCEPTION_CONVERTERS):
for func in converters:
try:
msg = func(exc)
except:
except Exception:
pass
else:
break

View File

@ -3,7 +3,7 @@
# Copyright (c) 2010 Red Hat, Inc.
# Copyright (c) 2010 Ville Skyttä
# Copyright (c) 2009 Tim Lauridsen
# Copyright (c) 2007 Marcus Kuhn
# Copyright (c) 2007 Markus Kuhn
#
# kitchen is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free
@ -20,7 +20,7 @@
#
# Authors:
# James Antill <james@fedoraproject.org>
# Marcus Kuhn
# Markus Kuhn
# Toshio Kuratomi <toshio@fedoraproject.org>
# Tim Lauridsen
# Ville Skyttä
@ -210,7 +210,7 @@ def _generate_combining_table():
This is used to generate the :data:`~kitchen.text.display._COMBINING`
table.
'''
# Marcus Kuhn's sorted list of non-overlapping intervals of non-spacing
# Markus Kuhn's sorted list of non-overlapping intervals of non-spacing
# characters generated ifrom Unicode 5.0 data by:
# "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c"
markus_kuhn_combining_5_0 = (

View File

@ -40,11 +40,8 @@ except ImportError:
# We need to access b_() for localizing our strings but we'll end up with
# a circular import if we import it directly.
import kitchen as k
from kitchen.pycompat24 import sets
from kitchen.text.exceptions import ControlCharError
sets.add_builtin_set()
# Define a threshold for chardet confidence. If we fall below this we decode
# byte strings we're guessing about as latin1
_CHARDET_THRESHHOLD = 0.6

View File

@ -35,7 +35,7 @@ def main():
shutil.rmtree('locale')
except OSError, e:
# If the error is that locale does not exist, we're okay. We're
# deleting it here, afterall
# deleting it here, after all
if e.errno != 2:
raise

View File

@ -52,6 +52,6 @@ setup(name='kitchen',
'Topic :: Software Development :: Libraries :: Python Modules',
'Topic :: Text Processing :: General',
],
packages=find_packages(),
packages=find_packages(exclude=['*pycompat*']),
data_files=[],
)

View File

@ -4,8 +4,6 @@ from nose import tools
import os
import types
import warnings
from kitchen.pycompat24.sets import add_builtin_set
add_builtin_set()
def logit(msg):
log = open('/var/tmp/test.log', 'a')

View File

@ -1,190 +0,0 @@
import unittest
from test import test_support
from kitchen.pycompat24.base64 import _base64 as base64
class LegacyBase64TestCase(unittest.TestCase):
def test_encodestring(self):
eq = self.assertEqual
eq(base64.encodestring("www.python.org"), "d3d3LnB5dGhvbi5vcmc=\n")
eq(base64.encodestring("a"), "YQ==\n")
eq(base64.encodestring("ab"), "YWI=\n")
eq(base64.encodestring("abc"), "YWJj\n")
eq(base64.encodestring(""), "")
eq(base64.encodestring("abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"0123456789!@#0^&*();:<>,. []{}"),
"YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE"
"RUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0\nNT"
"Y3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ==\n")
def test_decodestring(self):
eq = self.assertEqual
eq(base64.decodestring("d3d3LnB5dGhvbi5vcmc=\n"), "www.python.org")
eq(base64.decodestring("YQ==\n"), "a")
eq(base64.decodestring("YWI=\n"), "ab")
eq(base64.decodestring("YWJj\n"), "abc")
eq(base64.decodestring("YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE"
"RUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0\nNT"
"Y3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ==\n"),
"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"0123456789!@#0^&*();:<>,. []{}")
eq(base64.decodestring(''), '')
def test_encode(self):
eq = self.assertEqual
from cStringIO import StringIO
infp = StringIO('abcdefghijklmnopqrstuvwxyz'
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
'0123456789!@#0^&*();:<>,. []{}')
outfp = StringIO()
base64.encode(infp, outfp)
eq(outfp.getvalue(),
'YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE'
'RUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0\nNT'
'Y3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ==\n')
def test_decode(self):
from cStringIO import StringIO
infp = StringIO('d3d3LnB5dGhvbi5vcmc=')
outfp = StringIO()
base64.decode(infp, outfp)
self.assertEqual(outfp.getvalue(), 'www.python.org')
class BaseXYTestCase(unittest.TestCase):
def test_b64encode(self):
eq = self.assertEqual
# Test default alphabet
eq(base64.b64encode("www.python.org"), "d3d3LnB5dGhvbi5vcmc=")
eq(base64.b64encode('\x00'), 'AA==')
eq(base64.b64encode("a"), "YQ==")
eq(base64.b64encode("ab"), "YWI=")
eq(base64.b64encode("abc"), "YWJj")
eq(base64.b64encode(""), "")
eq(base64.b64encode("abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"0123456789!@#0^&*();:<>,. []{}"),
"YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE"
"RUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NT"
"Y3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ==")
# Test with arbitrary alternative characters
eq(base64.b64encode('\xd3V\xbeo\xf7\x1d', altchars='*$'), '01a*b$cd')
# Test standard alphabet
eq(base64.standard_b64encode("www.python.org"), "d3d3LnB5dGhvbi5vcmc=")
eq(base64.standard_b64encode("a"), "YQ==")
eq(base64.standard_b64encode("ab"), "YWI=")
eq(base64.standard_b64encode("abc"), "YWJj")
eq(base64.standard_b64encode(""), "")
eq(base64.standard_b64encode("abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"0123456789!@#0^&*();:<>,. []{}"),
"YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE"
"RUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NT"
"Y3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ==")
# Test with 'URL safe' alternative characters
eq(base64.urlsafe_b64encode('\xd3V\xbeo\xf7\x1d'), '01a-b_cd')
def test_b64decode(self):
eq = self.assertEqual
eq(base64.b64decode("d3d3LnB5dGhvbi5vcmc="), "www.python.org")
eq(base64.b64decode('AA=='), '\x00')
eq(base64.b64decode("YQ=="), "a")
eq(base64.b64decode("YWI="), "ab")
eq(base64.b64decode("YWJj"), "abc")
eq(base64.b64decode("YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE"
"RUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0\nNT"
"Y3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ=="),
"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"0123456789!@#0^&*();:<>,. []{}")
eq(base64.b64decode(''), '')
# Test with arbitrary alternative characters
eq(base64.b64decode('01a*b$cd', altchars='*$'), '\xd3V\xbeo\xf7\x1d')
# Test standard alphabet
eq(base64.standard_b64decode("d3d3LnB5dGhvbi5vcmc="), "www.python.org")
eq(base64.standard_b64decode("YQ=="), "a")
eq(base64.standard_b64decode("YWI="), "ab")
eq(base64.standard_b64decode("YWJj"), "abc")
eq(base64.standard_b64decode(""), "")
eq(base64.standard_b64decode("YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE"
"RUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NT"
"Y3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ=="),
"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"0123456789!@#0^&*();:<>,. []{}")
# Test with 'URL safe' alternative characters
eq(base64.urlsafe_b64decode('01a-b_cd'), '\xd3V\xbeo\xf7\x1d')
def test_b64decode_error(self):
self.assertRaises(TypeError, base64.b64decode, 'abc')
def test_b32encode(self):
eq = self.assertEqual
eq(base64.b32encode(''), '')
eq(base64.b32encode('\x00'), 'AA======')
eq(base64.b32encode('a'), 'ME======')
eq(base64.b32encode('ab'), 'MFRA====')
eq(base64.b32encode('abc'), 'MFRGG===')
eq(base64.b32encode('abcd'), 'MFRGGZA=')
eq(base64.b32encode('abcde'), 'MFRGGZDF')
def test_b32decode(self):
eq = self.assertEqual
eq(base64.b32decode(''), '')
eq(base64.b32decode('AA======'), '\x00')
eq(base64.b32decode('ME======'), 'a')
eq(base64.b32decode('MFRA===='), 'ab')
eq(base64.b32decode('MFRGG==='), 'abc')
eq(base64.b32decode('MFRGGZA='), 'abcd')
eq(base64.b32decode('MFRGGZDF'), 'abcde')
def test_b32decode_casefold(self):
eq = self.assertEqual
eq(base64.b32decode('', True), '')
eq(base64.b32decode('ME======', True), 'a')
eq(base64.b32decode('MFRA====', True), 'ab')
eq(base64.b32decode('MFRGG===', True), 'abc')
eq(base64.b32decode('MFRGGZA=', True), 'abcd')
eq(base64.b32decode('MFRGGZDF', True), 'abcde')
# Lower cases
eq(base64.b32decode('me======', True), 'a')
eq(base64.b32decode('mfra====', True), 'ab')
eq(base64.b32decode('mfrgg===', True), 'abc')
eq(base64.b32decode('mfrggza=', True), 'abcd')
eq(base64.b32decode('mfrggzdf', True), 'abcde')
# Expected exceptions
self.assertRaises(TypeError, base64.b32decode, 'me======')
# Mapping zero and one
eq(base64.b32decode('MLO23456'), 'b\xdd\xad\xf3\xbe')
eq(base64.b32decode('M1023456', map01='L'), 'b\xdd\xad\xf3\xbe')
eq(base64.b32decode('M1023456', map01='I'), 'b\x1d\xad\xf3\xbe')
def test_b32decode_error(self):
self.assertRaises(TypeError, base64.b32decode, 'abc')
self.assertRaises(TypeError, base64.b32decode, 'ABCDEF==')
def test_b16encode(self):
eq = self.assertEqual
eq(base64.b16encode('\x01\x02\xab\xcd\xef'), '0102ABCDEF')
eq(base64.b16encode('\x00'), '00')
def test_b16decode(self):
eq = self.assertEqual
eq(base64.b16decode('0102ABCDEF'), '\x01\x02\xab\xcd\xef')
eq(base64.b16decode('00'), '\x00')
# Lower case is not allowed without a flag
self.assertRaises(TypeError, base64.b16decode, '0102abcdef')
# Case fold
eq(base64.b16decode('0102abcdef', True), '\x01\x02\xab\xcd\xef')
#def test_main():
# test_support.run_unittest(__name__)
#
#if __name__ == '__main__':
# test_main()

View File

@ -13,7 +13,7 @@ import base_classes
class TestI18N_UTF8(unittest.TestCase):
def setUp(self):
self.old_LC_ALL = os.environ.get('LC_ALL', None)
os.environ['LC_ALL'] = 'pt_BR.UTF8'
os.environ['LC_ALL'] = 'pt_BR.UTF-8'
def tearDown(self):
if self.old_LC_ALL:
@ -331,7 +331,7 @@ class TestDummyTranslations(base_classes.UnicodeTestData):
class TestI18N_Latin1(unittest.TestCase):
def setUp(self):
self.old_LC_ALL = os.environ.get('LC_ALL', None)
os.environ['LC_ALL'] = 'pt_BR.ISO8859-1'
os.environ['LC_ALL'] = 'pt_BR.ISO-8859-1'
def tearDown(self):
if self.old_LC_ALL:
@ -357,7 +357,7 @@ class TestI18N_Latin1(unittest.TestCase):
class TestNewGNUTranslationsNoMatch(TestDummyTranslations):
def setUp(self):
self.old_LC_ALL = os.environ.get('LC_ALL', None)
os.environ['LC_ALL'] = 'pt_BR.utf8'
os.environ['LC_ALL'] = 'pt_BR.UTF-8'
self.translations = i18n.get_translation_object('test', ['%s/data/locale/' % os.path.dirname(__file__)])
def tearDown(self):
@ -370,7 +370,7 @@ class TestNewGNUTranslationsNoMatch(TestDummyTranslations):
class TestNewGNURealTranslations_UTF8(unittest.TestCase):
def setUp(self):
self.old_LC_ALL = os.environ.get('LC_ALL', None)
os.environ['LC_ALL'] = 'pt_BR.UTF8'
os.environ['LC_ALL'] = 'pt_BR.UTF-8'
self.translations = i18n.get_translation_object('test', ['%s/data/locale/' % os.path.dirname(__file__)])
def tearDown(self):
@ -455,7 +455,7 @@ class TestNewGNURealTranslations_UTF8(unittest.TestCase):
class TestNewGNURealTranslations_Latin1(TestNewGNURealTranslations_UTF8):
def setUp(self):
self.old_LC_ALL = os.environ.get('LC_ALL', None)
os.environ['LC_ALL'] = 'pt_BR.ISO8859-1'
os.environ['LC_ALL'] = 'pt_BR.ISO-8859-1'
self.translations = i18n.get_translation_object('test', ['%s/data/locale/' % os.path.dirname(__file__)])
def tearDown(self):
@ -511,7 +511,7 @@ class TestFallbackNewGNUTranslationsNoMatch(TestDummyTranslations):
class TestFallbackNewGNURealTranslations_UTF8(unittest.TestCase):
def setUp(self):
self.old_LC_ALL = os.environ.get('LC_ALL', None)
os.environ['LC_ALL'] = 'pt_BR.UTF8'
os.environ['LC_ALL'] = 'pt_BR.UTF-8'
self.translations = i18n.get_translation_object('test',
['%s/data/locale/' % os.path.dirname(__file__),
'%s/data/locale-old' % os.path.dirname(__file__)])
@ -598,7 +598,7 @@ class TestFallbackNewGNURealTranslations_UTF8(unittest.TestCase):
class TestFallbackNewGNURealTranslations_Latin1(unittest.TestCase):
def setUp(self):
self.old_LC_ALL = os.environ.get('LC_ALL', None)
os.environ['LC_ALL'] = 'pt_BR.ISO8859-1'
os.environ['LC_ALL'] = 'pt_BR.ISO-8859-1'
self.translations = i18n.get_translation_object('test',
['%s/data/locale/' % os.path.dirname(__file__),
'%s/data/locale-old' % os.path.dirname(__file__)])
@ -685,7 +685,7 @@ class TestFallbackNewGNURealTranslations_Latin1(unittest.TestCase):
class TestFallback(unittest.TestCase):
def setUp(self):
self.old_LC_ALL = os.environ.get('LC_ALL', None)
os.environ['LC_ALL'] = 'pt_BR.ISO8859-1'
os.environ['LC_ALL'] = 'pt_BR.ISO-8859-1'
self.gtranslations = i18n.get_translation_object('test',
['%s/data/locale/' % os.path.dirname(__file__),
'%s/data/locale-old' % os.path.dirname(__file__)])
@ -721,7 +721,7 @@ class TestFallback(unittest.TestCase):
class TestDefaultLocaleDir(unittest.TestCase):
def setUp(self):
self.old_LC_ALL = os.environ.get('LC_ALL', None)
os.environ['LC_ALL'] = 'pt_BR.UTF8'
os.environ['LC_ALL'] = 'pt_BR.UTF-8'
self.old_DEFAULT_LOCALEDIRS = i18n._DEFAULT_LOCALEDIR
i18n._DEFAULT_LOCALEDIR = '%s/data/locale/' % os.path.dirname(__file__)
self.translations = i18n.get_translation_object('test')

View File

@ -1,25 +0,0 @@
# -*- coding: utf-8 -*-
#
import unittest
from nose import tools
class TestUsableModules(unittest.TestCase):
def test_subprocess(self):
'''Test that importing subprocess as a module works
'''
try:
from kitchen.pycompat24.subprocess import Popen
except ImportError:
tools.ok_(False, 'Unable to import pycompat24.subprocess as a module')
try:
from kitchen.pycompat27.subprocess import Popen
except ImportError:
tools.ok_(False, 'Unable to import pycompat27.subprocess as a module')
def test_base64(self):
'''Test that importing base64 as a module works
'''
try:
from kitchen.pycompat24.base64 import b64encode
except ImportError:
tools.ok_(False, 'Unable to import pycompat24.base64 as a module')

View File

@ -1,109 +0,0 @@
# -*- 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))