@@ -39,8 +39,19 @@ def test_invalid_char_quotes(self):
3939 tomllib .loads ("v = '\n '" )
4040 self .assertTrue (" '\\ n' " in str (exc_info .exception ))
4141
42+ def test_type_error (self ):
43+ with self .assertRaises (TypeError ) as exc_info :
44+ tomllib .loads (b"v = 1" ) # type: ignore[arg-type]
45+ self .assertEqual (str (exc_info .exception ), "Expected str object, not 'bytes'" )
46+
47+ with self .assertRaises (TypeError ) as exc_info :
48+ tomllib .loads (False ) # type: ignore[arg-type]
49+ self .assertEqual (str (exc_info .exception ), "Expected str object, not 'bool'" )
50+
4251 def test_module_name (self ):
43- self .assertEqual (tomllib .TOMLDecodeError ().__module__ , tomllib .__name__ )
52+ self .assertEqual (
53+ tomllib .TOMLDecodeError ("" , "" , 0 ).__module__ , tomllib .__name__
54+ )
4455
4556 def test_invalid_parse_float (self ):
4657 def dict_returner (s : str ) -> dict :
@@ -55,3 +66,33 @@ def list_returner(s: str) -> list:
5566 self .assertEqual (
5667 str (exc_info .exception ), "parse_float must not return dicts or lists"
5768 )
69+
70+ def test_deprecated_tomldecodeerror (self ):
71+ for args in [
72+ (),
73+ ("err msg" ,),
74+ (None ,),
75+ (None , "doc" ),
76+ ("err msg" , None ),
77+ (None , "doc" , None ),
78+ ("err msg" , "doc" , None ),
79+ ("one" , "two" , "three" , "four" ),
80+ ("one" , "two" , 3 , "four" , "five" ),
81+ ]:
82+ with self .assertWarns (DeprecationWarning ):
83+ e = tomllib .TOMLDecodeError (* args ) # type: ignore[arg-type]
84+ self .assertEqual (e .args , args )
85+
86+ def test_tomldecodeerror (self ):
87+ msg = "error parsing"
88+ doc = "v=1\n [table]\n v='val'"
89+ pos = 13
90+ formatted_msg = "error parsing (at line 3, column 2)"
91+ e = tomllib .TOMLDecodeError (msg , doc , pos )
92+ self .assertEqual (e .args , (formatted_msg ,))
93+ self .assertEqual (str (e ), formatted_msg )
94+ self .assertEqual (e .msg , msg )
95+ self .assertEqual (e .doc , doc )
96+ self .assertEqual (e .pos , pos )
97+ self .assertEqual (e .lineno , 3 )
98+ self .assertEqual (e .colno , 2 )
0 commit comments