예제 #1
0
    def test_limit_to_changes__remove_problems(self):
        res = map(lambda f: PullFile(f), json.loads(self.two_files_json))
        changes = DiffCollection(res)

        # Setup some fake problems.
        filename_1 = 'Console/Command/Task/AssetBuildTask.php'
        errors = (
            (None, None, 'This is a general comment'),
            (filename_1, 117, 'Something bad'),
            (filename_1, 119, 'Something else bad'),
            (filename_1, 130, 'Filtered out, as line is not changed'),
        )
        self.problems.add_many(errors)
        filename_2 = 'Test/test_files/View/Parse/single.ctp'
        errors = (
            (filename_2, 2, 'Filtered out'),
            (filename_2, 3, 'Something bad'),
            (filename_2, 7, 'Filtered out'),
        )
        self.problems.add_many(errors)
        self.problems.set_changes(changes)
        self.problems.limit_to_changes()

        result = self.problems.all(filename_1)
        eq_(2, len(result))
        expected = [(None, None, 'This is a general comment'),
                    (filename_1, 117, 'Something bad'),
                    (filename_1, 119, 'Something else bad')]
        eq_(result.sort(), expected.sort())

        result = self.problems.all(filename_2)
        eq_(1, len(result))
        expected = [Comment(filename_2, 3, 3, 'Something bad')]
        eq_(result, expected)
예제 #2
0
    def get_pull_request(self, fixture):
        pull_request = Mock(number=1, head='123abc')

        pull_request.files.return_value = map(lambda f: PullFile(f),
                                              json.loads(fixture))

        return pull_request
예제 #3
0
    def get_pull_request(self, fixture):
        pull_request = Mock(number=1, head='123abc')

        pull_request.files.return_value = [
            PullFile(f) for f in json.loads(fixture)
        ]

        return pull_request
예제 #4
0
    def get_mock_client(self, fixture):
        gh = Mock()
        pull_request = Mock()

        pull_request.files.return_value = map(lambda f: PullFile(f),
                                              json.loads(fixture))

        gh.pull_request.return_value = pull_request
        return gh
예제 #5
0
    def get_mock_client(self, fixture):
        gh = Mock()
        pull_request = Mock()

        pull_request.files.return_value = [
            PullFile(f) for f in json.loads(fixture)
        ]

        gh.pull_request.return_value = pull_request
        return gh
예제 #6
0
    def test_add__with_diff_containing_block_offset(self):
        res = [PullFile(f) for f in json.loads(self.block_offset)]
        changes = DiffCollection(res)

        problems = Problems(changes=changes)
        line_num = 32
        problems.add('somefile.py', line_num, 'Not good')
        eq_(1, len(problems))

        result = problems.all('somefile.py')
        eq_(changes.line_position('somefile.py', line_num), result[0].position,
            'Offset should be transformed to match value in changes')
예제 #7
0
    def test_add__with_diff_containing_block_offset(self):
        res = [
            PullFile(f, self.session) for f in json.loads(self.block_offset)
        ]
        changes = DiffCollection(res)

        problems = Problems(changes=changes)
        line_num = 32
        problems.add('somefile.py', line_num, 'Not good')
        self.assertEqual(1, len(problems))

        result = problems.all('somefile.py')
        first_result = result[0]
        self.assertIsInstance(first_result, Comment)
        self.assertEqual(
            changes.line_position('somefile.py',
                                  line_num), first_result.position,
            'Offset should be transformed to match value in changes')
예제 #8
0
    def test_limit_to_changes__remove_problems(self):
        res = [
            PullFile(f, self.session) for f in json.loads(self.two_files_json)
        ]
        changes = DiffCollection(res)

        # Setup some fake problems.
        filename_1 = 'Console/Command/Task/AssetBuildTask.php'
        errors = (
            Comment(None, None, None, 'This is a general comment'),
            Comment(filename_1, 117, 117, 'Something bad'),
            Comment(filename_1, 119, 119, 'Something else bad'),
            Comment(filename_1, 130, 130, 'Filtered out, line is not changed'),
        )
        self.problems.add_many(errors)
        filename_2 = 'Test/test_files/View/Parse/single.ctp'
        errors = (
            Comment(filename_2, 2, 2, 'Filtered out'),
            Comment(filename_2, 3, 3, 'Something bad'),
            Comment(filename_2, 7, 7, 'Filtered out'),
        )
        self.problems.add_many(errors)
        self.problems.set_changes(changes)
        self.problems.limit_to_changes()

        result = self.problems.all(filename_1)
        self.assertEqual(2, len(result))
        expected = [
            Comment(filename_1, 117, 117, 'Something bad'),
            Comment(filename_1, 119, 119, 'Something else bad')]
        self.assertEqual(len(result), len(expected))
        self.assertEqual(result, expected)

        result = self.problems.all(filename_2)
        self.assertEqual(1, len(result))
        expected = [
            Comment(filename_2, 3, 3, 'Something bad')
        ]
        self.assertEqual(result, expected)
예제 #9
0
    def test_limit_to_changes__first_line_in_diff(self):
        res = [
            PullFile(f, self.session) for f in json.loads(self.two_files_json)
        ]
        changes = DiffCollection(res)

        # Add problems
        filename = 'Test/test_files/View/Parse/single.ctp'
        errors = (
            Comment(filename, 5, 5, 'Something bad'),
            Comment(filename, Comment.FIRST_LINE_IN_DIFF, 0, 'First line!'),
            Comment(filename, 7, 7, 'Filtered out'),
        )
        self.problems.add_many(errors)
        self.problems.set_changes(changes)
        self.problems.limit_to_changes()

        result = self.problems.all(filename)
        self.assertEqual(2, len(result))
        expected = [
            Comment(filename, 5, 5, 'Something bad'),
            Comment(filename, 3, 3, 'First line!'),
        ]
        self.assertEqual(result, expected)
예제 #10
0
def create_pull_files(data):
    session = GitHubSession()
    return [PullFile(f, session) for f in json.loads(data)]
예제 #11
0
def create_pull_files(data):
    return [PullFile(f) for f in json.loads(data)]
예제 #12
0
def create_pull_files(data):
    return map(lambda f: PullFile(f), json.loads(data))