@@ -201,36 +201,43 @@ def test_control_chars_with_echo_char(self):
201201 self .assertEqual ('Password: *******\x08 \x08 ' , mock_output .getvalue ())
202202
203203
204- class GetpassEchoCharValidationTest (unittest .TestCase ):
204+ class GetpassEchoCharTest (unittest .TestCase ):
205+ # Successful Validation Cases
205206 def test_accepts_none (self ):
206207 getpass ._check_echo_char (None )
207208
208209 def test_accepts_single_printable_ascii (self ):
209210 for ch in ["*" , "A" , " " ]:
210- getpass ._check_echo_char (ch )
211+ with self .subTest (echo_char = ch ):
212+ getpass ._check_echo_char (ch )
213+
214+ # Rejected `echo_char` Cases
215+ def test_rejects_empty_string (self ):
216+ self .assertRaises (ValueError , getpass .getpass , echo_char = "" )
211217
212218 def test_rejects_multi_character_strings (self ):
213219 for s in ["***" , "AA" , "aA*!" ]:
214- with self .assertRaises (ValueError ):
215- getpass ._check_echo_char (s )
220+ with self .subTest (echo_char = s ):
221+ with self .assertRaises (ValueError ):
222+ getpass .getpass (echo_char = s )
216223
217224 def test_rejects_non_ascii (self ):
218- for s in ["Æ" , "❤️" , "🐍" ]:
219- with self .assertRaises (ValueError ):
220- getpass ._check_echo_char (s )
225+ for ch in ["Æ" , "❤️" , "🐍" ]:
226+ with self .subTest (echo_char = ch ):
227+ with self .assertRaises (ValueError ):
228+ getpass .getpass (echo_char = ch )
221229
222230 def test_rejects_control_characters (self ):
223231 for ch in ["\n " , "\t " , "\r " , "\x00 " , "\x7f " , "\x07 " ]:
224- with self .assertRaises (ValueError ):
225- getpass ._check_echo_char (ch )
232+ with self .subTest (echo_char = ch ):
233+ with self .assertRaises (ValueError ):
234+ getpass .getpass (echo_char = ch )
226235
227236 def test_rejects_non_string (self ):
228- for item in [b"*" , 0 ]:
229- with self .assertRaises (TypeError ):
230- getpass ._check_echo_char (item )
231-
232- def test_rejects_empty_string (self ):
233- self .assertRaises (ValueError , getpass .getpass , echo_char = "" )
237+ for item in [b"*" , 0 , 0.0 , [], {}]:
238+ with self .subTest (echo_char = item ):
239+ with self .assertRaises (TypeError ):
240+ getpass .getpass (echo_char = item )
234241
235242
236243if __name__ == "__main__" :
0 commit comments