[前][次][番号順一覧][スレッド一覧]

ruby-changes:29202

From: nobu <ko1@a...>
Date: Wed, 12 Jun 2013 17:06:16 +0900 (JST)
Subject: [ruby-changes:29202] nobu:r41254 (trunk): test_io.rb: fix test error

nobu	2013-06-12 17:05:56 +0900 (Wed, 12 Jun 2013)

  New Revision: 41254

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=41254

  Log:
    test_io.rb: fix test error
    
    * test/ruby/test_io.rb (TestIO#test_write_32bit_boundary): retry to
      remove the temporary file while EACCES occurs because of syncing in
      the system probably.  rescue ENOSPC from IO#tell.  [ruby-core:55457]
      [Bug #8519]

  Modified files:
    trunk/test/ruby/test_io.rb

Index: test/ruby/test_io.rb
===================================================================
--- test/ruby/test_io.rb	(revision 41253)
+++ test/ruby/test_io.rb	(revision 41254)
@@ -2690,6 +2690,23 @@ End https://github.com/ruby/ruby/blob/trunk/test/ruby/test_io.rb#L2690
   def test_write_32bit_boundary
     bug8431 = '[ruby-core:55098] [Bug #8431]'
     make_tempfile {|t|
+      def t.close(unlink_now = false)
+        # TODO: Tempfile should deal with this delay on Windows?
+        # NOTE: re-opening with O_TEMPORARY does not work.
+        path = self.path
+        ret = super
+        if unlink_now
+          begin
+            File.unlink(path)
+          rescue Errno::ENOENT
+          rescue Errno::EACCES
+            sleep(2)
+            retry
+          end
+        end
+        ret
+      end
+
       assert_separately(["-", bug8431, t.path], <<-"end;", timeout: 30)
         msg = ARGV.shift
         f = open(ARGV[0], "wb")
@@ -2698,9 +2715,12 @@ End https://github.com/ruby/ruby/blob/trunk/test/ruby/test_io.rb#L2715
           # this will consume very long time or fail by ENOSPC on a
           # filesystem which sparse file is not supported
           f.write('1')
+          pos = f.tell
+        rescue Errno::ENOSPC
+          skip "non-sparse file system"
         rescue SystemCallError
         else
-          assert_equal(0x1_0000_0000, f.tell, msg)
+          assert_equal(0x1_0000_0000, pos, msg)
         end
       end;
     }

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]