Kaydet (Commit) bc7809b5 authored tarafından Fred Drake's avatar Fred Drake

Update the tests for the fcntl module to check passing in file objects,

and using the constants defined there instead of FCNTL.
üst d0de57cf
...@@ -4,33 +4,43 @@ ...@@ -4,33 +4,43 @@
""" """
import struct import struct
import fcntl import fcntl
import FCNTL
import os, sys import os, sys
from test_support import verbose, TESTFN from test_support import verbose, TESTFN
filename = TESTFN filename = TESTFN
# the example from the library docs
f = open(filename, 'w')
rv = fcntl.fcntl(f.fileno(), FCNTL.F_SETFL, os.O_NONBLOCK)
if verbose:
print 'Status from fnctl with O_NONBLOCK: ', rv
if sys.platform in ('netbsd1', 'Darwin1.2', 'darwin1', if sys.platform in ('netbsd1', 'Darwin1.2', 'darwin1',
'freebsd2', 'freebsd3', 'freebsd4', 'freebsd5', 'freebsd2', 'freebsd3', 'freebsd4', 'freebsd5',
'bsdos2', 'bsdos3', 'bsdos4', 'bsdos2', 'bsdos3', 'bsdos4',
'openbsd', 'openbsd2'): 'openbsd', 'openbsd2'):
lockdata = struct.pack('lxxxxlxxxxlhh', 0, 0, 0, FCNTL.F_WRLCK, 0) lockdata = struct.pack('lxxxxlxxxxlhh', 0, 0, 0, fcntl.F_WRLCK, 0)
elif sys.platform in ['aix3', 'aix4', 'hp-uxB', 'unixware7']: elif sys.platform in ['aix3', 'aix4', 'hp-uxB', 'unixware7']:
lockdata = struct.pack('hhlllii', FCNTL.F_WRLCK, 0, 0, 0, 0, 0, 0) lockdata = struct.pack('hhlllii', fcntl.F_WRLCK, 0, 0, 0, 0, 0, 0)
else: else:
lockdata = struct.pack('hhllhh', FCNTL.F_WRLCK, 0, 0, 0, 0, 0) lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 0, 0, 0)
if verbose: if verbose:
print 'struct.pack: ', `lockdata` print 'struct.pack: ', `lockdata`
rv = fcntl.fcntl(f.fileno(), FCNTL.F_SETLKW, lockdata)
# the example from the library docs
f = open(filename, 'w')
rv = fcntl.fcntl(f.fileno(), fcntl.F_SETFL, os.O_NONBLOCK)
if verbose:
print 'Status from fnctl with O_NONBLOCK: ', rv
rv = fcntl.fcntl(f.fileno(), fcntl.F_SETLKW, lockdata)
if verbose: if verbose:
print 'String from fcntl with F_SETLKW: ', `rv` print 'String from fcntl with F_SETLKW: ', `rv`
f.close() f.close()
os.unlink(filename) os.unlink(filename)
# Again, but pass the file rather than numeric descriptor:
f = open(filename, 'w')
rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NONBLOCK)
rv = fcntl.fcntl(f, fcntl.F_SETLKW, lockdata)
f.close()
os.unlink(filename)
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