root/debexpo/plugins/lintian.py

Revision 225a4625840e9adbbce4cecf55a0f5d453129fd8, 2.7 kB (checked in by Jonny Lamb <jonnylamb@jonnylamb.com>, 2 months ago)

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

Signed-off-by: Jonny Lamb <jonnylamb@jonnylamb.com>

  • Property mode set to 100644
Line 
1 # -*- coding: utf-8 -*-
2 #
3 #   lintian.py — lintian 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 """
31 Holds the lintian plugin.
32 """
33
34 __author__ = 'Jonny Lamb'
35 __copyright__ = 'Copyright © 2008 Jonny Lamb'
36 __license__ = 'MIT'
37
38 import commands
39 import logging
40 import os
41
42 from debexpo.lib import constants
43 from debexpo.lib.base import *
44 from debexpo.plugins import BasePlugin
45
46 log = logging.getLogger(__name__)
47
48 class LintianPlugin(BasePlugin):
49
50     def test_lintian(self):
51         """
52         Method to run lintian on the package.
53         """
54         log.debug('Running lintian on the package')
55
56         output = commands.getoutput('lintian %s' % self.changes_file)
57
58         items = output.split('\n')
59
60         if items and output != '':
61             severity = constants.PLUGIN_SEVERITY_WARNING
62             outcome = 'lintian-warnings'
63             logmessage = log.warning
64             for item in items:
65                 if item.startswith('E:'):
66                     severity = constants.PLUGIN_SEVERITY_ERROR
67                     outcome = 'lintian-errors'
68                     logmessage = log.error
69                     break
70
71             logmessage('Package is not Lintian clean')
72             self.failed(outcome, output, severity)
73         else:
74             log.debug('Package is Lintian clean')
75             self.passed('lintian-clean', None, constants.PLUGIN_SEVERITY_INFO)
76
77 plugin = LintianPlugin
78
79 outcomes = {
80     'lintian-clean' : { 'name' : 'Package is Lintian clean' },
81     'lintian-warnings' : { 'name' : 'Package has Lintian warnings' },
82     'lintian-errors' : { 'name' : 'Package has Lintian errors' },
83 }
Note: See TracBrowser for help on using the browser.