mirror of
https://github.com/python/cpython.git
synced 2025-11-25 04:34:37 +00:00
Issue #2722. Now the char buffer to support the path string has
not fixed length, it mallocs memory if needed. As a result, we don't have a maximum for the getcwd() method.
This commit is contained in:
parent
0ba92b24b7
commit
5596b0cfc2
3 changed files with 59 additions and 5 deletions
|
|
@ -10,6 +10,7 @@ except ImportError:
|
|||
import time
|
||||
import os
|
||||
import pwd
|
||||
import shutil
|
||||
import unittest
|
||||
import warnings
|
||||
warnings.filterwarnings('ignore', '.* potential security risk .*',
|
||||
|
|
@ -231,6 +232,38 @@ class PosixTester(unittest.TestCase):
|
|||
if hasattr(st, 'st_flags'):
|
||||
posix.lchflags(test_support.TESTFN, st.st_flags)
|
||||
|
||||
def test_getcwd_long_pathnames(self):
|
||||
if hasattr(posix, 'getcwd'):
|
||||
dirname = 'getcwd-test-directory-0123456789abcdef-01234567890abcdef'
|
||||
curdir = os.getcwd()
|
||||
base_path = os.path.abspath(test_support.TESTFN) + '.getcwd'
|
||||
|
||||
try:
|
||||
os.mkdir(base_path)
|
||||
os.chdir(base_path)
|
||||
|
||||
def _create_and_do_getcwd(dirname, current_path_length = 0):
|
||||
try:
|
||||
os.mkdir(dirname)
|
||||
except:
|
||||
raise test_support.TestSkipped, "mkdir cannot create directory sufficiently deep for getcwd test"
|
||||
|
||||
os.chdir(dirname)
|
||||
try:
|
||||
os.getcwd()
|
||||
if current_path_length < 1027:
|
||||
_create_and_do_getcwd(dirname, current_path_length + len(dirname) + 1)
|
||||
finally:
|
||||
os.chdir('..')
|
||||
os.rmdir(dirname)
|
||||
|
||||
_create_and_do_getcwd(dirname)
|
||||
|
||||
finally:
|
||||
shutil.rmtree(base_path)
|
||||
os.chdir(curdir)
|
||||
|
||||
|
||||
def test_main():
|
||||
test_support.run_unittest(PosixTester)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue