From 944bc9e3537fa8b806a0ac662fe285edf295ffbd Mon Sep 17 00:00:00 2001 From: Tim Burke Date: Sat, 2 Jul 2016 21:41:41 -0700 Subject: [PATCH] Update pep8 config to (mostly) match upstream swift The combination of select and ignore options doesn't do what we want, anyway. Now, we won't regress on a number of issues, like H234, H235, and E127. Also added H237 to ignore list, as we currently trip module multifile is removed in Python 3 ... in test/functional/test_object.py Change-Id: Id746552bc024e726e29105c077057e46e248a0a8 Related-Change: I41d63b9467083d7606ad18aaa398ca7738b27fae --- swift3/request.py | 5 +-- swift3/test/functional/test_bucket.py | 4 +- swift3/test/functional/test_multi_upload.py | 50 ++++++++++----------- swift3/test/functional/test_presigned.py | 38 ++++++++-------- swift3/test/unit/test_bucket.py | 4 +- swift3/test/unit/test_middleware.py | 49 ++++++++++---------- swift3/test/unit/test_multi_upload.py | 34 +++++++------- test-requirements.txt | 2 +- tox.ini | 15 ++++++- 9 files changed, 105 insertions(+), 96 deletions(-) diff --git a/swift3/request.py b/swift3/request.py index 24576ecf..4fc7a1d1 100644 --- a/swift3/request.py +++ b/swift3/request.py @@ -15,8 +15,7 @@ import base64 from email.header import Header -from hashlib import sha256 -import md5 +from hashlib import sha256, md5 import re import six import string @@ -644,7 +643,7 @@ class Request(swob.Request): raise InvalidRequest('Missing required header for this request: ' 'Content-MD5') - digest = md5.new(body).digest().encode('base64').strip() + digest = md5(body).digest().encode('base64').strip() if self.environ['HTTP_CONTENT_MD5'] != digest: raise BadDigest(content_md5=self.environ['HTTP_CONTENT_MD5']) diff --git a/swift3/test/functional/test_bucket.py b/swift3/test/functional/test_bucket.py index 144249e8..1b5007a7 100644 --- a/swift3/test/functional/test_bucket.py +++ b/swift3/test/functional/test_bucket.py @@ -318,11 +318,11 @@ class TestSwift3Bucket(Swift3FunctionalTestCase): # non existed verb in the controller status, headers, body = \ self.conn.make_request('GETPUT', 'bucket') - self.assertEquals(get_error_code(body), 'MethodNotAllowed') + self.assertEqual(get_error_code(body), 'MethodNotAllowed') # the method exists in the controller but deny as MethodNotAllowed status, headers, body = \ self.conn.make_request('_delete_segments_bucket', 'bucket') - self.assertEquals(get_error_code(body), 'MethodNotAllowed') + self.assertEqual(get_error_code(body), 'MethodNotAllowed') @unittest.skipIf(os.environ['AUTH'] == 'tempauth', diff --git a/swift3/test/functional/test_multi_upload.py b/swift3/test/functional/test_multi_upload.py index 1c3a186e..1a2f0312 100644 --- a/swift3/test/functional/test_multi_upload.py +++ b/swift3/test/functional/test_multi_upload.py @@ -472,7 +472,7 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase): status, headers, body = \ self.conn.make_request('POST', bucket, keys[0], body=xml, query=query) - self.assertEquals(get_error_code(body), 'EntityTooSmall') + self.assertEqual(get_error_code(body), 'EntityTooSmall') # invalid credentials auth_error_conn = Connection(aws_secret_key='invalid') @@ -557,22 +557,22 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase): # Initiate Multipart Upload for expected_key, (status, headers, body) in \ izip(keys, results_generator): - self.assertEquals(status, 200) + self.assertEqual(status, 200) self.assertCommonResponseHeaders(headers) self.assertTrue('content-type' in headers) - self.assertEquals(headers['content-type'], 'application/xml') + self.assertEqual(headers['content-type'], 'application/xml') self.assertTrue('content-length' in headers) - self.assertEquals(headers['content-length'], str(len(body))) + self.assertEqual(headers['content-length'], str(len(body))) elem = fromstring(body, 'InitiateMultipartUploadResult') - self.assertEquals(elem.find('Bucket').text, bucket) + self.assertEqual(elem.find('Bucket').text, bucket) key = elem.find('Key').text - self.assertEquals(expected_key, key) + self.assertEqual(expected_key, key) upload_id = elem.find('UploadId').text self.assertTrue(upload_id is not None) self.assertTrue((key, upload_id) not in uploads) uploads.append((key, upload_id)) - self.assertEquals(len(uploads), len(keys)) # sanity + self.assertEqual(len(uploads), len(keys)) # sanity # Upload Part Copy Range key, upload_id = uploads[0] @@ -591,19 +591,19 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase): status, headers, body, resp_etag = \ self._upload_part_copy(src_bucket, src_obj, bucket, key, upload_id, 1, src_range) - self.assertEquals(status, 200) + self.assertEqual(status, 200) self.assertCommonResponseHeaders(headers) self.assertTrue('content-type' in headers) - self.assertEquals(headers['content-type'], 'application/xml') + self.assertEqual(headers['content-type'], 'application/xml') self.assertTrue('content-length' in headers) - self.assertEquals(headers['content-length'], str(len(body))) + self.assertEqual(headers['content-length'], str(len(body))) self.assertTrue('etag' not in headers) elem = fromstring(body, 'CopyPartResult') last_modified = elem.find('LastModified').text self.assertTrue(last_modified is not None) - self.assertEquals(resp_etag, etag) + self.assertEqual(resp_etag, etag) # Check last-modified timestamp key, upload_id = uploads[0] @@ -616,7 +616,7 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase): # FIXME: COPY result drops mili/microseconds but GET doesn't last_modified_gets = [p.find('LastModified').text for p in elem.iterfind('Part')] - self.assertEquals( + self.assertEqual( last_modified_gets[0].rsplit('.', 1)[0], last_modified.rsplit('.', 1)[0], '%r != %r' % (last_modified_gets[0], last_modified)) @@ -631,12 +631,12 @@ class TestSwift3MultiUpload(Swift3FunctionalTestCase): self.conn.make_request('DELETE', bucket, key, query=query) # sanities - self.assertEquals(status, 204) + self.assertEqual(status, 204) self.assertCommonResponseHeaders(headers) self.assertTrue('content-type' in headers) - self.assertEquals(headers['content-type'], 'text/html; charset=UTF-8') + self.assertEqual(headers['content-type'], 'text/html; charset=UTF-8') self.assertTrue('content-length' in headers) - self.assertEquals(headers['content-length'], '0') + self.assertEqual(headers['content-length'], '0') @unittest.skipIf(os.environ['AUTH'] == 'tempauth', @@ -665,23 +665,23 @@ class TestSwift3MultiUploadSigV4(TestSwift3MultiUpload): # Initiate Multipart Upload for expected_key, (status, _, body) in \ izip(keys, results_generator): - self.assertEquals(status, 200) # sanity + self.assertEqual(status, 200) # sanity elem = fromstring(body, 'InitiateMultipartUploadResult') key = elem.find('Key').text - self.assertEquals(expected_key, key) # sanity + self.assertEqual(expected_key, key) # sanity upload_id = elem.find('UploadId').text self.assertTrue(upload_id is not None) # sanity self.assertTrue((key, upload_id) not in uploads) uploads.append((key, upload_id)) - self.assertEquals(len(uploads), len(keys)) # sanity + self.assertEqual(len(uploads), len(keys)) # sanity # Upload Part key, upload_id = uploads[0] content = 'a' * MIN_SEGMENT_SIZE status, headers, body = \ self._upload_part(bucket, key, upload_id, content) - self.assertEquals(status, 200) + self.assertEqual(status, 200) # Complete Multipart Upload key, upload_id = uploads[0] @@ -689,24 +689,24 @@ class TestSwift3MultiUploadSigV4(TestSwift3MultiUpload): xml = self._gen_comp_xml(etags) status, headers, body = \ self._complete_multi_upload(bucket, key, upload_id, xml) - self.assertEquals(status, 200) # sanity + self.assertEqual(status, 200) # sanity # GET multipart object status, headers, body = \ self.conn.make_request('GET', bucket, key) - self.assertEquals(status, 200) # sanity - self.assertEquals(content, body) # sanity + self.assertEqual(status, 200) # sanity + self.assertEqual(content, body) # sanity # DELETE bucket while the object existing status, headers, body = \ self.conn.make_request('DELETE', bucket) - self.assertEquals(status, 409) # sanity + self.assertEqual(status, 409) # sanity # The object must still be there. status, headers, body = \ self.conn.make_request('GET', bucket, key) - self.assertEquals(status, 200) # sanity - self.assertEquals(content, body) # sanity + self.assertEqual(status, 200) # sanity + self.assertEqual(content, body) # sanity if __name__ == '__main__': diff --git a/swift3/test/functional/test_presigned.py b/swift3/test/functional/test_presigned.py index 49643887..84fa50e5 100644 --- a/swift3/test/functional/test_presigned.py +++ b/swift3/test/functional/test_presigned.py @@ -31,7 +31,7 @@ class TestSwift3PresignedUrls(Swift3FunctionalTestCase): # GET Bucket (Without Object) status, _junk, _junk = self.conn.make_request('PUT', bucket) - self.assertEquals(status, 200) + self.assertEqual(status, 200) url, headers = self.conn.generate_url_and_headers('GET', bucket) resp = requests.get(url, headers=headers) @@ -43,14 +43,14 @@ class TestSwift3PresignedUrls(Swift3FunctionalTestCase): str(len(resp.content))) elem = fromstring(resp.content, 'ListBucketResult') - self.assertEquals(elem.find('Name').text, bucket) - self.assertEquals(elem.find('Prefix').text, None) - self.assertEquals(elem.find('Marker').text, None) - self.assertEquals(elem.find('MaxKeys').text, - str(CONF.max_bucket_listing)) - self.assertEquals(elem.find('IsTruncated').text, 'false') + self.assertEqual(elem.find('Name').text, bucket) + self.assertEqual(elem.find('Prefix').text, None) + self.assertEqual(elem.find('Marker').text, None) + self.assertEqual(elem.find('MaxKeys').text, + str(CONF.max_bucket_listing)) + self.assertEqual(elem.find('IsTruncated').text, 'false') objects = elem.findall('./Contents') - self.assertEquals(list(objects), []) + self.assertEqual(list(objects), []) # GET Bucket (With Object) for obj in req_objects: @@ -68,14 +68,14 @@ class TestSwift3PresignedUrls(Swift3FunctionalTestCase): str(len(resp.content))) elem = fromstring(resp.content, 'ListBucketResult') - self.assertEquals(elem.find('Name').text, bucket) - self.assertEquals(elem.find('Prefix').text, None) - self.assertEquals(elem.find('Marker').text, None) - self.assertEquals(elem.find('MaxKeys').text, - str(CONF.max_bucket_listing)) - self.assertEquals(elem.find('IsTruncated').text, 'false') + self.assertEqual(elem.find('Name').text, bucket) + self.assertEqual(elem.find('Prefix').text, None) + self.assertEqual(elem.find('Marker').text, None) + self.assertEqual(elem.find('MaxKeys').text, + str(CONF.max_bucket_listing)) + self.assertEqual(elem.find('IsTruncated').text, 'false') resp_objects = elem.findall('./Contents') - self.assertEquals(len(list(resp_objects)), 2) + self.assertEqual(len(list(resp_objects)), 2) for o in resp_objects: self.assertIn(o.find('Key').text, req_objects) self.assertIsNotNone(o.find('LastModified').text) @@ -160,7 +160,7 @@ class TestSwift3PresignedUrls(Swift3FunctionalTestCase): obj = 'object' status, _junk, _junk = self.conn.make_request('PUT', bucket) - self.assertEquals(status, 200) + self.assertEqual(status, 200) # HEAD/missing object head_url, headers = self.conn.generate_url_and_headers( @@ -173,8 +173,8 @@ class TestSwift3PresignedUrls(Swift3FunctionalTestCase): resp = requests.get(head_url) self.assertEqual(resp.status_code, 403, 'Got %d %s' % (resp.status_code, resp.content)) - self.assertEquals(get_error_code(resp.content), - 'SignatureDoesNotMatch') + self.assertEqual(get_error_code(resp.content), + 'SignatureDoesNotMatch') # PUT empty object put_url, headers = self.conn.generate_url_and_headers( @@ -210,7 +210,7 @@ class TestSwift3PresignedUrls(Swift3FunctionalTestCase): # Final cleanup status, _junk, _junk = self.conn.make_request('DELETE', bucket) - self.assertEquals(status, 204) + self.assertEqual(status, 204) @unittest.skipIf(os.environ['AUTH'] == 'tempauth', diff --git a/swift3/test/unit/test_bucket.py b/swift3/test/unit/test_bucket.py index e9171b21..9b81c015 100644 --- a/swift3/test/unit/test_bucket.py +++ b/swift3/test/unit/test_bucket.py @@ -196,7 +196,7 @@ class TestSwift3Bucket(Swift3TestCase): _, path = self.swift.calls[-1] _, query_string = path.split('?') args = dict(cgi.parse_qsl(query_string)) - self.assert_(args['limit'] == '6') + self.assertEqual(args['limit'], '6') req = Request.blank('/%s?max-keys=5000' % bucket_name, environ={'REQUEST_METHOD': 'GET'}, @@ -483,7 +483,7 @@ class TestSwift3Bucket(Swift3TestCase): headers={'Authorization': 'AWS test:tester:hmac', 'Date': self.get_date_header()}) status, headers, body = self.call_swift3(req) - self.assertEquals(status.split()[0], '503') + self.assertEqual(status.split()[0], '503') called = [(method, path) for method, path, _ in self.swift.calls_with_headers] # Don't delete original bucket when error occured in segment container diff --git a/swift3/test/unit/test_middleware.py b/swift3/test/unit/test_middleware.py index 97e6ccf3..05783236 100644 --- a/swift3/test/unit/test_middleware.py +++ b/swift3/test/unit/test_middleware.py @@ -20,7 +20,6 @@ from datetime import datetime import hashlib import base64 from urllib import unquote, quote -from md5 import md5 from swift.common import swob, utils from swift.common.swob import Request @@ -66,7 +65,7 @@ class TestSwift3Middleware(Swift3TestCase): headers={'Authorization': 'AWS test:tester:hmac', 'Date': self.get_date_header()}) status, headers, body = self.call_swift3(req) - self.assertEquals(self._get_error_code(body), 'MethodNotAllowed') + self.assertEqual(self._get_error_code(body), 'MethodNotAllowed') def test_path_info_encode(self): bucket_name = 'b%75cket' @@ -234,7 +233,7 @@ class TestSwift3Middleware(Swift3TestCase): req.headers['Date'] = datetime.utcnow() req.content_type = 'text/plain' status, headers, body = self.call_swift3(req) - self.assertEquals(self._get_error_code(body), 'AccessDenied') + self.assertEqual(self._get_error_code(body), 'AccessDenied') def test_signed_urls_v4(self): req = Request.blank( @@ -250,9 +249,9 @@ class TestSwift3Middleware(Swift3TestCase): environ={'REQUEST_METHOD': 'GET'}) req.content_type = 'text/plain' status, headers, body = self.call_swift3(req) - self.assertEquals(status.split()[0], '200', body) + self.assertEqual(status.split()[0], '200', body) for _, _, headers in self.swift.calls_with_headers: - self.assertEquals('AWS test:tester:X', headers['Authorization']) + self.assertEqual('AWS test:tester:X', headers['Authorization']) self.assertIn('X-Auth-Token', headers) def test_signed_urls_v4_missing_x_amz_date(self): @@ -265,7 +264,7 @@ class TestSwift3Middleware(Swift3TestCase): environ={'REQUEST_METHOD': 'GET'}) req.content_type = 'text/plain' status, headers, body = self.call_swift3(req) - self.assertEquals(self._get_error_code(body), 'AccessDenied') + self.assertEqual(self._get_error_code(body), 'AccessDenied') def test_signed_urls_v4_invalid_algorithm(self): req = Request.blank('/bucket/object' @@ -279,7 +278,7 @@ class TestSwift3Middleware(Swift3TestCase): environ={'REQUEST_METHOD': 'GET'}) req.content_type = 'text/plain' status, headers, body = self.call_swift3(req) - self.assertEquals(self._get_error_code(body), 'InvalidArgument') + self.assertEqual(self._get_error_code(body), 'InvalidArgument') def test_signed_urls_v4_missing_signed_headers(self): req = Request.blank('/bucket/object' @@ -292,8 +291,8 @@ class TestSwift3Middleware(Swift3TestCase): environ={'REQUEST_METHOD': 'GET'}) req.content_type = 'text/plain' status, headers, body = self.call_swift3(req) - self.assertEquals(self._get_error_code(body), - 'AuthorizationHeaderMalformed') + self.assertEqual(self._get_error_code(body), + 'AuthorizationHeaderMalformed') def test_signed_urls_v4_invalid_credentials(self): req = Request.blank('/bucket/object' @@ -307,7 +306,7 @@ class TestSwift3Middleware(Swift3TestCase): environ={'REQUEST_METHOD': 'GET'}) req.content_type = 'text/plain' status, headers, body = self.call_swift3(req) - self.assertEquals(self._get_error_code(body), 'AccessDenied') + self.assertEqual(self._get_error_code(body), 'AccessDenied') def test_signed_urls_v4_missing_signature(self): req = Request.blank('/bucket/object' @@ -320,7 +319,7 @@ class TestSwift3Middleware(Swift3TestCase): environ={'REQUEST_METHOD': 'GET'}) req.content_type = 'text/plain' status, headers, body = self.call_swift3(req) - self.assertEquals(self._get_error_code(body), 'AccessDenied') + self.assertEqual(self._get_error_code(body), 'AccessDenied') def test_bucket_virtual_hosted_style(self): req = Request.blank('/', @@ -380,7 +379,7 @@ class TestSwift3Middleware(Swift3TestCase): self.assertEqual(self._get_error_code(body), 'InvalidDigest') def test_object_create_bad_md5_too_short(self): - too_short_digest = md5('hey').hexdigest()[:-1] + too_short_digest = hashlib.md5('hey').hexdigest()[:-1] md5_str = too_short_digest.encode('base64').strip() req = Request.blank( '/bucket/object', @@ -392,7 +391,7 @@ class TestSwift3Middleware(Swift3TestCase): self.assertEqual(self._get_error_code(body), 'InvalidDigest') def test_object_create_bad_md5_too_long(self): - too_long_digest = md5('hey').hexdigest() + 'suffix' + too_long_digest = hashlib.md5('hey').hexdigest() + 'suffix' md5_str = too_long_digest.encode('base64').strip() req = Request.blank( '/bucket/object', @@ -579,9 +578,9 @@ class TestSwift3Middleware(Swift3TestCase): req = Request.blank('/bucket/object', environ=environ, headers=headers) req.content_type = 'text/plain' status, headers, body = self.call_swift3(req) - self.assertEquals(status.split()[0], '200', body) + self.assertEqual(status.split()[0], '200', body) for _, _, headers in self.swift.calls_with_headers: - self.assertEquals('AWS test:tester:X', headers['Authorization']) + self.assertEqual('AWS test:tester:X', headers['Authorization']) self.assertIn('X-Auth-Token', headers) def test_signature_v4_no_date(self): @@ -597,8 +596,8 @@ class TestSwift3Middleware(Swift3TestCase): req = Request.blank('/bucket/object', environ=environ, headers=headers) req.content_type = 'text/plain' status, headers, body = self.call_swift3(req) - self.assertEquals(status.split()[0], '403') - self.assertEquals(self._get_error_code(body), 'AccessDenied') + self.assertEqual(status.split()[0], '403') + self.assertEqual(self._get_error_code(body), 'AccessDenied') def test_signature_v4_no_payload(self): environ = { @@ -613,9 +612,9 @@ class TestSwift3Middleware(Swift3TestCase): req = Request.blank('/bucket/object', environ=environ, headers=headers) req.content_type = 'text/plain' status, headers, body = self.call_swift3(req) - self.assertEquals(status.split()[0], '400') - self.assertEquals(self._get_error_code(body), 'InvalidRequest') - self.assertEquals( + self.assertEqual(status.split()[0], '400') + self.assertEqual(self._get_error_code(body), 'InvalidRequest') + self.assertEqual( self._get_error_message(body), 'Missing required header for this request: x-amz-content-sha256') @@ -631,8 +630,8 @@ class TestSwift3Middleware(Swift3TestCase): headers=headers) req.content_type = 'text/plain' status, headers, body = self.call_swift3(req) - self.assertEquals(self._get_error_code(body), error) - self.assertEquals(self._get_error_message(body), msg) + self.assertEqual(self._get_error_code(body), error) + self.assertEqual(self._get_error_message(body), msg) auth_str = ('AWS4-HMAC-SHA256 ' 'SignedHeaders=host;x-amz-date,' @@ -676,7 +675,7 @@ class TestSwift3Middleware(Swift3TestCase): def verify(hash_val, path, environ): s = canonical_string(path, environ) s = s.split('\n')[3] - self.assertEquals(hash_val, s) + self.assertEqual(hash_val, s) # all next data got from aws4_testsuite from Amazon # http://docs.aws.amazon.com/general/latest/gr/samples @@ -812,7 +811,7 @@ class TestSwift3Middleware(Swift3TestCase): status, headers, body = self.call_swift3(req) # FIXME: should this failed as 400 or pass via query auth? # for now, 403 forbbiden for safety - self.assertEquals(status.split()[0], '403', body) + self.assertEqual(status.split()[0], '403', body) # But if we are missing Signature in query param req = Request.blank('/bucket/object' @@ -823,7 +822,7 @@ class TestSwift3Middleware(Swift3TestCase): headers=headers) req.content_type = 'text/plain' status, headers, body = self.call_swift3(req) - self.assertEquals(status.split()[0], '403', body) + self.assertEqual(status.split()[0], '403', body) if __name__ == '__main__': diff --git a/swift3/test/unit/test_multi_upload.py b/swift3/test/unit/test_multi_upload.py index 35cd4b1f..97c0d08a 100644 --- a/swift3/test/unit/test_multi_upload.py +++ b/swift3/test/unit/test_multi_upload.py @@ -644,10 +644,10 @@ class TestSwift3MultiUpload(Swift3TestCase): body=xml) status, headers, body = self.call_swift3(req) fromstring(body, 'CompleteMultipartUploadResult') - self.assertEquals(status.split()[0], '200') + self.assertEqual(status.split()[0], '200') _, _, headers = self.swift.calls_with_headers[-2] - self.assertEquals(headers.get('X-Object-Meta-Foo'), 'bar') + self.assertEqual(headers.get('X-Object-Meta-Foo'), 'bar') def test_object_multipart_upload_complete_segment_too_small(self): msgs = [ @@ -671,8 +671,8 @@ class TestSwift3MultiUpload(Swift3TestCase): self.swift.register('PUT', '/v1/AUTH_test/bucket/object', swob.HTTPBadRequest, {}, msg) status, headers, body = self.call_swift3(req) - self.assertEquals(status.split()[0], '400') - self.assertEquals(self._get_error_code(body), 'EntityTooSmall') + self.assertEqual(status.split()[0], '400') + self.assertEqual(self._get_error_code(body), 'EntityTooSmall') def test_object_multipart_upload_complete_single_zero_length_segment(self): segment_bucket = '/v1/AUTH_test/empty-bucket+segments' @@ -713,7 +713,7 @@ class TestSwift3MultiUpload(Swift3TestCase): body=xml) status, headers, body = self.call_swift3(req) fromstring(body, 'CompleteMultipartUploadResult') - self.assertEquals(status.split()[0], '200') + self.assertEqual(status.split()[0], '200') self.assertEqual(self.swift.calls, [ ('HEAD', '/v1/AUTH_test/empty-bucket'), @@ -726,8 +726,8 @@ class TestSwift3MultiUpload(Swift3TestCase): ('DELETE', '/v1/AUTH_test/empty-bucket+segments/object/X'), ]) _, _, put_headers = self.swift.calls_with_headers[-3] - self.assertEquals(put_headers.get('X-Object-Meta-Foo'), 'bar') - self.assertEquals(put_headers.get('Content-Type'), 'baz/quux') + self.assertEqual(put_headers.get('X-Object-Meta-Foo'), 'bar') + self.assertEqual(put_headers.get('Content-Type'), 'baz/quux') def test_object_multipart_upload_complete_double_zero_length_segment(self): segment_bucket = '/v1/AUTH_test/empty-bucket+segments' @@ -769,8 +769,8 @@ class TestSwift3MultiUpload(Swift3TestCase): 'Date': self.get_date_header(), }, body=xml) status, headers, body = self.call_swift3(req) - self.assertEquals(self._get_error_code(body), 'EntityTooSmall') - self.assertEquals(status.split()[0], '400') + self.assertEqual(self._get_error_code(body), 'EntityTooSmall') + self.assertEqual(status.split()[0], '400') self.assertEqual(self.swift.calls, [ ('HEAD', '/v1/AUTH_test/empty-bucket'), @@ -1480,11 +1480,11 @@ class TestSwift3MultiUpload(Swift3TestCase): status, header, body = self._test_copy_for_s3acl( account, src_headers={'Content-Length': '10'}, put_header=header) - self.assertEquals(status.split()[0], '400') + self.assertEqual(status.split()[0], '400') self.assertIn('Range specified is not valid for ' 'source object of size: 10', body) - self.assertEquals([ + self.assertEqual([ ('HEAD', '/v1/AUTH_test/bucket'), ('HEAD', '/v1/AUTH_test/bucket+segments/object/X'), ('HEAD', '/v1/AUTH_test/src_bucket/src_obj'), @@ -1497,13 +1497,13 @@ class TestSwift3MultiUpload(Swift3TestCase): status, header, body = \ self._test_copy_for_s3acl(account, put_header=header) - self.assertEquals(status.split()[0], '400', body) + self.assertEqual(status.split()[0], '400', body) header = {'X-Amz-Copy-Source-Range': 'asdf'} status, header, body = \ self._test_copy_for_s3acl(account, put_header=header) - self.assertEquals(status.split()[0], '400', body) + self.assertEqual(status.split()[0], '400', body) def test_upload_part_copy_range(self): account = 'test:tester' @@ -1512,17 +1512,17 @@ class TestSwift3MultiUpload(Swift3TestCase): status, header, body = self._test_copy_for_s3acl( account, src_headers={'Content-Length': '20'}, put_header=header) - self.assertEquals(status.split()[0], '200', body) + self.assertEqual(status.split()[0], '200', body) - self.assertEquals([ + self.assertEqual([ ('HEAD', '/v1/AUTH_test/bucket'), ('HEAD', '/v1/AUTH_test/bucket+segments/object/X'), ('HEAD', '/v1/AUTH_test/src_bucket/src_obj'), ('PUT', '/v1/AUTH_test/bucket+segments/object/X/1'), ], self.swift.calls) put_headers = self.swift.calls_with_headers[-1][2] - self.assertEquals('bytes=0-9', put_headers['Range']) - self.assertEquals('/src_bucket/src_obj', put_headers['X-Copy-From']) + self.assertEqual('bytes=0-9', put_headers['Range']) + self.assertEqual('/src_bucket/src_obj', put_headers['X-Copy-From']) class TestSwift3MultiUploadNonUTC(TestSwift3MultiUpload): diff --git a/test-requirements.txt b/test-requirements.txt index ba1fd2fe..e8e2d41a 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -1,4 +1,4 @@ -hacking +hacking>=0.11.0,<0.12 # Apache-2.0 sphinx nose openstack.nose_plugin diff --git a/tox.ini b/tox.ini index 6ba1526c..3e70af93 100644 --- a/tox.ini +++ b/tox.ini @@ -61,7 +61,18 @@ setenv = VIRTUAL_ENV={envdir} [flake8] # follow the same style guidelines with swift -ignore = H -select = F,E,W,H102,H103,H501,H903,H231 +# F812: list comprehension redefines ... +# H101: Use TODO(NAME) +# H202: assertRaises Exception too broad +# H233: Python 3.x incompatible use of print operator +# H237: module ... is removed in Python 3 +# H301: one import per line +# H306: imports not in alphabetical order (time, os) +# H401: docstring should not start with a space +# H403: multi line docstrings should end on a new line +# H404: multi line docstring should start without a leading new line +# H405: multi line docstring summary not separated with an empty line +# H501: Do not use self.__dict__ for string formatting +ignore = F812,H101,H202,H233,H237,H301,H306,H401,H403,H404,H405,H501 exclude = .venv,.git,.tox,dist,doc,*egg,build show-source = True