From 66306cf6d415f0ad96c54880451f266a1cbe9835 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 15 Feb 2015 13:05:10 +0200 Subject: [PATCH] Issue #21934: test_file2k no longer create regular file /dev/full on OpenBSD when run as root. Extended testing with /dev/full. Based on patch by Daniel Dickman. --- Lib/test/test_file2k.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/Lib/test/test_file2k.py b/Lib/test/test_file2k.py index c5dd1a6b5a..e39ef7042e 100644 --- a/Lib/test/test_file2k.py +++ b/Lib/test/test_file2k.py @@ -4,6 +4,7 @@ import unittest import itertools import select import signal +import stat import subprocess import time from array import array @@ -430,17 +431,22 @@ class OtherFileTests(unittest.TestCase): @unittest.skipUnless(os.name == 'posix', 'test requires a posix system.') def test_write_full(self): - # Issue #17976 - try: - f = open('/dev/full', 'w', 1) - except IOError: - self.skipTest("requires '/dev/full'") - try: + devfull = '/dev/full' + if not (os.path.exists(devfull) and + stat.S_ISCHR(os.stat(devfull).st_mode)): + # Issue #21934: OpenBSD does not have a /dev/full character device + self.skipTest('requires %r' % devfull) + with open(devfull, 'wb', 1) as f: + with self.assertRaises(IOError): + f.write('hello\n') + with open(devfull, 'wb', 1) as f: with self.assertRaises(IOError): + # Issue #17976 f.write('hello') f.write('\n') - finally: - f.close() + with open(devfull, 'wb', 0) as f: + with self.assertRaises(IOError): + f.write('h') @unittest.skipUnless(sys.maxsize > 2**31, "requires 64-bit system") @test_support.precisionbigmemtest(2**31, 2.5, dry_run=False) -- 2.50.1