<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -108,7 +108,7 @@ module FakeFS
       @file = FileSystem.find(path)
       @open = true
 
-      check_file_existence! if read_only?
+      check_file_existence! if !file_creation_mode?
     end
 
     def close
@@ -157,6 +157,14 @@ module FakeFS
       @mode == READ_ONLY
     end
 
+    def file_creation_modes
+      MODES - [READ_ONLY, READ_WRITE]
+    end
+
+    def file_creation_mode?
+      file_creation_modes.include?(@mode)
+    end
+
     def check_mode(mode)
       if !MODES.include?(mode)
         raise ArgumentError, &quot;illegal access mode #{mode}&quot;</diff>
      <filename>lib/fakefs/file.rb</filename>
    </modified>
    <modified>
      <diff>@@ -120,6 +120,12 @@ class FakeFSTest &lt; Test::Unit::TestCase
     end
   end
 
+  def test_raises_error_when_cannot_find_file_in_read_write_mode
+    assert_raises(Errno::ENOENT) do
+      File.open(&quot;does_not_exist&quot;, &quot;r+&quot;)
+    end
+  end
+
   def test_can_read_files_once_written
     path = '/path/to/file.txt'
     File.open(path, 'w') do |f|</diff>
      <filename>test/fakefs_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>2881614123b527d5d63d93263c1652c95132d25e</id>
    </parent>
  </parents>
  <author>
    <name>Scott Taylor</name>
    <email>scott@railsnewbie.com</email>
  </author>
  <url>http://github.com/jyurek/fakefs/commit/17e2e470273658cd0f22e652b17bee30fda8c200</url>
  <id>17e2e470273658cd0f22e652b17bee30fda8c200</id>
  <committed-date>2009-09-30T23:46:00-07:00</committed-date>
  <authored-date>2009-09-30T00:13:58-07:00</authored-date>
  <message>Raise an error when opening a file which does not exist in read-write ('r+') mode</message>
  <tree>90054bcf9ff271200edc7ac96cf0e69533ba3624</tree>
  <committer>
    <name>Scott Taylor</name>
    <email>scott@railsnewbie.com</email>
  </committer>
</commit>
