[PATCH v2 6/7] parser tests: test parsing of interesting mail
Daniel Axtens
dja at axtens.net
Wed Sep 28 15:22:59 AEST 2016
We have 4 new tests:
- One with a header with a character that is neither 7-bit ASCII
nor UTF-8.
- One with UTF-8 in the body.
- One with un-encoded UTF-8 in the headers.
- One with a header that claims to be UTF-8 but isn't.
This also requires us to change how we open files on Python 3. Use
the binary file and message_from_binary_file setup under Python 3.
CC: Thomas Monjalon <thomas.monjalon at 6wind.com> # for the original header email
CC: Johannes Berg <johannes at sipsolutions.net> # for the UTF-8 body email
Signed-off-by: Daniel Axtens <dja at axtens.net>
---
patchwork/tests/mail/0012-invalid-header-char.mbox | 72 ++++++++++++++++++++++
patchwork/tests/mail/0013-with-utf8-body.mbox | 46 ++++++++++++++
.../mail/0014-with-unencoded-utf8-headers.mbox | 46 ++++++++++++++
.../tests/mail/0015-with-invalid-utf8-headers.mbox | 46 ++++++++++++++
patchwork/tests/test_parser.py | 39 +++++++++++-
5 files changed, 247 insertions(+), 2 deletions(-)
create mode 100644 patchwork/tests/mail/0012-invalid-header-char.mbox
create mode 100644 patchwork/tests/mail/0013-with-utf8-body.mbox
create mode 100644 patchwork/tests/mail/0014-with-unencoded-utf8-headers.mbox
create mode 100644 patchwork/tests/mail/0015-with-invalid-utf8-headers.mbox
diff --git a/patchwork/tests/mail/0012-invalid-header-char.mbox b/patchwork/tests/mail/0012-invalid-header-char.mbox
new file mode 100644
index 000000000000..3412ca6da81a
--- /dev/null
+++ b/patchwork/tests/mail/0012-invalid-header-char.mbox
@@ -0,0 +1,72 @@
+From ferruh.yigit at intel.com Thu Sep 15 14:06:56 2016
+Return-Path: <ferruh.yigit at intel.com>
+Received: from mga01.intel.com (mga01.intel.com [192.55.52.88])
+ by dpdk.org (Postfix) with ESMTP id E9946530F
+ for <dev at dpdk.org>; Thu, 15 Sep 2016 14:06:55 +0200 (CEST)
+Received: from fmsmga001.fm.intel.com ([10.253.24.23])
+ by fmsmga101.fm.intel.com with ESMTP; 15 Sep 2016 05:06:54 -0700
+X-ExtLoop1: 1
+X-IronPort-AV: E=Sophos;i="5.30,339,1470726000"; d="scan'208";a="1040330672"
+Received: from irvmail001.ir.intel.com ([163.33.26.43])
+ by fmsmga001.fm.intel.com with ESMTP; 15 Sep 2016 05:06:54 -0700
+Received: from sivswdev02.ir.intel.com (sivswdev02.ir.intel.com
+ [10.237.217.46])
+ by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id
+ u8FC6rSL030312; Thu, 15 Sep 2016 13:06:53 +0100
+Received: from sivswdev02.ir.intel.com (localhost [127.0.0.1])
+ by sivswdev02.ir.intel.com with ESMTP id u8FC6rwP015039;
+ Thu, 15 Sep 2016 13:06:53 +0100
+Received: (from fyigit at localhost)
+ by sivswdev02.ir.intel.com with id u8FC6rZs015035;
+ Thu, 15 Sep 2016 13:06:53 +0100
+X-Authentication-Warning: sivswdev02.ir.intel.com: fyigit set sender to
+ ferruh.yigit at intel.com using -f
+From: Ferruh Yigit <ferruh.yigit at intel.com>
+To: dev at dpdk.org
+Cc: Ferruh Yigit <ferruh.yigit at itnel.com>
+Date: Thu, 15 Sep 2016 13:06:44 +0100
+Message-Id: <1473941204-14587-1-git-send-email-ferruh.yigit at intel.com>
+X-Mailer: git-send-email 1.7.0.7
+Subject: [dpdk-dev] [PATCH] kni: fix compilation error when debug enabled
+X-BeenThere: dev at dpdk.org
+X-Mailman-Version: 2.1.15
+Precedence: list
+List-Id: patches and discussions about DPDK <dev.dpdk.org>
+List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
+ <mailto:dev-request at dpdk.org?subject=unsubscribe>
+List-Archive: <http://dpdk.org/ml/archives/dev/>
+List-Post: <mailto:dev at dpdk.org>
+List-Help: <mailto:dev-request at dpdk.org?subject=help>
+List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
+ <mailto:dev-request at dpdk.org?subject=subscribe>
+X-List-Received-Date: Thu, 15 Sep 2016 12:06:56 -0000
+
+Fix build error with Linux kernel >= v4.7
+
+Fix compile error because of Linux API change, 'trans_start' field
+removed from 'struct net_device'.
+
+Linux: 9b36627acecd ("net: remove dev->trans_start")
+
+Signed-off-by: Ferruh Yigit <ferruh.yigit at intel.com>
+---
+ lib/librte_eal/linuxapp/kni/kni_net.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/librte_eal/linuxapp/kni/kni_net.c b/lib/librte_eal/linuxapp/kni/kni_net.c
+index fc82193..371bbfa 100644
+--- a/lib/librte_eal/linuxapp/kni/kni_net.c
++++ b/lib/librte_eal/linuxapp/kni/kni_net.c
+@@ -508,7 +508,7 @@ kni_net_tx_timeout (struct net_device *dev)
+ struct kni_dev *kni = netdev_priv(dev);
+
+ KNI_DBG("Transmit timeout at %ld, latency %ld\n", jiffies,
+- jiffies - dev->trans_start);
++ jiffies - dev_trans_start(dev));
+
+ kni->stats.tx_errors++;
+ netif_wake_queue(dev);
+--
+2.7.4
+
+
diff --git a/patchwork/tests/mail/0013-with-utf8-body.mbox b/patchwork/tests/mail/0013-with-utf8-body.mbox
new file mode 100644
index 000000000000..c7319f240b5a
--- /dev/null
+++ b/patchwork/tests/mail/0013-with-utf8-body.mbox
@@ -0,0 +1,46 @@
+From patchwork Wed Jun 1 20:00:54 2016
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 8bit
+Subject: MAINTAINERS: Update entry for BCM5301X ARM
+From: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= <zajec5 at gmail.com>
+X-Patchwork-Id: 9148093
+Message-Id: <1464811283-10381-1-git-send-email-zajec5 at gmail.com>
+To: Florian Fainelli <f.fainelli at gmail.com>
+Cc: bcm-kernel-feedback-list at broadcom.com,
+ =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5 at gmail.com>,
+ Andrew Morton <akpm at linux-foundation.org>,
+ "David S. Miller" <davem at davemloft.net>,
+ Greg Kroah-Hartman <gregkh at linuxfoundation.org>,
+ Mauro Carvalho Chehab <mchehab at osg.samsung.com>,
+ Guenter Roeck <linux at roeck-us.net>, Jiri Slaby <jslaby at suse.cz>,
+ linux-kernel at vger.kernel.org (open list)
+Date: Wed, 1 Jun 2016 22:00:54 +0200
+
+Add myself as I contribute to it. Include Broadcom's feedback ML as
+suggested by Florian. Finally modify file rule to match
+bcm5301x-nand-cs0-bch8.dtsi.
+
+Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
+---
+ MAINTAINERS | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/MAINTAINERS b/MAINTAINERS
+index 7304d2e..a5352d8 100644
+--- a/MAINTAINERS
++++ b/MAINTAINERS
+@@ -2511,10 +2511,12 @@ F: arch/mips/include/asm/mach-bcm47xx/*
+
+ BROADCOM BCM5301X ARM ARCHITECTURE
+ M: Hauke Mehrtens <hauke at hauke-m.de>
++M: Rafał Miłecki <zajec5 at gmail.com>
+ L: linux-arm-kernel at lists.infradead.org
++L: bcm-kernel-feedback-list at broadcom.com
+ S: Maintained
+ F: arch/arm/mach-bcm/bcm_5301x.c
+-F: arch/arm/boot/dts/bcm5301x.dtsi
++F: arch/arm/boot/dts/bcm5301x*.dtsi
+ F: arch/arm/boot/dts/bcm470*
+
+ BROADCOM BCM63XX ARM ARCHITECTURE
diff --git a/patchwork/tests/mail/0014-with-unencoded-utf8-headers.mbox b/patchwork/tests/mail/0014-with-unencoded-utf8-headers.mbox
new file mode 100644
index 000000000000..43c8c45a0756
--- /dev/null
+++ b/patchwork/tests/mail/0014-with-unencoded-utf8-headers.mbox
@@ -0,0 +1,46 @@
+From patchwork Wed Jun 1 20:00:54 2016
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 8bit
+Subject: MAINTAINERS: Update entry for BCM5301X ARM to include Rafał Miłecki
+From: Rafał Miłecki <zajec5 at gmail.com>
+X-Patchwork-Id: 9148093
+Message-Id: <1464811283-10381-1-git-send-email-zajec5 at gmail.com>
+To: Florian Fainelli <f.fainelli at gmail.com>
+Cc: bcm-kernel-feedback-list at broadcom.com,
+ Rafał Miłecki <zajec5 at gmail.com>,
+ Andrew Morton <akpm at linux-foundation.org>,
+ "David S. Miller" <davem at davemloft.net>,
+ Greg Kroah-Hartman <gregkh at linuxfoundation.org>,
+ Mauro Carvalho Chehab <mchehab at osg.samsung.com>,
+ Guenter Roeck <linux at roeck-us.net>, Jiri Slaby <jslaby at suse.cz>,
+ linux-kernel at vger.kernel.org (open list)
+Date: Wed, 1 Jun 2016 22:00:54 +0200
+
+Add myself as I contribute to it. Include Broadcom's feedback ML as
+suggested by Florian. Finally modify file rule to match
+bcm5301x-nand-cs0-bch8.dtsi.
+
+Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
+---
+ MAINTAINERS | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/MAINTAINERS b/MAINTAINERS
+index 7304d2e..a5352d8 100644
+--- a/MAINTAINERS
++++ b/MAINTAINERS
+@@ -2511,10 +2511,12 @@ F: arch/mips/include/asm/mach-bcm47xx/*
+
+ BROADCOM BCM5301X ARM ARCHITECTURE
+ M: Hauke Mehrtens <hauke at hauke-m.de>
++M: Rafał Miłecki <zajec5 at gmail.com>
+ L: linux-arm-kernel at lists.infradead.org
++L: bcm-kernel-feedback-list at broadcom.com
+ S: Maintained
+ F: arch/arm/mach-bcm/bcm_5301x.c
+-F: arch/arm/boot/dts/bcm5301x.dtsi
++F: arch/arm/boot/dts/bcm5301x*.dtsi
+ F: arch/arm/boot/dts/bcm470*
+
+ BROADCOM BCM63XX ARM ARCHITECTURE
diff --git a/patchwork/tests/mail/0015-with-invalid-utf8-headers.mbox b/patchwork/tests/mail/0015-with-invalid-utf8-headers.mbox
new file mode 100644
index 000000000000..57a1b40c3b99
--- /dev/null
+++ b/patchwork/tests/mail/0015-with-invalid-utf8-headers.mbox
@@ -0,0 +1,46 @@
+From patchwork Wed Jun 1 20:00:54 2016
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 8bit
+Subject: MAINTAINERS: Update entry for BCM5301X ARM
+From: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= <zajec5 at gmail.com>
+X-Patchwork-Id: 9148093
+Message-Id: <1464811283-10381-1-git-send-email-zajec5 at gmail.com>
+To: Florian Fainelli <f.fainelli at gmail.com>
+Cc: bcm-kernel-feedback-list at broadcom.com,
+ =?UTF-8?q?Rafa=FF=FF=20Mi=FF=FFecki?= <zajec5 at gmail.com>,
+ Andrew Morton <akpm at linux-foundation.org>,
+ "David S. Miller" <davem at davemloft.net>,
+ Greg Kroah-Hartman <gregkh at linuxfoundation.org>,
+ Mauro Carvalho Chehab <mchehab at osg.samsung.com>,
+ Guenter Roeck <linux at roeck-us.net>, Jiri Slaby <jslaby at suse.cz>,
+ linux-kernel at vger.kernel.org (open list)
+Date: Wed, 1 Jun 2016 22:00:54 +0200
+
+Add myself as I contribute to it. Include Broadcom's feedback ML as
+suggested by Florian. Finally modify file rule to match
+bcm5301x-nand-cs0-bch8.dtsi.
+
+Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
+---
+ MAINTAINERS | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/MAINTAINERS b/MAINTAINERS
+index 7304d2e..a5352d8 100644
+--- a/MAINTAINERS
++++ b/MAINTAINERS
+@@ -2511,10 +2511,12 @@ F: arch/mips/include/asm/mach-bcm47xx/*
+
+ BROADCOM BCM5301X ARM ARCHITECTURE
+ M: Hauke Mehrtens <hauke at hauke-m.de>
++M: Rafał Miłecki <zajec5 at gmail.com>
+ L: linux-arm-kernel at lists.infradead.org
++L: bcm-kernel-feedback-list at broadcom.com
+ S: Maintained
+ F: arch/arm/mach-bcm/bcm_5301x.c
+-F: arch/arm/boot/dts/bcm5301x.dtsi
++F: arch/arm/boot/dts/bcm5301x*.dtsi
+ F: arch/arm/boot/dts/bcm470*
+
+ BROADCOM BCM63XX ARM ARCHITECTURE
diff --git a/patchwork/tests/test_parser.py b/patchwork/tests/test_parser.py
index 2a9a72b7df04..3ec7790450c4 100644
--- a/patchwork/tests/test_parser.py
+++ b/patchwork/tests/test_parser.py
@@ -17,7 +17,7 @@
# along with Patchwork; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-from email import message_from_file
+import email
from email import message_from_string
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
@@ -25,6 +25,7 @@ from email.utils import make_msgid
import os
from django.test import TestCase
+from django.utils import six
from patchwork.models import Comment
from patchwork.models import Patch
@@ -52,7 +53,12 @@ TEST_MAIL_DIR = os.path.join(os.path.dirname(__file__), 'mail')
def read_mail(filename, project=None):
"""Read a mail from a file."""
file_path = os.path.join(TEST_MAIL_DIR, filename)
- mail = message_from_file(open(file_path))
+ if six.PY3:
+ with open(file_path, 'rb') as f:
+ mail = email.message_from_binary_file(f)
+ else:
+ with open(file_path) as f:
+ mail = email.message_from_file(f)
if 'Message-Id' not in mail:
mail['Message-Id'] = make_msgid()
if project is not None:
@@ -536,6 +542,35 @@ class PatchParseTest(PatchTest):
# Confirm we got both markers
self.assertEqual(2, diff.count('\ No newline at end of file'))
+class MailParsingTest(TestCase):
+ def setUp(self):
+ self.project = create_project()
+
+ def test_invalid_header_char(self):
+ """Validate behaviour when an invalid character is in a header."""
+ mail = read_mail('0012-invalid-header-char.mbox', self.project)
+ parse_mail(mail, list_id=self.project.listid)
+ self.assertEqual(Patch.objects.all().count(), 1)
+
+ def test_utf8_mail(self):
+ """Validate behaviour when a UTF-8 char is in a message."""
+ mail = read_mail('0013-with-utf8-body.mbox')
+ parse_mail(mail, list_id=self.project.listid)
+ self.assertEqual(Patch.objects.all().count(), 1)
+
+ def test_utf8_unencoded_headers(self):
+ """Validate behaviour when unencoded UTF-8 is in headers,
+ including subject and from."""
+ mail = read_mail('0014-with-unencoded-utf8-headers.mbox')
+ parse_mail(mail, list_id=self.project.listid)
+ self.assertEqual(Patch.objects.all().count(), 1)
+
+ def test_invalid_utf8_headers(self):
+ """Validate behaviour when invalid encoded UTF-8 is in headers."""
+ mail = read_mail('0015-with-invalid-utf8-headers.mbox')
+ parse_mail(mail, list_id=self.project.listid)
+ self.assertEqual(Patch.objects.all().count(), 1)
+
class HeaderTest(TestCase):
def test_header_preservation(self):
--
2.7.4
More information about the Patchwork
mailing list