Merged revisions 86925 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r86925 | r.david.murray | 2010-12-01 21:58:07 -0500 (Wed, 01 Dec 2010) | 4 lines #10464: fix netrc handling of lines with embedded '#" characters. Patch by Xuanji Li. ........
This commit is contained in:
parent
54065d43ab
commit
78a1a15c20
|
@ -34,11 +34,15 @@ class netrc:
|
|||
def _parse(self, file, fp):
|
||||
lexer = shlex.shlex(fp)
|
||||
lexer.wordchars += r"""!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"""
|
||||
lexer.commenters = lexer.commenters.replace('#', '')
|
||||
while 1:
|
||||
# Look for a machine, default, or macdef top-level keyword
|
||||
toplevel = tt = lexer.get_token()
|
||||
if not tt:
|
||||
break
|
||||
elif tt[0] == '#':
|
||||
fp.readline();
|
||||
continue;
|
||||
elif tt == 'machine':
|
||||
entryname = lexer.get_token()
|
||||
elif tt == 'default':
|
||||
|
|
|
@ -3,7 +3,13 @@ import netrc, os, unittest, sys
|
|||
from test import support
|
||||
|
||||
TEST_NETRC = """
|
||||
|
||||
#this is a comment
|
||||
#this is a comment
|
||||
# this is a comment
|
||||
|
||||
machine foo login log1 password pass1 account acct1
|
||||
machine bar login log1 password pass# account acct1
|
||||
|
||||
macdef macro1
|
||||
line1
|
||||
|
@ -28,17 +34,21 @@ class NetrcTestCase(unittest.TestCase):
|
|||
fp = open(temp_filename, mode)
|
||||
fp.write(TEST_NETRC)
|
||||
fp.close()
|
||||
self.nrc = netrc.netrc(temp_filename)
|
||||
|
||||
def tearDown(self):
|
||||
os.unlink(temp_filename)
|
||||
|
||||
def test_case_1(self):
|
||||
nrc = netrc.netrc(temp_filename)
|
||||
self.assertTrue(nrc.macros == {'macro1':['line1\n', 'line2\n'],
|
||||
'macro2':['line3\n', 'line4\n']}
|
||||
)
|
||||
self.assertTrue(nrc.hosts['foo'] == ('log1', 'acct1', 'pass1'))
|
||||
self.assertTrue(nrc.hosts['default'] == ('log2', None, 'pass2'))
|
||||
self.assertEqual(self.nrc.hosts['foo'], ('log1', 'acct1', 'pass1'))
|
||||
self.assertEqual(self.nrc.hosts['default'], ('log2', None, 'pass2'))
|
||||
|
||||
def test_macros(self):
|
||||
self.assertEqual(self.nrc.macros, {'macro1':['line1\n', 'line2\n'],
|
||||
'macro2':['line3\n', 'line4\n']})
|
||||
|
||||
def test_parses_passwords_with_hash_character(self):
|
||||
self.assertEqual(self.nrc.hosts['bar'], ('log1', 'acct1', 'pass#'))
|
||||
|
||||
def test_main():
|
||||
support.run_unittest(NetrcTestCase)
|
||||
|
|
|
@ -468,6 +468,7 @@ John Lenton
|
|||
Christopher Tur Lesniewski-Laas
|
||||
Mark Levinson
|
||||
William Lewis
|
||||
Xuanji Li
|
||||
Robert van Liere
|
||||
Ross Light
|
||||
Shawn Ligocki
|
||||
|
|
Loading…
Reference in New Issue