diff options
author | Berker Peksag <berker.peksag@gmail.com> | 2017-11-25 10:37:22 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-25 10:37:22 (GMT) |
commit | 8d9bb11d8fcbf10cc9b1eb0a647bcf3658a4e3dd (patch) | |
tree | 96a2d24856b7ea63dfb3992125e3e90447ab52fb /Lib/test/test_netrc.py | |
parent | 9d5ec808de2c1359f434cc2fa8378458e4339c96 (diff) | |
download | cpython-8d9bb11d8fcbf10cc9b1eb0a647bcf3658a4e3dd.zip cpython-8d9bb11d8fcbf10cc9b1eb0a647bcf3658a4e3dd.tar.gz cpython-8d9bb11d8fcbf10cc9b1eb0a647bcf3658a4e3dd.tar.bz2 |
bpo-28334: netrc() now uses expanduser() to find .netrc file (GH-4537)
Previously, netrc.netrc() was raised an exception if $HOME is not set.
Authored-By: Dimitri Merejkowsky <dimitri.merejkowsky@tanker.io>
Diffstat (limited to 'Lib/test/test_netrc.py')
-rw-r--r-- | Lib/test/test_netrc.py | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/Lib/test/test_netrc.py b/Lib/test/test_netrc.py index ca6f27d..f59e537 100644 --- a/Lib/test/test_netrc.py +++ b/Lib/test/test_netrc.py @@ -1,4 +1,5 @@ import netrc, os, unittest, sys, tempfile, textwrap +from unittest import mock from test import support @@ -126,8 +127,44 @@ class NetrcTestCase(unittest.TestCase): os.chmod(fn, 0o622) self.assertRaises(netrc.NetrcParseError, netrc.netrc) -def test_main(): - support.run_unittest(NetrcTestCase) + def test_file_not_found_in_home(self): + d = support.TESTFN + os.mkdir(d) + self.addCleanup(support.rmtree, d) + with support.EnvironmentVarGuard() as environ: + environ.set('HOME', d) + self.assertRaises(FileNotFoundError, netrc.netrc) + + def test_file_not_found_explicit(self): + self.assertRaises(FileNotFoundError, netrc.netrc, + file='unlikely_netrc') + + def test_home_not_set(self): + fake_home = support.TESTFN + os.mkdir(fake_home) + self.addCleanup(support.rmtree, fake_home) + fake_netrc_path = os.path.join(fake_home, '.netrc') + with open(fake_netrc_path, 'w') as f: + f.write('machine foo.domain.com login bar password pass') + os.chmod(fake_netrc_path, 0o600) + + orig_expanduser = os.path.expanduser + called = [] + + def fake_expanduser(s): + called.append(s) + with support.EnvironmentVarGuard() as environ: + environ.set('HOME', fake_home) + result = orig_expanduser(s) + return result + + with support.swap_attr(os.path, 'expanduser', fake_expanduser): + nrc = netrc.netrc() + login, account, password = nrc.authenticators('foo.domain.com') + self.assertEqual(login, 'bar') + + self.assertTrue(called) + if __name__ == "__main__": - test_main() + unittest.main() |