Skip to content

Commit acc7bca

Browse files
committed
use subTest for getpass echo_char tests
1 parent fde711f commit acc7bca

File tree

1 file changed

+22
-15
lines changed

1 file changed

+22
-15
lines changed

Lib/test/test_getpass.py

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

236243
if __name__ == "__main__":

0 commit comments

Comments
 (0)