root/debexpo/plugins/lintian.py

Revision 5914a0a198b3671b10ded3c10162fe88cdc4cbe4, 2.7 kB (checked in by Jonny Lamb <jonny@…>, 5 months ago)

Updated my email address.

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

  • 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 <jonny@debian.org>
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 lintian plugin.
32"""
33
34__author__ = 'Jonny Lamb'
35__copyright__ = 'Copyright © 2008 Jonny Lamb'
36__license__ = 'MIT'
37
38import commands
39import logging
40import os
41
42from debexpo.lib import constants
43from debexpo.lib.base import *
44from debexpo.plugins import BasePlugin
45
46log = logging.getLogger(__name__)
47
48class 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
77plugin = LintianPlugin
78
79outcomes = {
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.