diff options
author | R David Murray <rdmurray@bitdance.com> | 2013-04-11 21:45:32 (GMT) |
---|---|---|
committer | R David Murray <rdmurray@bitdance.com> | 2013-04-11 21:45:32 (GMT) |
commit | f1c42538e4d69b1b354ce3c0aa7b6cd6a013fd84 (patch) | |
tree | f036e6bc349953ff0a2924496bea2b649f846f66 /Lib/test/test_getpass.py | |
parent | eae41af3565d2081da0b19f658297833ad977eba (diff) | |
download | cpython-f1c42538e4d69b1b354ce3c0aa7b6cd6a013fd84.zip cpython-f1c42538e4d69b1b354ce3c0aa7b6cd6a013fd84.tar.gz cpython-f1c42538e4d69b1b354ce3c0aa7b6cd6a013fd84.tar.bz2 |
#17699: Fix the new getpass test failures on windows.
Patch by Zachary Ware.
Diffstat (limited to 'Lib/test/test_getpass.py')
-rw-r--r-- | Lib/test/test_getpass.py | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/Lib/test/test_getpass.py b/Lib/test/test_getpass.py index 71a877e..15537b9 100644 --- a/Lib/test/test_getpass.py +++ b/Lib/test/test_getpass.py @@ -1,11 +1,19 @@ import getpass import os -import termios import unittest from io import StringIO from unittest import mock from test import support +try: + import termios +except ImportError: + termios = None +try: + import pwd +except ImportError: + pwd = None + @mock.patch('os.environ') class GetpassGetuserTest(unittest.TestCase): @@ -16,7 +24,10 @@ class GetpassGetuserTest(unittest.TestCase): def test_username_priorities_of_env_values(self, environ): environ.get.return_value = None - getpass.getuser() + try: + getpass.getuser() + except ImportError: # in case there's no pwd module + pass self.assertEqual( environ.get.call_args_list, [mock.call(x) for x in ('LOGNAME', 'USER', 'LNAME', 'USERNAME')]) @@ -24,13 +35,16 @@ class GetpassGetuserTest(unittest.TestCase): def test_username_falls_back_to_pwd(self, environ): expected_name = 'some_name' environ.get.return_value = None - with mock.patch('os.getuid') as uid, \ - mock.patch('pwd.getpwuid') as getpw: - uid.return_value = 42 - getpw.return_value = [expected_name] - self.assertEqual(expected_name, - getpass.getuser()) - getpw.assert_called_once_with(42) + if pwd: + with mock.patch('os.getuid') as uid, \ + mock.patch('pwd.getpwuid') as getpw: + uid.return_value = 42 + getpw.return_value = [expected_name] + self.assertEqual(expected_name, + getpass.getuser()) + getpw.assert_called_once_with(42) + else: + self.assertRaises(ImportError, getpass.getuser) class GetpassRawinputTest(unittest.TestCase): @@ -68,9 +82,8 @@ class GetpassRawinputTest(unittest.TestCase): # the password input be taken directly from the tty, and that it not be echoed # on the screen, unless we are falling back to stderr/stdin. -# Some of these might run on other platforms, but play it safe. -@unittest.skipUnless(os.name == 'posix', - 'tests are for the unix version of getpass') +# Some of these might run on platforms without termios, but play it safe. +@unittest.skipUnless(termios, 'tests require system with termios') class UnixGetpassTest(unittest.TestCase): def test_uses_tty_directly(self): |