]> granicus.if.org Git - python/commitdiff
Patch #551960: Add check for setrlimit() support
authorJason Tishler <jason@tishler.net>
Thu, 12 Dec 2002 18:13:36 +0000 (18:13 +0000)
committerJason Tishler <jason@tishler.net>
Thu, 12 Dec 2002 18:13:36 +0000 (18:13 +0000)
test_resource calls resource.setrlimit() to change the file size limits.
This fails on Cygwin, which supports setrlimit() and getrlimit(), just not
changing that particular setting. (The same would apply to any other
platform that has those functions but not that particular feature.)

Since getrlimit() works and setrlimit() can be used for other reasons, a
check for ValueError was added to that part of the test.

Lib/test/test_resource.py

index 12b8134a6abce649dba97172b373df6427f6f2c8..29ce35bb0b39b0484686a6cec7f709aa257294d5 100644 (file)
@@ -22,15 +22,23 @@ else:
 # pythonrun.c has been fixed to ignore that exception.  If so, the
 # write() should return EFBIG when the limit is exceeded.
 
+# At least one platform has an unlimited RLIMIT_FSIZE and attempts to
+# change it raise ValueError instead.
+
 try:
-    resource.setrlimit(resource.RLIMIT_FSIZE, (1024, max))
+    try:
+        resource.setrlimit(resource.RLIMIT_FSIZE, (1024, max))
+        limit_set = 1
+    except ValueError:
+        limit_set = 0
     f = open(TESTFN, "wb")
     f.write("X" * 1024)
     try:
         f.write("Y")
         f.flush()
     except IOError:
-        pass
+        if not limit_set:
+            raise
     f.close()
     os.unlink(TESTFN)
 finally:
@@ -40,9 +48,9 @@ finally:
 too_big = 10L**50
 try:
     resource.setrlimit(resource.RLIMIT_FSIZE, (too_big, max))
-except OverflowError:
+except (OverflowError, ValueError):
     pass
 try:
     resource.setrlimit(resource.RLIMIT_FSIZE, (max, too_big))
-except OverflowError:
+except (OverflowError, ValueError):
     pass