Exemplo n.º 1
0
 def test_default_settings_overridden(self):
     config = ReviewConfig(sample_ini, defaults_ini)
     res = config.linter_config('jshint')
     expected = {
         'config': './jshint.json',
     }
     eq_(res, expected)
Exemplo n.º 2
0
def process_pull_request(user, repo, number, lintrc):
    """
    Starts processing a pull request and running the various
    lint tools against it.
    """
    log.info('Starting to process lint for %s/%s/%s', user, repo, number)
    log.debug("lintrc contents '%s'", lintrc)
    review_config = ReviewConfig(lintrc)

    if len(review_config.linters()) == 0:
        log.info('No configured linters, skipping processing.')
        return

    gh = github.get_client(config, user, repo)
    try:
        log.info('Loading pull request data from github.')
        pull_request = gh.pull_requests.get(number)
        head_repo = pull_request.head['repo']['clone_url']
        private_repo = pull_request.head['repo']['private']
        pr_head = pull_request.head['sha']

        # Clone/Update repository
        target_path = git.get_repo_path(user, repo, number, config)
        git.clone_or_update(config, head_repo, target_path, pr_head,
                            private_repo)

        processor = Processor(gh, number, pr_head, target_path, config)
        processor.load_changes()
        processor.run_tools(review_config)
        processor.publish()

        log.info('Completed lint processing for %s/%s/%s' % (
            user, repo, number))
    except BaseException, e:
        log.exception(e)
Exemplo n.º 3
0
 def test_default_settings_overridden(self):
     config = ReviewConfig(sample_ini, defaults_ini)
     res = config.linter_config('jshint')
     expected = {
         'config': './jshint.json',
     }
     eq_(res, expected)
Exemplo n.º 4
0
 def test_default_settings(self):
     config = ReviewConfig(simple_ini, defaults_ini)
     res = config.linter_config('jshint')
     expected = {
         'config': '/etc/jshint.json',
     }
     eq_(res, expected)
Exemplo n.º 5
0
def process_pull_request(user, repo, number, lintrc):
    """
    Starts processing a pull request and running the various
    lint tools against it.
    """
    log.info('Starting to process lint for %s/%s/%s', user, repo, number)
    log.debug("lintrc contents '%s'", lintrc)
    review_config = ReviewConfig(lintrc)

    if len(review_config.linters()) == 0:
        log.info('No configured linters, skipping processing.')
        return

    gh = github.get_client(config, user, repo)
    try:
        log.info('Loading pull request data from github.')
        pull_request = gh.pull_requests.get(number)
        head_repo = pull_request.head['repo']['git_url']
        pr_head = pull_request.head['sha']

        # Clone/Update repository
        target_path = git.get_repo_path(user, repo, number, config)
        git.clone_or_update(head_repo, target_path, pr_head)

        processor = Processor(gh, number, pr_head, target_path, config)
        processor.load_changes()
        processor.run_tools(review_config)
        processor.publish()

        log.info('Completed lint processing for %s/%s/%s' %
                 (user, repo, number))
    except BaseException, e:
        log.exception(e)
Exemplo n.º 6
0
 def test_default_settings(self):
     config = ReviewConfig(simple_ini, defaults_ini)
     res = config.linter_config('jshint')
     expected = {
         'config': '/etc/jshint.json',
     }
     eq_(res, expected)
Exemplo n.º 7
0
    def test_linter_config(self):
        config = ReviewConfig(sample_ini)
        res = config.linter_config('phpcs')
        expected = {
            'standard': 'test/CodeStandards',
            'config': 'test/phpcs.xml'
        }
        eq_(res, expected)

        res = config.linter_config('not there')
        eq_(res, [])
Exemplo n.º 8
0
    def test_linter_config(self):
        config = ReviewConfig(sample_ini)
        res = config.linter_config('phpcs')
        expected = {
            'standard': 'test/CodeStandards',
            'config': 'test/phpcs.xml'
        }
        eq_(res, expected)

        res = config.linter_config('not there')
        eq_(res, [])
Exemplo n.º 9
0
def test_factory_generates_tools():
    gh = Mock(spec=github3.GitHub)
    config = ReviewConfig(sample_ini)
    linters = tools.factory(Review(gh, None), config, '')
    eq_(2, len(linters))
    assert isinstance(linters[0], tools.pep8.Pep8)
    assert isinstance(linters[1], tools.jshint.Jshint)
Exemplo n.º 10
0
def process_pull_request(user, repo, number, lintrc):
    """
    Starts processing a pull request and running the various
    lint tools against it.
    """
    log.info('Starting to process lint for %s/%s/%s', user, repo, number)
    log.debug("lintrc contents '%s'", lintrc)
    lintrc_defaults = get_lintrc_defaults(config)
    review_config = ReviewConfig(lintrc, lintrc_defaults)

    if len(review_config.linters()) == 0:
        log.info('No configured linters, skipping processing.')
        return

    try:
        log.info('Loading pull request data from github. user=%s '
                 'repo=%s number=%s', user, repo, number)
        gh = github.get_repository(config, user, repo)
        pull_request = gh.pull_request(number)

        pr_dict = pull_request.as_dict()
        head_repo = pr_dict['head']['repo']['clone_url']
        private_repo = pr_dict['head']['repo']['private']
        pr_head = pr_dict['head']['sha']

        target_branch = pr_dict['base']['ref']
        if target_branch in review_config.ignore_branches():
            log.info('Pull request into ignored branch %s, skipping processing.' %
                     target_branch)
            return

        # Clone/Update repository
        target_path = git.get_repo_path(user, repo, number, config)
        git.clone_or_update(config, head_repo, target_path, pr_head,
                            private_repo)

        processor = Processor(gh, number, pr_head,
                              target_path, config)
        processor.load_changes()
        processor.run_tools(review_config)
        processor.publish()

        log.info('Completed lint processing for %s/%s/%s' % (
            user, repo, number))
    except BaseException, e:
        log.exception(e)
Exemplo n.º 11
0
def test_run__filter_files():
    config = ReviewConfig(simple_ini)
    problems = Problems()
    files = [
        './tests/fixtures/pep8/has_errors.py',
        './tests/fixtures/phpcs/has_errors.php'
    ]
    tools.run(config, problems, files, [], '')
    eq_(6, len(problems))
Exemplo n.º 12
0
 def test_load_ini__multiple_merges_settings(self):
     config = ReviewConfig()
     config.load_ini(defaults_ini)
     config.load_ini(simple_ini)
     res = config.linter_config('jshint')
     expected = {
         'config': '/etc/jshint.json',
     }
     eq_(res, expected)
Exemplo n.º 13
0
 def test_load_ini__override(self):
     config = ReviewConfig()
     config.load_ini(defaults_ini)
     config.load_ini(sample_ini)
     res = config.linter_config('jshint')
     expected = {
         'config': './jshint.json',
     }
     eq_(res, expected)
Exemplo n.º 14
0
 def test_ignore_patterns_missing(self):
     config = ReviewConfig()
     res = config.ignore_patterns()
     self.assertEqual(res, [])
Exemplo n.º 15
0
 def test_linter_config_bad(self):
     config = ReviewConfig(bad_ini)
     res = config.linter_config('phpcs')
     eq_(res, [])
Exemplo n.º 16
0
 def test_linter_listing(self):
     config = ReviewConfig(sample_ini)
     res = config.linters()
     expected = ['phpcs', 'pep8', 'jshint']
     eq_(res, expected)
Exemplo n.º 17
0
def test_factory_raises_error_on_bad_linter():
    config = ReviewConfig(bad_ini)
    tools.factory(Review(None, None), config, '')
Exemplo n.º 18
0
 def test_ignore_patterns(self):
     config = ReviewConfig(sample_ini)
     res = config.ignore_patterns()
     expected = ['test/CodeStandards/test/**', 'vendor/**']
     eq_(res, expected)
Exemplo n.º 19
0
 def test_linter_config_bad(self):
     config = ReviewConfig(bad_ini)
     res = config.linter_config('phpcs')
     eq_(res, [])
Exemplo n.º 20
0
 def test_linter_listing_bad(self):
     config = ReviewConfig(bad_ini)
     res = config.linters()
     eq_(res, [])
Exemplo n.º 21
0
 def test_ignore_patterns_missing(self):
     config = ReviewConfig()
     res = config.ignore_patterns()
     self.assertEqual(res, [])
Exemplo n.º 22
0
def test_factory_generates_tools():
    config = ReviewConfig(sample_ini)
    linters = tools.factory(Review(None, None), config, '')
    eq_(2, len(linters))
    assert isinstance(linters[0], tools.pep8.Pep8)
    assert isinstance(linters[1], tools.jshint.Jshint)
Exemplo n.º 23
0
 def test_ignore_patterns_missing(self):
     config = ReviewConfig()
     res = config.ignore_patterns()
     eq_(res, [])
Exemplo n.º 24
0
 def test_linter_listing_bad(self):
     config = ReviewConfig(bad_ini)
     res = config.linters()
     eq_(res, [])
Exemplo n.º 25
0
 def test_factory_raises_error_on_bad_linter(self):
     gh = Mock(spec=github3.GitHub)
     config = ReviewConfig()
     config.load_ini(bad_ini)
     self.assertRaises(ImportError, tools.factory, config,
                       Review(gh, None, config), '')
Exemplo n.º 26
0
 def test_linter_listing(self):
     config = ReviewConfig(sample_ini)
     res = config.linters()
     expected = ['phpcs', 'pep8', 'jshint']
     eq_(res, expected)
Exemplo n.º 27
0
 def test_ignore_patterns(self):
     config = ReviewConfig(sample_ini)
     res = config.ignore_patterns()
     expected = ['test/CodeStandards/test/**', 'vendor/**']
     eq_(res, expected)
Exemplo n.º 28
0
def test_factory_raises_error_on_bad_linter():
    gh = Mock(spec=github3.GitHub)
    config = build_review_config(bad_ini)
    config = ReviewConfig()
    config.load_ini(bad_ini)
    tools.factory(Review(gh, None), config, '')
Exemplo n.º 29
0
def test_factory_raises_error_on_bad_linter():
    gh = Mock(spec=github3.GitHub)
    config = build_review_config(bad_ini)
    config = ReviewConfig()
    config.load_ini(bad_ini)
    tools.factory(Review(gh, None), config, '')
Exemplo n.º 30
0
 def test_ignore_patterns_missing(self):
     config = ReviewConfig("")
     res = config.ignore_patterns()
     eq_(res, [])
Exemplo n.º 31
0
 def test_factory_raises_error_on_bad_linter(self):
     gh = Mock(spec=github3.GitHub)
     config = ReviewConfig()
     config.load_ini(bad_ini)
     self.assertRaises(ImportError, tools.factory, config,
                       Review(gh, None, config), '')