Skip to content

Commit 5745285

Browse files
authored
Merge pull request #98 from detiber/python2Compat
Improve python2 backward compat for ResponseError
2 parents 6a5d56c + dd105b9 commit 5745285

File tree

3 files changed

+57
-3
lines changed

3 files changed

+57
-3
lines changed

packet/baseapi.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ def __init__(self, resp, data, exception=None):
2727
msg = data["error"]
2828
elif "errors" in data:
2929
msg = ", ".join(data["errors"])
30-
super().__init__("Error {0}: {1}".format(resp.status_code, msg), exception)
30+
super(ResponseError, self).__init__(
31+
"Error {0}: {1}".format(resp.status_code, msg), exception
32+
)
3133
self._response = resp
3234

3335
@property

setup.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,30 @@
77
from setuptools import setup
88
except ImportError:
99
from ez_setup import use_setuptools
10+
1011
use_setuptools()
1112
from setuptools import setup
1213

1314

1415
with open("README.md") as readme, open("CHANGELOG.md") as changelog:
1516
long_description = readme.read() + "\n" + changelog.read()
1617

18+
1719
def read(rel_path):
1820
here = os.path.abspath(os.path.dirname(__file__))
19-
with codecs.open(os.path.join(here, rel_path), 'r') as fp:
21+
with codecs.open(os.path.join(here, rel_path), "r") as fp:
2022
return fp.read()
2123

24+
2225
def get_version(rel_path):
2326
for line in read(rel_path).splitlines():
24-
if line.startswith('__version__'):
27+
if line.startswith("__version__"):
2528
delim = '"' if '"' in line else "'"
2629
return line.split(delim)[1]
2730
else:
2831
raise RuntimeError("Unable to find version string.")
2932

33+
3034
setup(
3135
name="packet-python",
3236
version=get_version("packet/__init__.py"),

test/test_baseapi.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# -*- coding: utf-8 -*-
2+
# SPDX-License-Identifier: LGPL-3.0-only
3+
4+
import sys
5+
import unittest
6+
7+
import packet
8+
9+
10+
class obj(object):
11+
def __init__(self, dict_):
12+
self.__dict__.update(dict_)
13+
14+
15+
class ErrorTest(unittest.TestCase):
16+
def test_cause(self):
17+
msg = "boom"
18+
cause = "cause"
19+
error = packet.Error(msg, cause)
20+
self.assertIn(error.cause, cause)
21+
22+
23+
class ResponseErrorTest(unittest.TestCase):
24+
def setUp(self):
25+
self.resp500 = obj({"status_code": 500})
26+
self.errBoom = {"error": "boom"}
27+
self.errBangBoom = {"errors": ["bang", "boom"]}
28+
self.exception = Exception("x")
29+
30+
def test_init_empty(self):
31+
error = packet.ResponseError(self.resp500, None, None)
32+
self.assertIn("empty", str(error))
33+
34+
def test_init_error(self):
35+
error = packet.ResponseError(self.resp500, self.errBoom, self.exception)
36+
self.assertIn("Error 500: boom", str(error))
37+
self.assertEqual(500, error.response.status_code)
38+
self.assertEqual(self.exception, error.cause)
39+
40+
def test_init_errors(self):
41+
error = packet.ResponseError(self.resp500, self.errBangBoom, self.exception)
42+
self.assertIn("Error 500: bang, boom", str(error))
43+
self.assertEqual(500, error.response.status_code)
44+
self.assertEqual(self.exception, error.cause)
45+
46+
47+
if __name__ == "__main__":
48+
sys.exit(unittest.main())

0 commit comments

Comments
 (0)