From e74405d27a63434c9114c906a7250ab59570ff93 Mon Sep 17 00:00:00 2001 From: William Grant Date: Sat, 12 Mar 2011 12:24:55 +1100 Subject: [PATCH] Raise more descriptive exceptions, DuplicateTag and InvalidTagSpec. --- dkim/tests/test_dkim.py | 11 ++++++----- dkim/util.py | 14 ++++++++++++-- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/dkim/tests/test_dkim.py b/dkim/tests/test_dkim.py index 4d88eef..d8d2f58 100644 --- a/dkim/tests/test_dkim.py +++ b/dkim/tests/test_dkim.py @@ -3,7 +3,8 @@ import unittest import dkim from dkim.util import ( - InvalidTagValueList, + DuplicateTag, + InvalidTagSpec, parse_tag_value, ) @@ -83,13 +84,13 @@ class TestParseTagValue(unittest.TestCase): parse_tag_value(' foo \t= bar;\tbaz= f oo=bar ')) def test_missing_value_is_an_error(self): - self.assertRaises( - InvalidTagValueList, + self.assertRaisesRegexp( + InvalidTagSpec, 'baz', parse_tag_value, 'foo=bar;baz') def test_duplicate_tag_is_an_error(self): - self.assertRaises( - InvalidTagValueList, + self.assertRaisesRegexp( + DuplicateTag, 'foo', parse_tag_value, 'foo=bar;foo=baz') diff --git a/dkim/util.py b/dkim/util.py index b977c79..8511ca2 100644 --- a/dkim/util.py +++ b/dkim/util.py @@ -17,6 +17,8 @@ # Copyright (c) 2011 William Grant __all__ = [ + 'DuplicateTag', + 'InvalidTagSpec', 'InvalidTagValueList', 'parse_tag_value', ] @@ -26,6 +28,14 @@ class InvalidTagValueList(Exception): pass +class DuplicateTag(InvalidTagValueList): + pass + + +class InvalidTagSpec(InvalidTagValueList): + pass + + def parse_tag_value(tag_list): """Parse a DKIM Tag=Value list. @@ -43,8 +53,8 @@ def parse_tag_value(tag_list): try: key, value = tag_spec.split('=', 1) except ValueError: - raise InvalidTagValueList() + raise InvalidTagSpec(tag_spec) if key.strip() in tags: - raise InvalidTagValueList() + raise DuplicateTag(key.strip()) tags[key.strip()] = value.strip() return tags