mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	imports e.g. test_support must do so using an absolute package name such as "import test.test_support" or "from test import test_support". This also updates the README in Lib/test, and gets rid of the duplicate data dirctory in Lib/test/data (replaced by Lib/email/test/data). Now Tim and Jack can have at it. :)
		
			
				
	
	
		
			48 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import os
 | 
						|
import resource
 | 
						|
 | 
						|
from test.test_support import TESTFN
 | 
						|
 | 
						|
# This test is checking a few specific problem spots.  RLIMIT_FSIZE
 | 
						|
# should be RLIM_INFINITY, which will be a really big number on a
 | 
						|
# platform with large file support.  On these platforms, we need to
 | 
						|
# test that the get/setrlimit functions properly convert the number to
 | 
						|
# a C long long and that the conversion doesn't raise an error.
 | 
						|
 | 
						|
try:
 | 
						|
    cur, max = resource.getrlimit(resource.RLIMIT_FSIZE)
 | 
						|
except AttributeError:
 | 
						|
    pass
 | 
						|
else:
 | 
						|
    print resource.RLIM_INFINITY == max
 | 
						|
    resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max))
 | 
						|
 | 
						|
# Now check to see what happens when the RLIMIT_FSIZE is small.  Some
 | 
						|
# versions of Python were terminated by an uncaught SIGXFSZ, but
 | 
						|
# pythonrun.c has been fixed to ignore that exception.  If so, the
 | 
						|
# write() should return EFBIG when the limit is exceeded.
 | 
						|
 | 
						|
try:
 | 
						|
    resource.setrlimit(resource.RLIMIT_FSIZE, (1024, max))
 | 
						|
    f = open(TESTFN, "wb")
 | 
						|
    f.write("X" * 1024)
 | 
						|
    try:
 | 
						|
        f.write("Y")
 | 
						|
        f.flush()
 | 
						|
    except IOError:
 | 
						|
        pass
 | 
						|
    f.close()
 | 
						|
    os.unlink(TESTFN)
 | 
						|
finally:
 | 
						|
    resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max))
 | 
						|
 | 
						|
# And be sure that setrlimit is checking for really large values
 | 
						|
too_big = 10L**50
 | 
						|
try:
 | 
						|
    resource.setrlimit(resource.RLIMIT_FSIZE, (too_big, max))
 | 
						|
except OverflowError:
 | 
						|
    pass
 | 
						|
try:
 | 
						|
    resource.setrlimit(resource.RLIMIT_FSIZE, (max, too_big))
 | 
						|
except OverflowError:
 | 
						|
    pass
 |