From 738919a21ab13fffa321e8c3bf84378d9fccbd67 Mon Sep 17 00:00:00 2001 From: Jorge Bastida Date: Sun, 5 Jun 2016 10:21:21 +0100 Subject: [PATCH] Fix python3 integration tests and make it easy to run thme in the future --- CHANGELOG | 6 ++++++ gordon/utils.py | 10 +++++----- gordon/utils_tests.py | 2 +- setup.py | 2 +- tests/apigateway/tests.py | 16 ++++++++-------- tests/kinesisstream/tests.py | 2 +- tests/lambdajava/tests.py | 2 +- tests/lambdajs/tests.py | 2 +- tests/lambdapython/tests.py | 2 +- tests/projectupdate/tests.py | 4 ++-- tox.ini | 11 +++++++++-- 11 files changed, 36 insertions(+), 23 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 4e669b1..9b71a6b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,9 @@ +0.2.1 +======= +* Fix typos and grammar errors all across the the documentation. +* Fix Python 3 support. +* Add tox environment for python 3 integration tests. + 0.2 ==== * Add ``api_key_required`` to apigateway integration. diff --git a/gordon/utils.py b/gordon/utils.py index a48ee0d..3674175 100644 --- a/gordon/utils.py +++ b/gordon/utils.py @@ -67,7 +67,7 @@ def get_zip_hash(obj): digest = hashlib.sha1() zfile = zipfile.ZipFile(obj, 'r') for path in sorted(zfile.namelist()): - digest.update(path) + digest.update(six.text_type(path).encode('utf-8')) digest.update(zfile.read(path)) return digest.hexdigest() @@ -78,8 +78,8 @@ def get_file_hash(filename): with open(filename, 'r') as f: digest = hashlib.sha1() - digest.update(filename) - digest.update(f.read()) + digest.update(six.text_type(filename).encode('utf-8')) + digest.update(six.text_type(f.read()).encode('utf-8')) return digest.hexdigest() @@ -224,7 +224,7 @@ def get_template_s3_key(filename): data = f.read() return 'cf_templates/{}/{}.json'.format( datetime.now().strftime("%Y-%m-%d"), - hashlib.sha1(data).hexdigest()[:8] + hashlib.sha1(six.text_type(data).encode('utf-8')).hexdigest()[:8] ) @@ -306,7 +306,7 @@ def wait_for_cf_status(stack_id, success_if, abort_if=None, spin_every=50, every abort_if = abort_if or DELETE_STACK_STATUS clean_output = False stack_status = 'N/A' - for m, i in mill(xrange(0, limit, spin_every)): + for m, i in mill(range(0, limit, spin_every)): if not (i % every): stack = get_cf_stack(name=stack_id) if stack: diff --git a/gordon/utils_tests.py b/gordon/utils_tests.py index 9701cd1..511a522 100644 --- a/gordon/utils_tests.py +++ b/gordon/utils_tests.py @@ -158,7 +158,7 @@ def assert_stack_succeed(self, stack_name): self.assertIn(stack['StackStatus'], ('CREATE_COMPLETE',)) def assert_lambda_response(self, response, value): - self.assertEqual(json.loads(response['Payload'].read()), value) + self.assertEqual(json.loads(response['Payload'].read().decode('utf-8')), value) def get_lambda(self, function_name): client = boto3.client('lambda') diff --git a/setup.py b/setup.py index 17307ab..6c424c3 100644 --- a/setup.py +++ b/setup.py @@ -18,7 +18,7 @@ setup( name='gordon', - version='0.2.0', + version='0.2.1', url='http://github.com/jorgebastida/gordon', license='BSD', author='Jorge Bastida', diff --git a/tests/apigateway/tests.py b/tests/apigateway/tests.py index 14279ac..a4c13a3 100644 --- a/tests/apigateway/tests.py +++ b/tests/apigateway/tests.py @@ -23,7 +23,7 @@ def test_0001_project(self): self.assertEqual(lambda_['Timeout'], 123) aliases = self.get_lambda_aliases(function_name=lambda_['FunctionName']) - self.assertEqual(aliases.keys(), ['current']) + self.assertEqual(list(aliases.keys()), ['current']) response = self.invoke_lambda( function_name=lambda_['FunctionName'], @@ -38,7 +38,7 @@ def test_0001_project(self): self.assertEqual(lambda_['Timeout'], 123) aliases = self.get_lambda_aliases(function_name=lambda_['FunctionName']) - self.assertEqual(aliases.keys(), ['current']) + self.assertEqual(list(aliases.keys()), ['current']) response = self.invoke_lambda( function_name=lambda_['FunctionName'], @@ -52,27 +52,27 @@ def test_0001_project(self): response = requests.get(endpoint) self.assertEqual(response.status_code, 200) - self.assertEqual(response.content, '"hello"') + self.assertEqual(response.content.decode('utf-8'), '"hello"') response = requests.get('{}/404'.format(endpoint)) self.assertEqual(response.status_code, 404) - self.assertEqual(response.content, '"hello"') + self.assertEqual(response.content.decode('utf-8'), '"hello"') response = requests.get('{}/shop/2'.format(endpoint)) self.assertEqual(response.status_code, 200) - self.assertEqual(response.content, '"hello"') + self.assertEqual(response.content.decode('utf-8'), '"hello"') response = requests.get('{}/http'.format(endpoint)) self.assertEqual(response.status_code, 200) - self.assertEqual(json.loads(response.content)['args'], {'hello': 'world'}) + self.assertEqual(json.loads(response.content.decode('utf-8'))['args'], {'hello': 'world'}) response = requests.get('{}/complex'.format(endpoint)) self.assertEqual(response.status_code, 200) - self.assertEqual(response.content, '"hello"') + self.assertEqual(response.content.decode('utf-8'), '"hello"') response = requests.post('{}/complex'.format(endpoint)) self.assertEqual(response.status_code, 200) - self.assertEqual(response.content, '"bye"') + self.assertEqual(response.content.decode('utf-8'), '"bye"') class BuildTest(BaseBuildTest): diff --git a/tests/kinesisstream/tests.py b/tests/kinesisstream/tests.py index 52707cd..2403ee9 100644 --- a/tests/kinesisstream/tests.py +++ b/tests/kinesisstream/tests.py @@ -22,7 +22,7 @@ def test_0001_project(self): self.assertEqual(lambda_['Runtime'], 'python2.7') aliases = self.get_lambda_aliases(function_name=lambda_['FunctionName']) - self.assertEqual(aliases.keys(), ['current']) + self.assertEqual(list(aliases.keys()), ['current']) class BuildTest(BaseBuildTest): diff --git a/tests/lambdajava/tests.py b/tests/lambdajava/tests.py index a4bd0a7..b7ae051 100644 --- a/tests/lambdajava/tests.py +++ b/tests/lambdajava/tests.py @@ -23,7 +23,7 @@ def test_0001_project(self): self.assertEqual(lambda_['Timeout'], 123) aliases = self.get_lambda_aliases(function_name=lambda_['FunctionName']) - self.assertEqual(aliases.keys(), ['current']) + self.assertEqual(list(aliases.keys()), ['current']) response = self.invoke_lambda( function_name=lambda_['FunctionName'], diff --git a/tests/lambdajs/tests.py b/tests/lambdajs/tests.py index b3ec7e8..2730205 100644 --- a/tests/lambdajs/tests.py +++ b/tests/lambdajs/tests.py @@ -19,7 +19,7 @@ def test_0001_project(self): self.assertEqual(lambda_['Timeout'], 123) aliases = self.get_lambda_aliases(function_name=lambda_['FunctionName']) - self.assertEqual(aliases.keys(), ['current']) + self.assertEqual(list(aliases.keys()), ['current']) response = self.invoke_lambda( function_name=lambda_['FunctionName'], diff --git a/tests/lambdapython/tests.py b/tests/lambdapython/tests.py index a071823..ba55744 100644 --- a/tests/lambdapython/tests.py +++ b/tests/lambdapython/tests.py @@ -17,7 +17,7 @@ def test_0001_project(self): self.assertEqual(lambda_['Timeout'], 123) aliases = self.get_lambda_aliases(function_name=lambda_['FunctionName']) - self.assertEqual(aliases.keys(), ['current']) + self.assertEqual(list(aliases.keys()), ['current']) response = self.invoke_lambda( function_name=lambda_['FunctionName'], diff --git a/tests/projectupdate/tests.py b/tests/projectupdate/tests.py index 7000896..f7afa1e 100644 --- a/tests/projectupdate/tests.py +++ b/tests/projectupdate/tests.py @@ -17,7 +17,7 @@ def test_0001_project(self): self.assertEqual(lambda_['Timeout'], 123) aliases = self.get_lambda_aliases(function_name=lambda_['FunctionName']) - self.assertEqual(aliases.keys(), ['current']) + self.assertEqual(list(aliases.keys()), ['current']) response = self.invoke_lambda( function_name=lambda_['FunctionName'], @@ -37,7 +37,7 @@ def test_0002_project(self): self.assertEqual(lambda_['Timeout'], 199) aliases = self.get_lambda_aliases(function_name=lambda_['FunctionName']) - self.assertEqual(aliases.keys(), ['current']) + self.assertEqual(list(aliases.keys()), ['current']) response = self.invoke_lambda( function_name=lambda_['FunctionName'], diff --git a/tox.ini b/tox.ini index c1c6dc3..554f2ba 100644 --- a/tox.ini +++ b/tox.ini @@ -6,11 +6,18 @@ passenv=AWS_ACCESS_KEY_ID AWS_DEFAULT_REGION AWS_SECRET_ACCESS_KEY AWS_SECURITY_ deps = -rtest_requirements.txt commands = nosetests --cover-package=gordon --with-coverage -a '!integration' -[testenv:integration] +[testenv:integration2] basepython = python2.7 deps = -rtest_requirements.txt commands= - nosetests --cover-package=gordon --with-coverage -a 'integration' + envdir ~/.awsgordon nosetests -x --cover-package=gordon --with-coverage -a 'integration' + +[testenv:integration3] +basepython = python3.5 +deps = -rtest_requirements.txt +commands= + envdir ~/.awsgordon nosetests -x --cover-package=gordon --with-coverage -a 'integration' + [flake8] max-line-length = 120