test_stringutils.py: Mock the open() call in test_open_unicode

This test ensure that open(a_unicode_string) is used on Unicode platforms
(Windows or MacOS X) and that open(a_correctly_encoded_bytestring) on other
platforms such as Unix.
This commit is contained in:
Francois Deppierraz 2010-05-21 06:58:17 -07:00
parent eecaaca6b7
commit 1aeff62161

View File

@ -187,13 +187,26 @@ class StringUtils:
if fname not in filenames:
self.fail("Cannot find %r in %r" % (fname, filenames))
@patch('os.open')
def test_open_unicode(self, mock):
@patch('sys.getfilesystemencoding')
@patch('__builtin__.open')
def test_open_unicode(self, mock_open, mock_getfilesystemencoding):
mock_getfilesystemencoding.return_value = self.filesystemencoding
self.failUnlessRaises(IOError,
open_unicode,
u'/dummy_directory/lumière.txt')
fn = u'/dummy_directory/lumière.txt'
try:
open_unicode(fn)
except FilenameEncodingError:
raise unittest.SkipTest("Cannot represent test filename on this (mocked) platform")
# Pass Unicode string to open() on Unicode platforms
if unicode_platform():
mock_open.assert_called_with(fn, 'r')
# Pass correctly encoded bytestrings to open() on non-Unicode platforms
else:
fn_bytestring = fn.encode(self.filesystemencoding)
mock_open.assert_called_with(fn_bytestring, 'r')
class UbuntuKarmicUTF8(StringUtils, unittest.TestCase):
uname = 'Linux korn 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16 14:05:01 UTC 2009 x86_64'