Specified when open should use binary mode.

Thanks Vinaj Sajip for the help of his django3 branch.
This commit is contained in:
Claude Paroz 2012-05-25 20:37:38 +02:00
parent e73838b6dd
commit edfa95c22f
6 changed files with 22 additions and 20 deletions

View File

@ -120,7 +120,7 @@ class NamedWizardTests(object):
self.assertEqual(response.context['wizard']['steps'].current, 'form2') self.assertEqual(response.context['wizard']['steps'].current, 'form2')
post_data = self.wizard_step_data[1] post_data = self.wizard_step_data[1]
post_data['form2-file1'] = open(__file__) post_data['form2-file1'] = open(__file__, 'rb')
response = self.client.post( response = self.client.post(
reverse(self.wizard_urlname, reverse(self.wizard_urlname,
kwargs={'step': response.context['wizard']['steps'].current}), kwargs={'step': response.context['wizard']['steps'].current}),
@ -147,7 +147,7 @@ class NamedWizardTests(object):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
all_data = response.context['form_list'] all_data = response.context['form_list']
self.assertEqual(all_data[1]['file1'].read(), open(__file__).read()) self.assertEqual(all_data[1]['file1'].read(), open(__file__, 'rb').read())
del all_data[1]['file1'] del all_data[1]['file1']
self.assertEqual(all_data, [ self.assertEqual(all_data, [
{'name': u'Pony', 'thirsty': True, 'user': self.testuser}, {'name': u'Pony', 'thirsty': True, 'user': self.testuser},
@ -168,7 +168,7 @@ class NamedWizardTests(object):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
post_data = self.wizard_step_data[1] post_data = self.wizard_step_data[1]
post_data['form2-file1'] = open(__file__) post_data['form2-file1'] = open(__file__, 'rb')
response = self.client.post( response = self.client.post(
reverse(self.wizard_urlname, reverse(self.wizard_urlname,
kwargs={'step': response.context['wizard']['steps'].current}), kwargs={'step': response.context['wizard']['steps'].current}),
@ -180,7 +180,9 @@ class NamedWizardTests(object):
response = self.client.get(step2_url) response = self.client.get(step2_url)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['wizard']['steps'].current, 'form2') self.assertEqual(response.context['wizard']['steps'].current, 'form2')
self.assertEqual(response.context['wizard']['form'].files['form2-file1'].read(), open(__file__).read()) self.assertEqual(
response.context['wizard']['form'].files['form2-file1'].read(),
open(__file__, 'rb').read())
response = self.client.post( response = self.client.post(
reverse(self.wizard_urlname, reverse(self.wizard_urlname,
@ -197,7 +199,7 @@ class NamedWizardTests(object):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
all_data = response.context['all_cleaned_data'] all_data = response.context['all_cleaned_data']
self.assertEqual(all_data['file1'].read(), open(__file__).read()) self.assertEqual(all_data['file1'].read(), open(__file__, 'rb').read())
del all_data['file1'] del all_data['file1']
self.assertEqual( self.assertEqual(
all_data, all_data,
@ -221,7 +223,7 @@ class NamedWizardTests(object):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
post_data = self.wizard_step_data[1] post_data = self.wizard_step_data[1]
post_data['form2-file1'] = open(__file__) post_data['form2-file1'] = open(__file__, 'rb')
response = self.client.post( response = self.client.post(
reverse(self.wizard_urlname, reverse(self.wizard_urlname,
kwargs={'step': response.context['wizard']['steps'].current}), kwargs={'step': response.context['wizard']['steps'].current}),

View File

@ -80,7 +80,7 @@ class WizardTests(object):
self.assertEqual(response.context['wizard']['steps'].current, 'form2') self.assertEqual(response.context['wizard']['steps'].current, 'form2')
post_data = self.wizard_step_data[1] post_data = self.wizard_step_data[1]
post_data['form2-file1'] = open(__file__) post_data['form2-file1'] = open(__file__, 'rb')
response = self.client.post(self.wizard_url, post_data) response = self.client.post(self.wizard_url, post_data)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['wizard']['steps'].current, 'form3') self.assertEqual(response.context['wizard']['steps'].current, 'form3')
@ -93,7 +93,7 @@ class WizardTests(object):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
all_data = response.context['form_list'] all_data = response.context['form_list']
self.assertEqual(all_data[1]['file1'].read(), open(__file__).read()) self.assertEqual(all_data[1]['file1'].read(), open(__file__, 'rb').read())
del all_data[1]['file1'] del all_data[1]['file1']
self.assertEqual(all_data, [ self.assertEqual(all_data, [
{'name': u'Pony', 'thirsty': True, 'user': self.testuser}, {'name': u'Pony', 'thirsty': True, 'user': self.testuser},
@ -110,7 +110,7 @@ class WizardTests(object):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
post_data = self.wizard_step_data[1] post_data = self.wizard_step_data[1]
post_data['form2-file1'] = open(__file__) post_data['form2-file1'] = open(__file__, 'rb')
response = self.client.post(self.wizard_url, post_data) response = self.client.post(self.wizard_url, post_data)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
@ -121,7 +121,7 @@ class WizardTests(object):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
all_data = response.context['all_cleaned_data'] all_data = response.context['all_cleaned_data']
self.assertEqual(all_data['file1'].read(), open(__file__).read()) self.assertEqual(all_data['file1'].read(), open(__file__, 'rb').read())
del all_data['file1'] del all_data['file1']
self.assertEqual(all_data, { self.assertEqual(all_data, {
'name': u'Pony', 'thirsty': True, 'user': self.testuser, 'name': u'Pony', 'thirsty': True, 'user': self.testuser,
@ -138,7 +138,7 @@ class WizardTests(object):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
post_data = self.wizard_step_data[1] post_data = self.wizard_step_data[1]
post_data['form2-file1'] = open(__file__) post_data['form2-file1'] = open(__file__, 'rb')
response = self.client.post(self.wizard_url, post_data) response = self.client.post(self.wizard_url, post_data)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
@ -165,7 +165,7 @@ class WizardTests(object):
self.assertEqual(response.context['wizard']['steps'].current, 'form2') self.assertEqual(response.context['wizard']['steps'].current, 'form2')
post_data = self.wizard_step_data[1] post_data = self.wizard_step_data[1]
post_data['form2-file1'] = open(__file__) post_data['form2-file1'] = open(__file__, 'rb')
response = self.client.post(self.wizard_url, post_data) response = self.client.post(self.wizard_url, post_data)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(response.context['wizard']['steps'].current, 'form3') self.assertEqual(response.context['wizard']['steps'].current, 'form3')

View File

@ -5,7 +5,7 @@ from optparse import make_option
from django.core.management.base import BaseCommand, CommandError from django.core.management.base import BaseCommand, CommandError
def has_bom(fn): def has_bom(fn):
with open(fn, 'r') as f: with open(fn, 'rb') as f:
sample = f.read(4) sample = f.read(4)
return sample[:3] == '\xef\xbb\xbf' or \ return sample[:3] == '\xef\xbb\xbf' or \
sample.startswith(codecs.BOM_UTF16_LE) or \ sample.startswith(codecs.BOM_UTF16_LE) or \

View File

@ -52,7 +52,7 @@ class Loader(BaseLoader):
def load_template_source(self, template_name, template_dirs=None): def load_template_source(self, template_name, template_dirs=None):
for filepath in self.get_template_sources(template_name, template_dirs): for filepath in self.get_template_sources(template_name, template_dirs):
try: try:
with open(filepath) as fp: with open(filepath, 'rb') as fp:
return (fp.read().decode(settings.FILE_CHARSET), filepath) return (fp.read().decode(settings.FILE_CHARSET), filepath)
except IOError: except IOError:
pass pass

View File

@ -34,7 +34,7 @@ class Loader(BaseLoader):
tried = [] tried = []
for filepath in self.get_template_sources(template_name, template_dirs): for filepath in self.get_template_sources(template_name, template_dirs):
try: try:
with open(filepath) as fp: with open(filepath, 'rb') as fp:
return (fp.read().decode(settings.FILE_CHARSET), filepath) return (fp.read().decode(settings.FILE_CHARSET), filepath)
except IOError: except IOError:
tried.append(filepath) tried.append(filepath)

View File

@ -29,7 +29,7 @@ class StaticTests(TestCase):
for filename in media_files: for filename in media_files:
response = self.client.get('/views/%s/%s' % (self.prefix, filename)) response = self.client.get('/views/%s/%s' % (self.prefix, filename))
file_path = path.join(media_dir, filename) file_path = path.join(media_dir, filename)
with open(file_path) as fp: with open(file_path, 'rb') as fp:
self.assertEqual(fp.read(), response.content) self.assertEqual(fp.read(), response.content)
self.assertEqual(len(response.content), int(response['Content-Length'])) self.assertEqual(len(response.content), int(response['Content-Length']))
self.assertEqual(mimetypes.guess_type(file_path)[1], response.get('Content-Encoding', None)) self.assertEqual(mimetypes.guess_type(file_path)[1], response.get('Content-Encoding', None))
@ -41,14 +41,14 @@ class StaticTests(TestCase):
def test_copes_with_empty_path_component(self): def test_copes_with_empty_path_component(self):
file_name = 'file.txt' file_name = 'file.txt'
response = self.client.get('/views/%s//%s' % (self.prefix, file_name)) response = self.client.get('/views/%s//%s' % (self.prefix, file_name))
with open(path.join(media_dir, file_name)) as fp: with open(path.join(media_dir, file_name), 'rb') as fp:
self.assertEqual(fp.read(), response.content) self.assertEqual(fp.read(), response.content)
def test_is_modified_since(self): def test_is_modified_since(self):
file_name = 'file.txt' file_name = 'file.txt'
response = self.client.get('/views/%s/%s' % (self.prefix, file_name), response = self.client.get('/views/%s/%s' % (self.prefix, file_name),
HTTP_IF_MODIFIED_SINCE='Thu, 1 Jan 1970 00:00:00 GMT') HTTP_IF_MODIFIED_SINCE='Thu, 1 Jan 1970 00:00:00 GMT')
with open(path.join(media_dir, file_name)) as fp: with open(path.join(media_dir, file_name), 'rb') as fp:
self.assertEqual(fp.read(), response.content) self.assertEqual(fp.read(), response.content)
def test_not_modified_since(self): def test_not_modified_since(self):
@ -71,7 +71,7 @@ class StaticTests(TestCase):
invalid_date = 'Mon, 28 May 999999999999 28:25:26 GMT' invalid_date = 'Mon, 28 May 999999999999 28:25:26 GMT'
response = self.client.get('/views/%s/%s' % (self.prefix, file_name), response = self.client.get('/views/%s/%s' % (self.prefix, file_name),
HTTP_IF_MODIFIED_SINCE=invalid_date) HTTP_IF_MODIFIED_SINCE=invalid_date)
with open(path.join(media_dir, file_name)) as fp: with open(path.join(media_dir, file_name), 'rb') as fp:
self.assertEqual(fp.read(), response.content) self.assertEqual(fp.read(), response.content)
self.assertEqual(len(response.content), self.assertEqual(len(response.content),
int(response['Content-Length'])) int(response['Content-Length']))
@ -86,7 +86,7 @@ class StaticTests(TestCase):
invalid_date = ': 1291108438, Wed, 20 Oct 2010 14:05:00 GMT' invalid_date = ': 1291108438, Wed, 20 Oct 2010 14:05:00 GMT'
response = self.client.get('/views/%s/%s' % (self.prefix, file_name), response = self.client.get('/views/%s/%s' % (self.prefix, file_name),
HTTP_IF_MODIFIED_SINCE=invalid_date) HTTP_IF_MODIFIED_SINCE=invalid_date)
with open(path.join(media_dir, file_name)) as fp: with open(path.join(media_dir, file_name), 'rb') as fp:
self.assertEqual(fp.read(), response.content) self.assertEqual(fp.read(), response.content)
self.assertEqual(len(response.content), self.assertEqual(len(response.content),
int(response['Content-Length'])) int(response['Content-Length']))