|
1 | 1 | import netrc, os, unittest, sys, tempfile, textwrap |
| 2 | +from unittest import mock |
2 | 3 | from test import support |
3 | 4 |
|
4 | 5 |
|
@@ -126,8 +127,44 @@ def test_security(self): |
126 | 127 | os.chmod(fn, 0o622) |
127 | 128 | self.assertRaises(netrc.NetrcParseError, netrc.netrc) |
128 | 129 |
|
129 | | -def test_main(): |
130 | | - support.run_unittest(NetrcTestCase) |
| 130 | + def test_file_not_found_in_home(self): |
| 131 | + d = support.TESTFN |
| 132 | + os.mkdir(d) |
| 133 | + self.addCleanup(support.rmtree, d) |
| 134 | + with support.EnvironmentVarGuard() as environ: |
| 135 | + environ.set('HOME', d) |
| 136 | + self.assertRaises(FileNotFoundError, netrc.netrc) |
| 137 | + |
| 138 | + def test_file_not_found_explicit(self): |
| 139 | + self.assertRaises(FileNotFoundError, netrc.netrc, |
| 140 | + file='unlikely_netrc') |
| 141 | + |
| 142 | + def test_home_not_set(self): |
| 143 | + fake_home = support.TESTFN |
| 144 | + os.mkdir(fake_home) |
| 145 | + self.addCleanup(support.rmtree, fake_home) |
| 146 | + fake_netrc_path = os.path.join(fake_home, '.netrc') |
| 147 | + with open(fake_netrc_path, 'w') as f: |
| 148 | + f.write('machine foo.domain.com login bar password pass') |
| 149 | + os.chmod(fake_netrc_path, 0o600) |
| 150 | + |
| 151 | + orig_expanduser = os.path.expanduser |
| 152 | + called = [] |
| 153 | + |
| 154 | + def fake_expanduser(s): |
| 155 | + called.append(s) |
| 156 | + with support.EnvironmentVarGuard() as environ: |
| 157 | + environ.set('HOME', fake_home) |
| 158 | + result = orig_expanduser(s) |
| 159 | + return result |
| 160 | + |
| 161 | + with support.swap_attr(os.path, 'expanduser', fake_expanduser): |
| 162 | + nrc = netrc.netrc() |
| 163 | + login, account, password = nrc.authenticators('foo.domain.com') |
| 164 | + self.assertEqual(login, 'bar') |
| 165 | + |
| 166 | + self.assertTrue(called) |
| 167 | + |
131 | 168 |
|
132 | 169 | if __name__ == "__main__": |
133 | | - test_main() |
| 170 | + unittest.main() |
0 commit comments