Skip to content

Commit

Permalink
support Python 3.5
Browse files Browse the repository at this point in the history
Signed-off-by: Thomas Grainger <tom.grainger@procensus.com>
  • Loading branch information
graingert committed May 19, 2016
1 parent 26f2b69 commit e0b9cb2
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 64 deletions.
3 changes: 2 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
sudo: false
language: python
python:
- "2.7"
- "3.5"
env:
- TOX_ENV=py26
- TOX_ENV=py27
- TOX_ENV=py33
- TOX_ENV=py34
- TOX_ENV=py35
- TOX_ENV=flake8
install:
- pip install tox
Expand Down
10 changes: 2 additions & 8 deletions docker/utils/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -546,12 +546,6 @@ def datetime_to_timestamp(dt):
return delta.seconds + delta.days * 24 * 3600


def longint(n):
if six.PY3:
return int(n)
return long(n)


def parse_bytes(s):
if isinstance(s, six.integer_types + (float,)):
return s
Expand All @@ -574,15 +568,15 @@ def parse_bytes(s):

if suffix in units.keys() or suffix.isdigit():
try:
digits = longint(digits_part)
digits = int(digits_part)
except ValueError:
raise errors.DockerException(
'Failed converting the string value for memory ({0}) to'
' an integer.'.format(digits_part)
)

# Reconvert to long for the final result
s = longint(digits * units[suffix])
s = int(digits * units[suffix])
else:
raise errors.DockerException(
'The specified value for memory ({0}) should specify the'
Expand Down
4 changes: 4 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
':python_version < "3.3"': 'ipaddress >= 1.0.16',
}

version = None
exec(open('docker/version.py').read())

with open('./test-requirements.txt') as test_reqs_txt:
Expand All @@ -42,10 +43,13 @@
'Intended Audience :: Developers',
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Topic :: Utilities',
'License :: OSI Approved :: Apache Software License',
],
Expand Down
4 changes: 2 additions & 2 deletions test-requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
mock==1.0.1
pytest==2.7.2
pytest==2.9.1
coverage==3.7.1
pytest-cov==2.1.0
flake8==2.4.1
flake8==2.4.1
70 changes: 19 additions & 51 deletions tests/unit/utils_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -299,56 +299,30 @@ def test_convert_volume_binds_no_mode(self):
self.assertEqual(convert_volume_binds(data), ['/mnt/vol1:/data:rw'])

def test_convert_volume_binds_unicode_bytes_input(self):
if six.PY2:
expected = [unicode('/mnt/지연:/unicode/박:rw', 'utf-8')]

data = {
'/mnt/지연': {
'bind': '/unicode/박',
'mode': 'rw'
}
}
self.assertEqual(
convert_volume_binds(data), expected
)
else:
expected = ['/mnt/지연:/unicode/박:rw']
expected = [u'/mnt/지연:/unicode/박:rw']

data = {
bytes('/mnt/지연', 'utf-8'): {
'bind': bytes('/unicode/박', 'utf-8'),
'mode': 'rw'
}
data = {
u'/mnt/지연'.encode('utf-8'): {
'bind': u'/unicode/박'.encode('utf-8'),
'mode': 'rw'
}
self.assertEqual(
convert_volume_binds(data), expected
)
}
self.assertEqual(
convert_volume_binds(data), expected
)

def test_convert_volume_binds_unicode_unicode_input(self):
if six.PY2:
expected = [unicode('/mnt/지연:/unicode/박:rw', 'utf-8')]

data = {
unicode('/mnt/지연', 'utf-8'): {
'bind': unicode('/unicode/박', 'utf-8'),
'mode': 'rw'
}
}
self.assertEqual(
convert_volume_binds(data), expected
)
else:
expected = ['/mnt/지연:/unicode/박:rw']
expected = [u'/mnt/지연:/unicode/박:rw']

data = {
'/mnt/지연': {
'bind': '/unicode/박',
'mode': 'rw'
}
data = {
u'/mnt/지연': {
'bind': u'/unicode/박',
'mode': 'rw'
}
self.assertEqual(
convert_volume_binds(data), expected
)
}
self.assertEqual(
convert_volume_binds(data), expected
)


class ParseEnvFileTest(base.BaseTestCase):
Expand Down Expand Up @@ -612,13 +586,7 @@ def test_create_ipam_config(self):
class SplitCommandTest(base.BaseTestCase):

def test_split_command_with_unicode(self):
if six.PY2:
self.assertEqual(
split_command(unicode('echo μμ', 'utf-8')),
['echo', 'μμ']
)
else:
self.assertEqual(split_command('echo μμ'), ['echo', 'μμ'])
self.assertEqual(split_command(u'echo μμ'), ['echo', 'μμ'])

@pytest.mark.skipif(six.PY3, reason="shlex doesn't support bytes in py3")
def test_split_command_with_bytes(self):
Expand Down
4 changes: 2 additions & 2 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[tox]
envlist = py26, py27, py33, py34, flake8
envlist = py26, py27, py33, py34, py35, flake8
skipsdist=True

[testenv]
Expand All @@ -11,5 +11,5 @@ deps =
-r{toxinidir}/requirements.txt

[testenv:flake8]
commands = flake8 docker tests
commands = flake8 docker tests setup.py
deps = flake8

0 comments on commit e0b9cb2

Please sign in to comment.