diff options
author | Zachary Ware <zachary.ware@gmail.com> | 2013-12-10 20:09:20 (GMT) |
---|---|---|
committer | Zachary Ware <zachary.ware@gmail.com> | 2013-12-10 20:09:20 (GMT) |
commit | 1f70221b861a3714735251d57695b2f472d0599b (patch) | |
tree | 945cd43b04b6351e71c23aa0cb19f6fab1f3ddda /Lib/test/test_resource.py | |
parent | 284164b47638e4e71a933ce136a33fdd352f7bac (diff) | |
download | cpython-1f70221b861a3714735251d57695b2f472d0599b.zip cpython-1f70221b861a3714735251d57695b2f472d0599b.tar.gz cpython-1f70221b861a3714735251d57695b2f472d0599b.tar.bz2 |
Issue #19572: More silently skipped tests explicitly skipped.
Diffstat (limited to 'Lib/test/test_resource.py')
-rw-r--r-- | Lib/test/test_resource.py | 124 |
1 files changed, 60 insertions, 64 deletions
diff --git a/Lib/test/test_resource.py b/Lib/test/test_resource.py index 745b26b..de29d3b 100644 --- a/Lib/test/test_resource.py +++ b/Lib/test/test_resource.py @@ -18,62 +18,60 @@ class ResourceTest(unittest.TestCase): 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)) + self.skipTest('RLIMIT_FSIZE not available') + # 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. + self.skipTest('RLIMIT_FSIZE not available') + # 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. + # 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") + try: + f.write("X" * 1024) try: - resource.setrlimit(resource.RLIMIT_FSIZE, (1024, max)) - limit_set = True - except ValueError: - limit_set = False - f = open(test_support.TESTFN, "wb") - try: - f.write("X" * 1024) - try: - f.write("Y") + f.write("Y") + f.flush() + # On some systems (e.g., Ubuntu on hppa) the flush() + # doesn't always cause the exception, but the close() + # does eventually. Try flushing several times in + # an attempt to ensure the file is really synced and + # the exception raised. + for i in range(5): + time.sleep(.1) f.flush() - # On some systems (e.g., Ubuntu on hppa) the flush() - # doesn't always cause the exception, but the close() - # does eventually. Try flushing several times in - # an attempt to ensure the file is really synced and - # the exception raised. - for i in range(5): - time.sleep(.1) - f.flush() - except IOError: - if not limit_set: - raise - if limit_set: - # Close will attempt to flush the byte we wrote - # Restore limit first to avoid getting a spurious error - resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max)) - finally: - f.close() - finally: + except IOError: + if not limit_set: + raise if limit_set: + # Close will attempt to flush the byte we wrote + # Restore limit first to avoid getting a spurious error resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max)) - test_support.unlink(test_support.TESTFN) + finally: + f.close() + finally: + if limit_set: + resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max)) + test_support.unlink(test_support.TESTFN) def test_fsize_toobig(self): # Be sure that setrlimit is checking for really large values @@ -81,16 +79,15 @@ class ResourceTest(unittest.TestCase): try: (cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE) except AttributeError: + self.skipTest('RLIMIT_FSIZE not available') + 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 - 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_getrusage(self): self.assertRaises(TypeError, resource.getrusage) @@ -108,17 +105,16 @@ class ResourceTest(unittest.TestCase): try: limits = resource.getrlimit(resource.RLIMIT_CPU) except AttributeError: - pass - else: - class BadSequence: - def __len__(self): - return 2 - def __getitem__(self, key): - if key in (0, 1): - return len(tuple(range(1000000))) - raise IndexError + self.skipTest('RLIMIT_CPU not available') + class BadSequence: + def __len__(self): + return 2 + def __getitem__(self, key): + if key in (0, 1): + return len(tuple(range(1000000))) + raise IndexError - resource.setrlimit(resource.RLIMIT_CPU, BadSequence()) + resource.setrlimit(resource.RLIMIT_CPU, BadSequence()) def test_main(verbose=None): test_support.run_unittest(ResourceTest) |