Example #1
0
def main():
    '''
    Parse options and run lint8 checks on Python source.
    '''

    parser = ArgumentParser(description='')
    parser.add_argument('--ignore',
                        default='',
                        help='skip messages of specified types (e.g. '
                        'L003,E201,F100)')
    parser.add_argument('--exclude',
                        default='',
                        help='exclude files matching patterns (e.g. '
                        'some_file,bad_.+)')
    parser.add_argument('--web',
                        '-w',
                        default=False,
                        action='store_true',
                        help='enable web-centric checks, no prints, '
                        'good logging practices, ...')
    parser.add_argument('paths', nargs='+')
    args = parser.parse_args()

    ignores = args.ignore.split(',') if args.ignore else []
    excludes = args.exclude.split(',') if args.exclude else []

    checker = Checker(ignores=ignores, web=args.web)
    count = checker.process(args.paths, excludes)
    for message in checker.messages:
        print(message, file=stderr)
    exit(count)
    def test_utf8(self):
        checker = Checker()

        self.assertEquals(
            0, checker.process([join(FILES_DIR, 'utf-8', 'first.py')]))
        self.assertEquals(
            0, checker.process([join(FILES_DIR, 'utf-8', 'second.py')]))
    def test_ignore(self):
        checker = Checker(ignores=['W291'])
        self.assertEquals(
            9, checker.process([join(FILES_DIR, 'bad', 'simple.py')]))

        checker = Checker(ignores=['W291', 'L001'])
        self.assertEquals(
            8, checker.process([join(FILES_DIR, 'bad', 'simple.py')]))

        checker = Checker(ignores=['W291', 'L001', 'F001'])
        self.assertEquals(
            7, checker.process([join(FILES_DIR, 'bad', 'simple.py')]))

        # ignore unknown pyflakes msg
        checker = Checker(ignores=['W291', 'L001', 'F001', 'F999'])
        self.assertEquals(
            7, checker.process([join(FILES_DIR, 'bad', 'simple.py')]))
    def test_checker_blowup(self):
        checker = Checker()

        class Blowup:
            def check(self, *args, **kwargs):
                raise Exception('boom')

        checker.checkers = [Blowup()]

        with self.assertRaises(Exception) as cm:
            checker.process([join(FILES_DIR, 'bad', 'simple.py')])
        self.assertEquals('boom', str(cm.exception))
    def test_web(self):
        checker = Checker(web=True)

        self.assertEquals(
            11, checker.process([join(FILES_DIR, 'bad', 'simple.py')]))

        self.assertEquals(
            14, checker.process([join(FILES_DIR, 'bad', 'other.py')]))

        self.assertEquals(
            4, checker.process([join(FILES_DIR, 'bad', 'exceptions.py')]))

        self.assertEquals(29, checker.process([join(FILES_DIR, 'bad')]))
    def test_clean(self):
        checker = Checker()

        self.assertEquals(
            0, checker.process([join(FILES_DIR, 'clean', 'simple.py')]))

        self.assertEquals(
            0, checker.process([join(FILES_DIR, 'clean', 'other.py')]))

        self.assertEquals(
            0, checker.process([join(FILES_DIR, 'clean', 'exceptions.py')]))

        self.assertEquals(0, checker.process([join(FILES_DIR, 'clean')]))
    def test_bad(self):
        checker = Checker()

        checker.process([join(FILES_DIR, 'bad', 'simple.py')])
        self.assertEquals(
            10, checker.process([join(FILES_DIR, 'bad', 'simple.py')]))

        self.assertEquals(
            11, checker.process([join(FILES_DIR, 'bad', 'other.py')]))

        self.assertEquals(
            4, checker.process([join(FILES_DIR, 'bad', 'exceptions.py')]))

        self.assertEquals(25, checker.process([join(FILES_DIR, 'bad')]))
    def test_nonexistent_file(self):
        checker = Checker()

        with self.assertRaises(IOError):
            checker.process([join('some', 'path', 'to', 'nowhere')])