diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py index 755a81c3506..2eba77043e1 100644 --- a/Lib/test/test_posix.py +++ b/Lib/test/test_posix.py @@ -405,8 +405,16 @@ class PosixTester(unittest.TestCase): _create_and_do_getcwd(dirname, current_path_length + len(dirname) + 1) except OSError as e: expected_errno = errno.ENAMETOOLONG - if 'sunos' in sys.platform or 'openbsd' in sys.platform: - expected_errno = errno.ERANGE # Issue 9185 + # The following platforms have quirky getcwd() + # behaviour -- see issue 9185 and 15765 for + # more information. + quirky_platform = ( + 'sunos' in sys.platform or + 'netbsd' in sys.platform or + 'openbsd' in sys.platform + ) + if quirky_platform: + expected_errno = errno.ERANGE self.assertEqual(e.errno, expected_errno) finally: os.chdir('..') diff --git a/Misc/NEWS b/Misc/NEWS index 54c260c660a..1b7f80f01ae 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -346,6 +346,9 @@ Library Tests ----- +- Issue #15765: Extend a previous fix to Solaris and OpenBSD for quirky + getcwd() behaviour (issue #9185) to NetBSD as well. + - Issue #15615: Add some tests for the json module's handling of invalid input data. Patch by Kushal Das. diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 1bd5c1ac689..ea810ecaea8 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -1956,7 +1956,9 @@ PyDoc_STRVAR(posix_getcwd__doc__, "getcwd() -> path\n\n\ Return a string representing the current working directory."); -#if (defined(__sun) && defined(__SVR4)) || defined(__OpenBSD__) +#if (defined(__sun) && defined(__SVR4)) || \ + defined(__OpenBSD__) || \ + defined(__NetBSD__) /* Issue 9185: getcwd() returns NULL/ERANGE indefinitely. */ static PyObject * posix_getcwd(PyObject *self, PyObject *noargs)