Skip to content
Snippets Groups Projects
Commit 3cc8cc19 authored by Michael Williamson's avatar Michael Williamson
Browse files

Raise error when dump is called with non-finite floats

parent 23afb8a9
No related branches found
No related tags found
No related merge requests found
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 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)
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