Sync up with trunk.  Try to flush repeatedly to ensure the exception is raised.
diff --git a/Lib/test/test_resource.py b/Lib/test/test_resource.py
index 86c7cc2..ac95395 100644
--- a/Lib/test/test_resource.py
+++ b/Lib/test/test_resource.py
@@ -1,7 +1,7 @@
 import os
 import resource
 
-from test.test_support import TESTFN
+from test.test_support import TESTFN, unlink
 
 # This test is checking a few specific problem spots.  RLIMIT_FSIZE
 # should be RLIM_INFINITY, which will be a really big number on a
@@ -38,17 +38,19 @@
         f.flush()
         # On some systems (e.g., Ubuntu on hppa) the flush()
         # doesn't always cause the exception, but the close()
-        # does eventually.  Try closing several times in an attempt
+        # 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):
-            f.close()
+            time.sleep(.1)
+            f.flush()
     except IOError:
         if not limit_set:
             raise
     f.close()
-    os.unlink(TESTFN)
 finally:
-    resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max))
+    if limit_set:
+        resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max))
+    unlink(TESTFN)
 
 # And be sure that setrlimit is checking for really large values
 too_big = 10L**50