Kaydet (Commit) 69032c81 authored tarafından Andrew Svetlov's avatar Andrew Svetlov

Issue #16309: Make PYTHONPATH= behavior the same as if PYTHONPATH not set at all.

Thanks to Armin Rigo and Alexey Kachayev.
üst 683b46aa
......@@ -216,6 +216,23 @@ class CmdLineTest(unittest.TestCase):
self.assertIn(path1.encode('ascii'), out)
self.assertIn(path2.encode('ascii'), out)
def test_empty_PYTHONPATH_issue16309(self):
"""On Posix, it is documented that setting PATH to the
empty string is equivalent to not setting PATH at all,
which is an exception to the rule that in a string like
"/bin::/usr/bin" the empty string in the middle gets
interpreted as '.'"""
code = """if 1:
import sys
path = ":".join(sys.path)
path = path.encode("ascii", "backslashreplace")
sys.stdout.buffer.write(path)"""
rc1, out1, err1 = assert_python_ok('-c', code, PYTHONPATH="")
rc2, out2, err2 = assert_python_ok('-c', code)
# regarding to Posix specification, outputs should be equal
# for empty and unset PYTHONPATH
self.assertEquals(out1, out2)
def test_displayhook_unencodable(self):
for encoding in ('ascii', 'latin-1', 'utf-8'):
env = os.environ.copy()
......
......@@ -587,6 +587,7 @@ Sijin Joseph
Andreas Jung
Tattoo Mabonzo K.
Bohuslav Kabrda
Alexey Kachayev
Bob Kahn
Kurt B. Kaiser
Tamito Kajiyama
......
......@@ -10,6 +10,9 @@ What's New in Python 3.4.0 Alpha 1?
Core and Builtins
-----------------
- Issue #16309: Make PYTHONPATH="" behavior the same as if PYTHONPATH
not set at all.
- Issue #10189: Improve the error reporting of SyntaxErrors related to global
and nonlocal statements.
......
......@@ -699,13 +699,11 @@ calculate_path(void)
*/
bufsz = 0;
if (_rtpypath) {
if (_rtpypath && _rtpypath[0] != '\0') {
size_t rtpypath_len;
rtpypath = _Py_char2wchar(_rtpypath, &rtpypath_len);
if (rtpypath != NULL)
bufsz += rtpypath_len + 1;
else
_rtpypath = NULL;
}
defpath = _pythonpath;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment