root/debexpo/plugins/maintaineremail.py

Revision 225a4625840e9adbbce4cecf55a0f5d453129fd8, 3.0 kB (checked in by Jonny Lamb <jonnylamb@…>, 7 months ago)

Removed the need for the self.tests list in plugins.

Signed-off-by: Jonny Lamb <jonnylamb@…>

  • Property mode set to 100644
Line 
1# -*- coding: utf-8 -*-
2#
3#   maintaineremail.py — maintaineremail plugin
4#
5#   This file is part of debexpo - http://debexpo.workaround.org
6#
7#   Copyright © 2008 Jonny Lamb <jonnylamb@jonnylamb.com
8#
9#   Permission is hereby granted, free of charge, to any person
10#   obtaining a copy of this software and associated documentation
11#   files (the "Software"), to deal in the Software without
12#   restriction, including without limitation the rights to use,
13#   copy, modify, merge, publish, distribute, sublicense, and/or sell
14#   copies of the Software, and to permit persons to whom the
15#   Software is furnished to do so, subject to the following
16#   conditions:
17#
18#   The above copyright notice and this permission notice shall be
19#   included in all copies or substantial portions of the Software.
20#
21#   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22#   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
23#   OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24#   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
25#   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
26#   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27#   FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
28#   OTHER DEALINGS IN THE SOFTWARE.
29
30"""
31Holds the maintaineremail plugin.
32"""
33
34__author__ = 'Jonny Lamb'
35__copyright__ = 'Copyright © 2008 Jonny Lamb'
36__license__ = 'MIT'
37
38import logging
39import os
40import re
41
42from debexpo.lib import constants
43from debexpo.lib.base import *
44from debexpo.plugins import BasePlugin
45
46from debexpo.model import meta
47from debexpo.model.users import User
48
49log = logging.getLogger(__name__)
50
51class MaintainerEmailPlugin(BasePlugin):
52
53    def test_maintainer_email(self):
54        """
55        Tests whether the maintainer email is the same as the uploader email.
56        """
57        if self.user_id is not None:
58            log.debug('Checking whether the maintainer email is the same as the uploader email')
59
60            user = meta.session.query(User).get(self.user_id)
61
62            if user is not None:
63                email = re.compile(r'^(.*) ?(<.+@.+>)$').match(self.changes['Maintainer']).group(2)
64
65                if user.email == email[1:-1]:
66                    log.debug('Maintainer email is the same as the uploader')
67                    self.passed('maintainer-is-uploader', None, constants.PLUGIN_SEVERITY_INFO)
68                else:
69                    log.warning('%s != %s' % (user.email, email[1:-1]))
70                    self.failed('maintainer-is-not-uploader', '%s != %s' % (user.email, email[1:-1]),
71                        constants.PLUGIN_SEVERITY_WARNING)
72
73        else:
74            log.warning('Could not get the uploader\'s user details from the database')
75
76plugin = MaintainerEmailPlugin
77
78outcomes = {
79    'maintainer-is-uploader' : { 'name' : 'The maintainer and uploader emails are the same' },
80    'maintainer-is-not-uploader' : { 'name' : 'The maintainer and uploader emails are not the same' },
81}
Note: See TracBrowser for help on using the browser.