Skip to content
Snippets Groups Projects
Commit 45b1221a authored by Martin Vejnár's avatar Martin Vejnár Committed by GitHub
Browse files

Merge pull request #30 from mwilliamson/non-finite-float-errors

Add tox/py.test and raise error when dump is called with non-finite floats
parents e4ec5fb6 3cc8cc19
No related branches found
No related tags found
No related merge requests found
...@@ -4,3 +4,6 @@ pytoml.egg-info/ ...@@ -4,3 +4,6 @@ pytoml.egg-info/
venv/ venv/
.idea/ .idea/
__pycache__/ __pycache__/
.tox/
*.pyc
.cache/
sudo: false
language: python language: python
python: python:
- "2.6" - "2.6"
...@@ -5,4 +6,5 @@ python: ...@@ -5,4 +6,5 @@ python:
- "3.3" - "3.3"
- "3.4" - "3.4"
- "3.5" - "3.5"
script: python ./setup.py install && python ./test/test.py install: pip install tox-travis
script: tox
pytest==3.0.7
from __future__ import unicode_literals from __future__ import unicode_literals
import io, datetime, sys import io, datetime, math, sys
if sys.version_info[0] == 3: if sys.version_info[0] == 3:
long = int long = int
...@@ -61,7 +61,10 @@ def _format_value(v): ...@@ -61,7 +61,10 @@ def _format_value(v):
if isinstance(v, int) or isinstance(v, long): if isinstance(v, int) or isinstance(v, long):
return unicode(v) return unicode(v)
if isinstance(v, float): if isinstance(v, float):
return repr(v) if math.isnan(v) or math.isinf(v):
raise ValueError("{0} is not a valid TOML value".format(v))
else:
return repr(v)
elif isinstance(v, unicode) or isinstance(v, bytes): elif isinstance(v, unicode) or isinstance(v, bytes):
return _escape_string(v) return _escape_string(v)
elif isinstance(v, datetime.datetime): elif isinstance(v, datetime.datetime):
......
from __future__ import unicode_literals
import sys
if sys.version_info < (2, 7):
from StringIO import StringIO
else:
from io import StringIO
import pytest
import pytoml as toml
def test_name_of_fileobj_is_used_in_errors():
source = StringIO("[")
source.name = "<source>"
error = pytest.raises(toml.TomlError, lambda: toml.load(source))
assert error.value.filename == "<source>"
def test_when_fileobj_has_no_name_attr_then_repr_of_fileobj_is_used_in_errors():
source = StringIO("[")
error = pytest.raises(toml.TomlError, lambda: toml.load(source))
assert error.value.filename == repr(source)
from __future__ import unicode_literals
import pytest
import pytoml as toml
@pytest.mark.parametrize("value", [
float("NaN"),
float("Inf"),
-float("Inf"),
])
def test_attempting_to_write_non_number_floats_raises_error(value):
error = pytest.raises(ValueError, lambda: toml.dumps({"value": value}))
assert str(error.value) == "{0} is not a valid TOML value".format(value)
[tox]
envlist = py26,py27,py33,py34,py35
[testenv]
deps = -r{toxinidir}/dev-requirements.txt
commands=
python ./test/test.py
py.test test
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment