[Python-checkins] r86927 - in python/branches/release27-maint: Lib/netrc.py Lib/test/test_netrc.py Misc/ACKS Misc/NEWS
r.david.murray
python-checkins at python.org
Thu Dec 2 04:16:23 CET 2010
Author: r.david.murray
Date: Thu Dec 2 04:16:23 2010
New Revision: 86927
Log:
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.
........
Modified:
python/branches/release27-maint/ (props changed)
python/branches/release27-maint/Lib/netrc.py
python/branches/release27-maint/Lib/test/test_netrc.py
python/branches/release27-maint/Misc/ACKS
python/branches/release27-maint/Misc/NEWS
Modified: python/branches/release27-maint/Lib/netrc.py
==============================================================================
--- python/branches/release27-maint/Lib/netrc.py (original)
+++ python/branches/release27-maint/Lib/netrc.py Thu Dec 2 04:16:23 2010
@@ -34,11 +34,15 @@
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':
Modified: python/branches/release27-maint/Lib/test/test_netrc.py
==============================================================================
--- python/branches/release27-maint/Lib/test/test_netrc.py (original)
+++ python/branches/release27-maint/Lib/test/test_netrc.py Thu Dec 2 04:16:23 2010
@@ -3,7 +3,13 @@
from test import test_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,18 +34,21 @@
fp = open(temp_filename, mode)
fp.write(TEST_NETRC)
fp.close()
- self.netrc = netrc.netrc(temp_filename)
+ self.nrc = netrc.netrc(temp_filename)
def tearDown (self):
- del self.netrc
os.unlink(temp_filename)
def test_case_1(self):
- self.assertTrue(self.netrc.macros == {'macro1':['line1\n', 'line2\n'],
- 'macro2':['line3\n', 'line4\n']}
- )
- self.assertTrue(self.netrc.hosts['foo'] == ('log1', 'acct1', 'pass1'))
- self.assertTrue(self.netrc.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():
test_support.run_unittest(NetrcTestCase)
Modified: python/branches/release27-maint/Misc/ACKS
==============================================================================
--- python/branches/release27-maint/Misc/ACKS (original)
+++ python/branches/release27-maint/Misc/ACKS Thu Dec 2 04:16:23 2010
@@ -472,6 +472,7 @@
Christopher Tur Lesniewski-Laas
Mark Levinson
William Lewis
+Xuanji Li
Robert van Liere
Ross Light
Shawn Ligocki
Modified: python/branches/release27-maint/Misc/NEWS
==============================================================================
--- python/branches/release27-maint/Misc/NEWS (original)
+++ python/branches/release27-maint/Misc/NEWS Thu Dec 2 04:16:23 2010
@@ -13,6 +13,8 @@
Library
-------
+- Issue #10464: netrc now correctly handles lines with embedded '#' characters.
+
What's New in Python 2.7.1?
===========================
More information about the Python-checkins
mailing list