Skip to content

Commit 1eeeedf

Browse files
Exception classes are updated (message, source) (#3)
TestgresException - new: RO-property message. It returns str(self) - new: RO-property source. It returns None - new: method __str__. It returns a value of message property InvalidOperationException - new: __init__(self, message: str, source: typing.Optional[str] = None) - new: RO-property message - new: RO-property source - new: method __repr__ CI tests are added, too.
1 parent a474fc0 commit 1eeeedf

17 files changed

Lines changed: 1340 additions & 5 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ __pycache__/
88
dist/
99
env/
1010
venv/
11+
logs/

__init__.py

Whitespace-only changes.

pytest.ini

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[pytest]
2+
testpaths = tests
3+
log_file_level = NOTSET
4+
log_file_format = %(levelname)8s [%(asctime)s] %(message)s
5+
log_file_date_format=%Y-%m-%d %H:%M:%S
6+

run_tests3.sh

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,15 @@ rm -rf $VENV_PATH
88
python -m venv "${VENV_PATH}"
99
export VIRTUAL_ENV_DISABLE_PROMPT=1
1010
source "${VENV_PATH}/bin/activate"
11+
pip install -r tests/requirements.txt
1112

1213
# install testgres' dependencies
1314
export PYTHONPATH=$(pwd)
14-
# $PIP install .
1515

16-
pip install flake8 flake8-pyproject
17-
flake8
16+
# Check codestyle
17+
flake8 .
18+
19+
# Run builtin tests
20+
python3 -m pytest -l -vvv tests
1821

1922
set +eux

src/exceptions.py

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,56 @@
11
# coding: utf-8
2+
import typing
23

34

45
class TestgresException(Exception):
5-
pass
6+
@property
7+
def message(self) -> str:
8+
assert isinstance(self, TestgresException)
9+
r = super().__str__()
10+
assert r is not None
11+
assert type(r) == str # noqa: E721
12+
return r
13+
14+
@property
15+
def source(self) -> typing.Optional[str]:
16+
assert isinstance(self, TestgresException)
17+
return None
18+
19+
def __str__(self) -> str:
20+
r = self.message
21+
assert type(r) == str # noqa: E721
22+
return r
623

724

825
class InvalidOperationException(TestgresException):
9-
pass
26+
_message: str
27+
_source: typing.Optional[str]
28+
29+
def __init__(self, message: str, source: typing.Optional[str] = None):
30+
assert type(message) == str # noqa: E721
31+
assert source is None or type(source) == str # noqa: E721
32+
super().__init__()
33+
self._message = message
34+
self._source = source
35+
return
36+
37+
@property
38+
def message(self) -> str:
39+
assert type(self._message) == str # noqa: E721
40+
return self._message
41+
42+
@property
43+
def source(self) -> str:
44+
assert self._source is None or type(self._source) == str # noqa: E721
45+
return self._source
46+
47+
def __repr__(self) -> str:
48+
# It must be overrided!
49+
assert type(self) == InvalidOperationException # noqa: E721
50+
r = "{}({}, {})".format(
51+
__class__.__name__,
52+
repr(self._message),
53+
repr(self._source),
54+
)
55+
assert type(r) == str # noqa: E721
56+
return r

tests/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)