From e0fac2b893fd69caedd00c9256ac1e59c8dcbc9b Mon Sep 17 00:00:00 2001 From: Jeremy Kerr Date: Mon, 29 Sep 2008 23:29:37 +1000 Subject: [models] Create patch mbox with utf-8 encoding We were getting exceptions on the mbox view when looking at a non-ascii patch. Add test to suit. Signed-off-by: Jeremy Kerr --- apps/patchwork/models.py | 2 +- apps/patchwork/tests/__init__.py | 4 +-- apps/patchwork/tests/encodings.py | 56 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 apps/patchwork/tests/encodings.py (limited to 'apps/patchwork') diff --git a/apps/patchwork/models.py b/apps/patchwork/models.py index bf8efba..3cfbacd 100644 --- a/apps/patchwork/models.py +++ b/apps/patchwork/models.py @@ -238,7 +238,7 @@ class Patch(models.Model): body += self.content - mail = MIMEText(body) + mail = MIMEText(body, _charset = 'utf-8') mail['Subject'] = self.name mail['Date'] = email.utils.formatdate( time.mktime(self.date.utctimetuple())) diff --git a/apps/patchwork/tests/__init__.py b/apps/patchwork/tests/__init__.py index 42413a1..113de52 100644 --- a/apps/patchwork/tests/__init__.py +++ b/apps/patchwork/tests/__init__.py @@ -18,9 +18,9 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import unittest -from patchwork.tests import patchparser +from patchwork.tests import patchparser, encodings -modules = [patchparser] +modules = [patchparser, encodings] def suite(): suite = unittest.TestSuite() diff --git a/apps/patchwork/tests/encodings.py b/apps/patchwork/tests/encodings.py new file mode 100644 index 0000000..ac63fb0 --- /dev/null +++ b/apps/patchwork/tests/encodings.py @@ -0,0 +1,56 @@ +# Patchwork - automated patch tracking system +# Copyright (C) 2008 Jeremy Kerr +# +# This file is part of the Patchwork package. +# +# Patchwork is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# Patchwork is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Patchwork; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +import unittest +import os +import time +from patchwork.models import Patch +from patchwork.tests.utils import defaults, read_patch +from django.test import TestCase +from django.test.client import Client + +class UTF8PatchViewTest(TestCase): + patch_filename = '0002-utf-8.patch' + patch_encoding = 'utf-8' + + def setUp(self): + defaults.project.save() + defaults.patch_author_person.save() + self.patch_content = read_patch(self.patch_filename, + encoding = self.patch_encoding) + self.patch = Patch(project = defaults.project, + msgid = 'x', name = defaults.patch_name, + submitter = defaults.patch_author_person, + content = self.patch_content) + self.patch.save() + self.client = Client() + + def testPatchView(self): + response = self.client.get('/patch/%d/' % self.patch.id) + self.assertContains(response, self.patch.name) + + def testMboxView(self): + response = self.client.get('/patch/%d/mbox/' % self.patch.id) + self.assertEquals(response.status_code, 200) + + def tearDown(self): + self.patch.delete() + defaults.patch_author_person.delete() + defaults.project.delete() + -- cgit v1.2.3