Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Doc/library/hashlib.rst
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,7 @@ a file or file-like object.
.. versionadded:: 3.11

.. versionchanged:: 3.14
Now raises a :exc:`BlockingIOError` if the file is opened in blocking
Now raises a :exc:`BlockingIOError` if the file is opened in non-blocking
mode. Previously, spurious null bytes were added to the digest.


Expand Down
25 changes: 21 additions & 4 deletions Lib/test/test_os/test_os.py
Original file line number Diff line number Diff line change
Expand Up @@ -3197,13 +3197,16 @@ def test_spawnvpe_invalid_env(self):
self._test_invalid_env(os.spawnvpe)


# The introduction of this TestCase caused at least two different errors on
# *nix buildbots. Temporarily skip this to let the buildbots move along.
@unittest.skip("Skip due to platform/environment differences on *NIX buildbots")
@unittest.skipUnless(hasattr(os, 'getlogin'), "test needs os.getlogin")
class LoginTests(unittest.TestCase):
def test_getlogin(self):
user_name = os.getlogin()
try:
user_name = os.getlogin()
except OSError as exc:
if exc.errno in (errno.ENOTTY, errno.ENXIO):
self.skipTest(str(exc))
else:
raise
self.assertNotEqual(len(user_name), 0)


Expand Down Expand Up @@ -4080,6 +4083,7 @@ def test_oserror_filename(self):
(self.filenames, os.listdir,),
(self.filenames, os.rename, "dst"),
(self.filenames, os.replace, "dst"),
(self.filenames, os.utime, None),
]
if os_helper.can_chmod():
funcs.append((self.filenames, os.chmod, 0o777))
Expand Down Expand Up @@ -4120,6 +4124,19 @@ def test_oserror_filename(self):
else:
self.fail(f"No exception thrown by {func}")

def test_mkdir(self):
filename = os_helper.TESTFN
subdir = os.path.join(filename, 'subdir')
self.assertRaises(FileNotFoundError, os.mkdir, subdir)

self.addCleanup(os_helper.unlink, filename)
create_file(filename)
self.assertRaises(FileExistsError, os.mkdir, filename)

self.assertRaises((NotADirectoryError, FileNotFoundError),
os.mkdir, subdir)


class CPUCountTests(unittest.TestCase):
def check_cpu_count(self, cpus):
if cpus is None:
Expand Down
35 changes: 0 additions & 35 deletions Lib/test/test_os/test_windows.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,41 +21,6 @@
from .utils import create_file


class Win32ErrorTests(unittest.TestCase):
def setUp(self):
try:
os.stat(os_helper.TESTFN)
except FileNotFoundError:
exists = False
except OSError as exc:
exists = True
self.fail("file %s must not exist; os.stat failed with %s"
% (os_helper.TESTFN, exc))
else:
self.fail("file %s must not exist" % os_helper.TESTFN)

def test_rename(self):
self.assertRaises(OSError, os.rename, os_helper.TESTFN, os_helper.TESTFN+".bak")

def test_remove(self):
self.assertRaises(OSError, os.remove, os_helper.TESTFN)

def test_chdir(self):
self.assertRaises(OSError, os.chdir, os_helper.TESTFN)

def test_mkdir(self):
self.addCleanup(os_helper.unlink, os_helper.TESTFN)

with open(os_helper.TESTFN, "x") as f:
self.assertRaises(OSError, os.mkdir, os_helper.TESTFN)

def test_utime(self):
self.assertRaises(OSError, os.utime, os_helper.TESTFN, None)

def test_chmod(self):
self.assertRaises(OSError, os.chmod, os_helper.TESTFN, 0)


class Win32KillTests(unittest.TestCase):
def _kill(self, sig):
# Start sys.executable as a subprocess and communicate from the
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Fix :func:`os.getlogin` error handling: fix the error number. Patch by
Victor Stinner.
2 changes: 1 addition & 1 deletion Modules/posixmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -9605,7 +9605,7 @@ os_getlogin_impl(PyObject *module)
int err = getlogin_r(name, sizeof(name));
if (err) {
int old_errno = errno;
errno = -err;
errno = err;
posix_error();
errno = old_errno;
}
Expand Down
Loading