mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	Patch # 1331 by Christian Heimes.
The patch fixes some of the problems on Windows. It doesn't introduce addition problems on Linux.
This commit is contained in:
		
							parent
							
								
									daa251ca09
								
							
						
					
					
						commit
						c12a813aa7
					
				
					 7 changed files with 25 additions and 15 deletions
				
			
		| 
						 | 
				
			
			@ -26,9 +26,12 @@ def __init__(self, file=None):
 | 
			
		|||
                file = os.path.join(os.environ['HOME'], ".netrc")
 | 
			
		||||
            except KeyError:
 | 
			
		||||
                raise IOError("Could not find .netrc: $HOME is not set")
 | 
			
		||||
        fp = open(file)
 | 
			
		||||
        self.hosts = {}
 | 
			
		||||
        self.macros = {}
 | 
			
		||||
        with open(file) as fp:
 | 
			
		||||
            self._parse(file, fp)
 | 
			
		||||
 | 
			
		||||
    def _parse(self, file, fp):
 | 
			
		||||
        lexer = shlex.shlex(fp)
 | 
			
		||||
        lexer.wordchars += r"""!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"""
 | 
			
		||||
        while 1:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -809,6 +809,8 @@ def _communicate(self, input):
 | 
			
		|||
 | 
			
		||||
            if self.stdin:
 | 
			
		||||
                if input is not None:
 | 
			
		||||
                    if isinstance(input, str):
 | 
			
		||||
                        input = input.encode()
 | 
			
		||||
                    self.stdin.write(input)
 | 
			
		||||
                self.stdin.close()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -885,6 +885,7 @@ def printlist(x, width=70, indent=4):
 | 
			
		|||
        test_pwd
 | 
			
		||||
        test_resource
 | 
			
		||||
        test_signal
 | 
			
		||||
        test_syslog
 | 
			
		||||
        test_threadsignals
 | 
			
		||||
        test_wait3
 | 
			
		||||
        test_wait4
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -58,6 +58,7 @@ def setUp(self):
 | 
			
		|||
        self._box = self._factory(self._path)
 | 
			
		||||
 | 
			
		||||
    def tearDown(self):
 | 
			
		||||
        self._box.close()
 | 
			
		||||
        self._delete_recursively(self._path)
 | 
			
		||||
 | 
			
		||||
    def test_add(self):
 | 
			
		||||
| 
						 | 
				
			
			@ -390,12 +391,14 @@ def _test_flush_or_close(self, method):
 | 
			
		|||
        self._box.add(contents[0])
 | 
			
		||||
        self._box.add(contents[1])
 | 
			
		||||
        self._box.add(contents[2])
 | 
			
		||||
        oldbox = self._box
 | 
			
		||||
        method()
 | 
			
		||||
        self._box = self._factory(self._path)
 | 
			
		||||
        keys = self._box.keys()
 | 
			
		||||
        self.assertEqual(len(keys), 3)
 | 
			
		||||
        for key in keys:
 | 
			
		||||
            self.assert_(self._box.get_string(key) in contents)
 | 
			
		||||
        oldbox.close()
 | 
			
		||||
 | 
			
		||||
    def test_dump_message(self):
 | 
			
		||||
        # Write message representations to disk
 | 
			
		||||
| 
						 | 
				
			
			@ -403,7 +406,7 @@ def test_dump_message(self):
 | 
			
		|||
                      _sample_message, io.StringIO(_sample_message)):
 | 
			
		||||
            output = io.StringIO()
 | 
			
		||||
            self._box._dump_message(input, output)
 | 
			
		||||
            self.assert_(output.getvalue() ==
 | 
			
		||||
            self.assertEqual(output.getvalue(),
 | 
			
		||||
                         _sample_message.replace('\n', os.linesep))
 | 
			
		||||
        output = io.StringIO()
 | 
			
		||||
        self.assertRaises(TypeError,
 | 
			
		||||
| 
						 | 
				
			
			@ -694,6 +697,7 @@ def test_directory_in_folder (self):
 | 
			
		|||
class _TestMboxMMDF(TestMailbox):
 | 
			
		||||
 | 
			
		||||
    def tearDown(self):
 | 
			
		||||
        self._box.close()
 | 
			
		||||
        self._delete_recursively(self._path)
 | 
			
		||||
        for lock_remnant in glob.glob(self._path + '.*'):
 | 
			
		||||
            test_support.unlink(lock_remnant)
 | 
			
		||||
| 
						 | 
				
			
			@ -916,6 +920,7 @@ class TestBabyl(TestMailbox):
 | 
			
		|||
    _factory = lambda self, path, factory=None: mailbox.Babyl(path, factory)
 | 
			
		||||
 | 
			
		||||
    def tearDown(self):
 | 
			
		||||
        self._box.close()
 | 
			
		||||
        self._delete_recursively(self._path)
 | 
			
		||||
        for lock_remnant in glob.glob(self._path + '.*'):
 | 
			
		||||
            test_support.unlink(lock_remnant)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,25 +21,24 @@
 | 
			
		|||
 | 
			
		||||
class NetrcTestCase(unittest.TestCase):
 | 
			
		||||
 | 
			
		||||
    def setUp (self):
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        mode = 'w'
 | 
			
		||||
        if sys.platform not in ['cygwin']:
 | 
			
		||||
            mode += 't'
 | 
			
		||||
        fp = open(temp_filename, mode)
 | 
			
		||||
        fp.write(TEST_NETRC)
 | 
			
		||||
        fp.close()
 | 
			
		||||
        self.netrc = netrc.netrc(temp_filename)
 | 
			
		||||
 | 
			
		||||
    def tearDown (self):
 | 
			
		||||
        del self.netrc
 | 
			
		||||
    def tearDown(self):
 | 
			
		||||
        os.unlink(temp_filename)
 | 
			
		||||
 | 
			
		||||
    def test_case_1(self):
 | 
			
		||||
        self.assert_(self.netrc.macros == {'macro1':['line1\n', 'line2\n'],
 | 
			
		||||
        nrc = netrc.netrc(temp_filename)
 | 
			
		||||
        self.assert_(nrc.macros == {'macro1':['line1\n', 'line2\n'],
 | 
			
		||||
                                           'macro2':['line3\n', 'line4\n']}
 | 
			
		||||
                                           )
 | 
			
		||||
        self.assert_(self.netrc.hosts['foo'] == ('log1', 'acct1', 'pass1'))
 | 
			
		||||
        self.assert_(self.netrc.hosts['default'] == ('log2', None, 'pass2'))
 | 
			
		||||
        self.assert_(nrc.hosts['foo'] == ('log1', 'acct1', 'pass1'))
 | 
			
		||||
        self.assert_(nrc.hosts['default'] == ('log2', None, 'pass2'))
 | 
			
		||||
 | 
			
		||||
def test_main():
 | 
			
		||||
    test_support.run_unittest(NetrcTestCase)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,7 +36,7 @@ def setUp(self):
 | 
			
		|||
        except OSError:
 | 
			
		||||
            pass
 | 
			
		||||
        for name in self.files:
 | 
			
		||||
            f = open(name, 'w')
 | 
			
		||||
            f = open(name, 'wb')
 | 
			
		||||
            f.write((name+'\n').encode("utf-8"))
 | 
			
		||||
            f.close()
 | 
			
		||||
            os.stat(name)
 | 
			
		||||
| 
						 | 
				
			
			@ -71,7 +71,7 @@ def test_failures(self):
 | 
			
		|||
 | 
			
		||||
    def test_open(self):
 | 
			
		||||
        for name in self.files:
 | 
			
		||||
            f = open(name, 'w')
 | 
			
		||||
            f = open(name, 'wb')
 | 
			
		||||
            f.write((name+'\n').encode("utf-8"))
 | 
			
		||||
            f.close()
 | 
			
		||||
            os.stat(name)
 | 
			
		||||
| 
						 | 
				
			
			@ -80,7 +80,7 @@ def test_listdir(self):
 | 
			
		|||
        f1 = os.listdir(test_support.TESTFN)
 | 
			
		||||
        # Printing f1 is not appropriate, as specific filenames
 | 
			
		||||
        # returned depend on the local encoding
 | 
			
		||||
        f2 = os.listdir(str(test_support.TESTFN,
 | 
			
		||||
        f2 = os.listdir(str(test_support.TESTFN.encode("utf-8"),
 | 
			
		||||
                                sys.getfilesystemencoding()))
 | 
			
		||||
        f2.sort()
 | 
			
		||||
        print(f2)
 | 
			
		||||
| 
						 | 
				
			
			@ -96,7 +96,7 @@ def test_directory(self):
 | 
			
		|||
        oldwd = os.getcwd()
 | 
			
		||||
        os.mkdir(dirname)
 | 
			
		||||
        os.chdir(dirname)
 | 
			
		||||
        f = open(filename, 'w')
 | 
			
		||||
        f = open(filename, 'wb')
 | 
			
		||||
        f.write((filename + '\n').encode("utf-8"))
 | 
			
		||||
        f.close()
 | 
			
		||||
        print(repr(filename))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -630,7 +630,7 @@ def test_shell_sequence(self):
 | 
			
		|||
            p = subprocess.Popen(["set"], shell=1,
 | 
			
		||||
                                 stdout=subprocess.PIPE,
 | 
			
		||||
                                 env=newenv)
 | 
			
		||||
            self.assertNotEqual(p.stdout.read().find("physalis"), -1)
 | 
			
		||||
            self.assertNotEqual(p.stdout.read().find(b"physalis"), -1)
 | 
			
		||||
 | 
			
		||||
        def test_shell_string(self):
 | 
			
		||||
            # Run command through the shell (string)
 | 
			
		||||
| 
						 | 
				
			
			@ -639,7 +639,7 @@ def test_shell_string(self):
 | 
			
		|||
            p = subprocess.Popen("set", shell=1,
 | 
			
		||||
                                 stdout=subprocess.PIPE,
 | 
			
		||||
                                 env=newenv)
 | 
			
		||||
            self.assertNotEqual(p.stdout.read().find("physalis"), -1)
 | 
			
		||||
            self.assertNotEqual(p.stdout.read().find(b"physalis"), -1)
 | 
			
		||||
 | 
			
		||||
        def test_call_string(self):
 | 
			
		||||
            # call() function with string argument on Windows
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue