| # SPDX-License-Identifier: MIT |
| # SPDX-FileCopyrightText: 2021 Taneli Hukkinen |
| # Licensed to PSF under a Contributor Agreement. |
| |
| import unittest |
| |
| from . import tomllib |
| |
| |
| class TestError(unittest.TestCase): |
| def test_line_and_col(self): |
| with self.assertRaises(tomllib.TOMLDecodeError) as exc_info: |
| tomllib.loads("val=.") |
| self.assertEqual(str(exc_info.exception), "Invalid value (at line 1, column 5)") |
| |
| with self.assertRaises(tomllib.TOMLDecodeError) as exc_info: |
| tomllib.loads(".") |
| self.assertEqual( |
| str(exc_info.exception), "Invalid statement (at line 1, column 1)" |
| ) |
| |
| with self.assertRaises(tomllib.TOMLDecodeError) as exc_info: |
| tomllib.loads("\n\nval=.") |
| self.assertEqual(str(exc_info.exception), "Invalid value (at line 3, column 5)") |
| |
| with self.assertRaises(tomllib.TOMLDecodeError) as exc_info: |
| tomllib.loads("\n\n.") |
| self.assertEqual( |
| str(exc_info.exception), "Invalid statement (at line 3, column 1)" |
| ) |
| |
| def test_missing_value(self): |
| with self.assertRaises(tomllib.TOMLDecodeError) as exc_info: |
| tomllib.loads("\n\nfwfw=") |
| self.assertEqual(str(exc_info.exception), "Invalid value (at end of document)") |
| |
| def test_invalid_char_quotes(self): |
| with self.assertRaises(tomllib.TOMLDecodeError) as exc_info: |
| tomllib.loads("v = '\n'") |
| self.assertTrue(" '\\n' " in str(exc_info.exception)) |
| |
| def test_module_name(self): |
| self.assertEqual(tomllib.TOMLDecodeError().__module__, tomllib.__name__) |
| |
| def test_invalid_parse_float(self): |
| def dict_returner(s: str) -> dict: |
| return {} |
| |
| def list_returner(s: str) -> list: |
| return [] |
| |
| for invalid_parse_float in (dict_returner, list_returner): |
| with self.assertRaises(ValueError) as exc_info: |
| tomllib.loads("f=0.1", parse_float=invalid_parse_float) |
| self.assertEqual( |
| str(exc_info.exception), "parse_float must not return dicts or lists" |
| ) |