fails:StringIO.open when passed [Object, mode] uses the passed Object as the StringIO backend
fails:StringIO.open when passed [Object, mode] even closes self when an exception is raised while yielding
fails:StringIO.open when passed [Object, mode] sets self's string to nil after yielding
fails:StringIO.open when passed [Object, mode] even sets self's string to nil when an exception is raised while yielding
fails:StringIO.open when passed [Object, mode] sets the mode based on the passed mode
fails:StringIO.open when passed [Object, mode] allows passing the mode as an Integer
fails:StringIO.open when passed [Object, mode] raises a TypeError when passed a frozen String in truncate mode as StringIO backend
fails:StringIO.open when passed [Object, mode] tries to convert the passed mode to a String using #to_str
fails:StringIO.open when passed [Object, mode] raises an Errno::EACCES error when passed a frozen string with a write-mode
fails:StringIO.open when passed [Object] uses the passed Object as the StringIO backend
fails:StringIO.open when passed [Object] sets the mode to read-write
fails:StringIO.open when passed [Object] tries to convert the passed Object to a String using #to_str
fails:StringIO.open when passed [Object] automatically sets the mode to read-only when passed a frozen string
fails:StringIO.open when passed no arguments sets the mode to read-write
fails:StringIO.open when passed no arguments uses an empty String as the StringIO backend
