diff options
author | Walter Dörwald <walter@livinglogic.de> | 2007-01-20 17:28:31 (GMT) |
---|---|---|
committer | Walter Dörwald <walter@livinglogic.de> | 2007-01-20 17:28:31 (GMT) |
commit | 9fab9a7da818fb5dcab6b95a76f7dfaf7111a461 (patch) | |
tree | 30cb5ca882e2422c9be12e14fdc10df6ef428de8 | |
parent | cc0eba9d98fb67b3ea57a2edc2a0c5de38eca0d4 (diff) | |
download | cpython-9fab9a7da818fb5dcab6b95a76f7dfaf7111a461.zip cpython-9fab9a7da818fb5dcab6b95a76f7dfaf7111a461.tar.gz cpython-9fab9a7da818fb5dcab6b95a76f7dfaf7111a461.tar.bz2 |
Port test_resource.py to unittest.
-rw-r--r-- | Lib/test/output/test_resource | 2 | ||||
-rw-r--r-- | Lib/test/test_resource.py | 134 |
2 files changed, 78 insertions, 58 deletions
diff --git a/Lib/test/output/test_resource b/Lib/test/output/test_resource deleted file mode 100644 index aafed83..0000000 --- a/Lib/test/output/test_resource +++ /dev/null @@ -1,2 +0,0 @@ -test_resource -True diff --git a/Lib/test/test_resource.py b/Lib/test/test_resource.py index 29ce35b..4a61582 100644 --- a/Lib/test/test_resource.py +++ b/Lib/test/test_resource.py @@ -1,56 +1,78 @@ -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. - -# At least one platform has an unlimited RLIMIT_FSIZE and attempts to -# change it raise ValueError instead. - -try: - 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: - if not limit_set: - raise - 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, ValueError): - pass -try: - resource.setrlimit(resource.RLIMIT_FSIZE, (max, too_big)) -except (OverflowError, ValueError): - pass +import unittest +from test import test_support + + +import os, resource + +# This test is checking a few specific problem spots with the resource module. + +class ResourceTest(unittest.TestCase): + def test_fsize_ismax(self): + + try: + (cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE) + except AttributeError: + pass + else: + # 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. + self.assertEqual(resource.RLIM_INFINITY, max) + resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max)) + + def test_fsize_enforced(self): + try: + (cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE) + except AttributeError: + pass + else: + # 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. + + # At least one platform has an unlimited RLIMIT_FSIZE and attempts + # to change it raise ValueError instead. + try: + try: + resource.setrlimit(resource.RLIMIT_FSIZE, (1024, max)) + limit_set = True + except ValueError: + limit_set = False + f = open(test_support.TESTFN, "wb") + f.write("X" * 1024) + try: + f.write("Y") + f.flush() + except IOError: + if not limit_set: + raise + f.close() + os.unlink(test_support.TESTFN) + finally: + resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max)) + + def test_fsize_toobig(self): + # Be sure that setrlimit is checking for really large values + too_big = 10L**50 + try: + (cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE) + except AttributeError: + pass + else: + try: + resource.setrlimit(resource.RLIMIT_FSIZE, (too_big, max)) + except (OverflowError, ValueError): + pass + try: + resource.setrlimit(resource.RLIMIT_FSIZE, (max, too_big)) + except (OverflowError, ValueError): + pass + +def test_main(verbose=None): + test_support.run_unittest(ResourceTest) + +if __name__ == "__main__": + test_main() |