summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_netrc.py
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2017-11-25 10:37:22 (GMT)
committerGitHub <noreply@github.com>2017-11-25 10:37:22 (GMT)
commit8d9bb11d8fcbf10cc9b1eb0a647bcf3658a4e3dd (patch)
tree96a2d24856b7ea63dfb3992125e3e90447ab52fb /Lib/test/test_netrc.py
parent9d5ec808de2c1359f434cc2fa8378458e4339c96 (diff)
downloadcpython-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.py43
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()