Skip to content

Commit

Permalink
bpo-22367: Update test_fcntl.py for spawn process mode (GH-17154) (GH…
Browse files Browse the repository at this point in the history
…-17253)

(cherry picked from commit 9960230)

Co-authored-by: Dong-hee Na <donghee.na92@gmail.com>
  • Loading branch information
2 people authored and vstinner committed Nov 22, 2019
1 parent bff5255 commit d4d7920
Showing 1 changed file with 19 additions and 9 deletions.
28 changes: 19 additions & 9 deletions Lib/test/test_fcntl.py
Expand Up @@ -51,6 +51,21 @@ def __init__(self, fn):
def fileno(self):
return self.fn

def try_lockf_on_other_process_fail(fname, cmd):
f = open(fname, 'wb+')
try:
fcntl.lockf(f, cmd)
except BlockingIOError:
pass
finally:
f.close()

def try_lockf_on_other_process(fname, cmd):
f = open(fname, 'wb+')
fcntl.lockf(f, cmd)
fcntl.lockf(f, fcntl.LOCK_UN)
f.close()

class TestFcntl(unittest.TestCase):

def setUp(self):
Expand Down Expand Up @@ -138,28 +153,23 @@ def test_flock(self):
self.assertRaises(ValueError, fcntl.flock, -1, fcntl.LOCK_SH)
self.assertRaises(TypeError, fcntl.flock, 'spam', fcntl.LOCK_SH)

@unittest.skipIf(platform.system() == "AIX", "AIX returns PermissionError")
def test_lockf_exclusive(self):
self.f = open(TESTFN, 'wb+')
cmd = fcntl.LOCK_EX | fcntl.LOCK_NB
def try_lockf_on_other_process():
self.assertRaises(BlockingIOError, fcntl.lockf, self.f, cmd)

fcntl.lockf(self.f, cmd)
p = Process(target=try_lockf_on_other_process)
p = Process(target=try_lockf_on_other_process_fail, args=(TESTFN, cmd))
p.start()
p.join()
fcntl.lockf(self.f, fcntl.LOCK_UN)
self.assertEqual(p.exitcode, 0)

@unittest.skipIf(platform.system() == "AIX", "AIX returns PermissionError")
def test_lockf_share(self):
self.f = open(TESTFN, 'wb+')
cmd = fcntl.LOCK_SH | fcntl.LOCK_NB
def try_lockf_on_other_process():
fcntl.lockf(self.f, cmd)
fcntl.lockf(self.f, fcntl.LOCK_UN)

fcntl.lockf(self.f, cmd)
p = Process(target=try_lockf_on_other_process)
p = Process(target=try_lockf_on_other_process, args=(TESTFN, cmd))
p.start()
p.join()
fcntl.lockf(self.f, fcntl.LOCK_UN)
Expand Down

0 comments on commit d4d7920

Please sign in to comment.