示例#1
0
    def test_multi_file(self):
        diff_content = [
            "diff --git a/tests/path/to/testfile b/tests/path/to/testfile",
            "index 5f4d692..5b05678 100644", "--- a/tests/path/to/testfile",
            "+++ b/tests/path/to/testfile", "@@ -2,0 +2,1 @@", " 1", "+2",
            " 3", "@@ -13,7 +14,4 @@", " 4", "-5", "-6", "+7", " 8", "-9",
            "+10",
            "diff --git a/tests/path/to/secondfile b/tests/path/to/secondfile",
            "index 5f4d692..5b05678 100644", "--- a/tests/path/to/secondfile",
            "+++ b/tests/path/to/secondfile", "@@ -2,0 +2,1 @@", " 1", "+2",
            " 3", "@@ -13,7 +14,4 @@", " 4", "-5", "-6", "+7", " 8", "-9",
            "+10"
        ]

        self.assertEqual(
            diff.positions('tests', diff_content), {
                "path/to/testfile": {
                    2: 1,
                    3: 2,
                    4: 3,
                    14: 5,
                    15: 8,
                    16: 9,
                    17: 11
                },
                "path/to/secondfile": {
                    2: 1,
                    3: 2,
                    4: 3,
                    14: 5,
                    15: 8,
                    16: 9,
                    17: 11
                },
            })
示例#2
0
文件: diff_test.py 项目: zifn/beefore
    def test_subtract_lines(self):
        diff_list = [
            "diff --git a/testfile b/()", "@@ -1,6 +1,2 @@", " 1", "-2", "-3",
            " 4"
        ]

        self.assertEqual(diff.positions(diff_list, "testfile"), {1: 3, 2: 6})
示例#3
0
def check(directory, diff_content, commit, verbosity):
    results = []

    lint_results = Lint.find(directory=directory)
    diff_mappings = diff.positions(directory, diff_content)

    for filename, problems in lint_results.items():
        file_seen = False
        if filename in diff_mappings:
            for problem in sorted(problems, key=lambda p: p.line):
                try:
                    position = diff_mappings[filename][problem.line]
                    if not file_seen:
                        print("  * %s" % filename)
                        file_seen = True
                    print('    - %s' % problem)
                    results.append((problem, position))
                except KeyError:
                    # Line doesn't exist in the diff; so we can ignore this problem
                    if verbosity:
                        if not file_seen:
                            print("  * %s" % filename)
                            file_seen = True
                        print('    - Line %s not in diff' % problem.line)
        else:
            # File has been changed, but wasn't in the diff
            if verbosity:
                if not file_seen:
                    print("  * %s" % filename)
                    file_seen = True
                print('    - file not in diff')

    return results
示例#4
0
def check(directory, diff_content, commit, verbosity):
    # Adapted from https://github.com/beeware/beefore/blob/master/src/beefore/checks/pycodestyle.py
    results = []

    lint_results = Lint.find(directory=directory)
    diff_mappings = diff.positions(directory, diff_content)

    for filename, problems in lint_results.items():
        file_seen = False
        if filename in diff_mappings:
            for problem in sorted(problems, key=lambda p: p.lineno):
                try:
                    position = diff_mappings[filename][problem.lineno]
                    if not file_seen:
                        print("  * %s" % filename)
                        file_seen = True
                    print("    - %s" % problem)
                    results.append((problem, position))
                except KeyError:
                    if verbosity:
                        if not file_seen:
                            print("  * %s" % filename)
                            file_seen = True
                        print("    - Line %s not in diff" % problem.lineno)
        else:
            if verbosity:
                if not file_seen:
                    print("  * %s" % filename)
                    file_seen = True
                print("    - file not in diff")

    return results
示例#5
0
def check(directory, diff_content, commit, verbosity):
    results = []

    lint_results = Lint.find(directory=directory)
    diff_mappings = diff.positions(directory, diff_content)

    for filename, problems in lint_results.items():
        file_seen = False
        if filename in diff_mappings:
            for problem in sorted(problems, key=lambda p: p.line):
                try:
                    position = diff_mappings[filename][problem.line]
                    if not file_seen:
                        print("  * %s" % filename)
                        file_seen = True
                    print('    - %s' % problem)
                    results.append((problem, position))
                except KeyError:
                    # Line doesn't exist in the diff; so we can ignore this problem
                    if verbosity:
                        if not file_seen:
                            print("  * %s" % filename)
                            file_seen = True
                        print('    - Line %s not in diff' % problem.line)
        else:
            # File has been changed, but wasn't in the diff
            if verbosity:
                if not file_seen:
                    print("  * %s" % filename)
                    file_seen = True
                print('    - file not in diff')

    return results
示例#6
0
    def test_add_subtract(self):
        diff_content = [
            "diff --git a/tests/path/to/testfile b/tests/path/to/testfile",
            "index 5f4d692..5b05678 100644",
            "--- a/tests/path/to/testfile",
            "+++ b/tests/path/to/testfile",
            "@@ -2,0 +2,1 @@",
            " 1",
            "+2",
            " 3",
            "@@ -13,7 +14,4 @@",
            " 4",
            "-5",
            "-6",
            "+7",
            " 8",
            "-9",
            "+10"
        ]

        self.assertEqual(
            diff.positions('tests', diff_content),
            {
                "path/to/testfile": {2: 1, 3: 2, 4: 3, 14: 5, 15: 8, 16: 9, 17: 11}
            }
        )
示例#7
0
文件: eslint.py 项目: zifn/beefore
def check(pull_request, commit, directory):
    problem_found = False

    diff_content = pull_request.diff().decode('utf-8').split('\n')

    for changed_file in commit.files:
        if os.path.splitext(changed_file['filename'])[-1] == '.js':
            print("  * %s" % changed_file['filename'])

            # Build a map of line numbers to diff positions
            diff_position = diff.positions(diff_content,
                                           changed_file['filename'])

            problems = Lint.find(
                directory=directory,
                filename=changed_file['filename'],
            )

            for problem in problems:
                try:
                    position = diff_position[problem.line]
                    problem_found = True
                    print('    - %s' % problem)
                    problem.add_comment(pull_request, commit, position)
                except KeyError:
                    # Line doesn't exist in the diff; so we can ignore this problem
                    print('     - [IGNORED] %s' % problem)

    return not problem_found
示例#8
0
    def test_subtract_lines(self):
        diff_content = [
            "diff --git a/tests/path/to/testfile b/tests/path/to/testfile",
            "@@ -1,6 +1,2 @@", " 1", "-2", "-3", " 4"
        ]

        self.assertEqual(diff.positions('tests', diff_content),
                         {"path/to/testfile": {
                             1: 1,
                             2: 4
                         }})
示例#9
0
    def test_no_diff(self):
        diff_content = [
            "1",
            "2",
            "3",
            "4"
        ]

        self.assertEqual(
            diff.positions('tests', diff_content),
            {}
        )
示例#10
0
文件: diff_test.py 项目: zifn/beefore
    def test_add_subtract(self):
        diff_list = [
            "diff --git a/testfile b/()", " 1", "@@ -2,0 +2,1 @@", "+2", " 3",
            "@@ -3,7 +4,4 @@", " 4", "-5", "-6", "+7", " 8", "-9", "+10"
        ]

        self.assertEqual(diff.positions(diff_list, "testfile"), {
            2: 4,
            3: 5,
            4: 7,
            5: 10,
            6: 11,
            7: 13
        })
示例#11
0
文件: diff_test.py 项目: zifn/beefore
    def test_add_lines(self):
        diff_list = [
            "diff --git a/testfile b/()", "@@ -1,4 +1,6 @@", " 1", "+2", "+3",
            " 4", " 5", " 6"
        ]

        self.assertEqual(diff.positions(diff_list, "testfile"), {
            1: 3,
            2: 4,
            3: 5,
            4: 6,
            5: 7,
            6: 8
        })
示例#12
0
    def test_subtract_lines(self):
        diff_content = [
            "diff --git a/tests/path/to/testfile b/tests/path/to/testfile",
            "@@ -1,6 +1,2 @@",
            " 1",
            "-2",
            "-3",
            " 4"
        ]

        self.assertEqual(
            diff.positions('tests', diff_content),
            {
                "path/to/testfile": {1: 1, 2: 4}
            }
        )
示例#13
0
    def test_add_lines(self):
        diff_content = [
            "diff --git a/tests/path/to/testfile b/tests/path/to/testfile",
            "@@ -1,4 +1,6 @@", " 1", "+2", "+3", " 4", " 5", " 6"
        ]

        self.assertEqual(
            diff.positions('tests', diff_content),
            {"path/to/testfile": {
                1: 1,
                2: 2,
                3: 3,
                4: 4,
                5: 5,
                6: 6
            }})
示例#14
0
    def test_add_lines(self):
        diff_content = [
            "diff --git a/tests/path/to/testfile b/tests/path/to/testfile",
            "@@ -1,4 +1,6 @@",
            " 1",
            "+2",
            "+3",
            " 4",
            " 5",
            " 6"
        ]

        self.assertEqual(
            diff.positions('tests', diff_content),
            {
                "path/to/testfile": {1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6}
            }
        )
示例#15
0
文件: eslint.py 项目: lev0987/beefore
def check(pull_request, commit, directory, config):
    problem_found = False

    diff_content = pull_request.diff().decode('utf-8').split('\n')

    for changed_file in commit.files:
        if os.path.splitext(changed_file['filename'])[-1] == '.js':
            print ("  * %s" % changed_file['filename'])

            # Build a map of line numbers to diff positions
            diff_position = diff.positions(diff_content, changed_file['filename'])

            # If a directory has been provided, use that as the source of
            # the files. Otherwise, download the file blob.
            if directory is None:
                response = requests.get(changed_file['raw_url'])
                content = response.content
            else:
                with open(os.path.join(directory, changed_file['filename'])) as fp:
                    content = fp.read().encode('utf-8')

            problems = Lint.find(
                filename=changed_file['filename'],
                content=content,
                config=config
            )

            print(diff_position)
            for problem in problems:
                try:
                    print(problem.line)
                    position = diff_position[problem.line]
                    print('    - %s' % problem)
                    problem.add_comment(pull_request, commit, position)
                except KeyError:
                    # Line doesn't exist in the diff; so we can ignore this problem
                    pass

    return problem_found
示例#16
0
def check(pull_request, commit, directory, config):
    problem_found = False

    diff_content = pull_request.diff().decode('utf-8').split('\n')

    for changed_file in commit.files:
        if os.path.splitext(changed_file['filename'])[-1] == '.js':
            print("  * %s" % changed_file['filename'])

            # Build a map of line numbers to diff positions
            diff_position = diff.positions(diff_content,
                                           changed_file['filename'])

            # If a directory has been provided, use that as the source of
            # the files. Otherwise, download the file blob.
            if directory is None:
                response = requests.get(changed_file['raw_url'])
                content = response.content
            else:
                with open(os.path.join(directory,
                                       changed_file['filename'])) as fp:
                    content = fp.read().encode('utf-8')

            problems = Lint.find(filename=changed_file['filename'],
                                 content=content,
                                 config=config)

            print(diff_position)
            for problem in problems:
                try:
                    print(problem.line)
                    position = diff_position[problem.line]
                    print('    - %s' % problem)
                    problem.add_comment(pull_request, commit, position)
                except KeyError:
                    # Line doesn't exist in the diff; so we can ignore this problem
                    pass

    return problem_found
示例#17
0
    def test_no_diff(self):
        diff_content = ["1", "2", "3", "4"]

        self.assertEqual(diff.positions('tests', diff_content), {})
示例#18
0
文件: diff_test.py 项目: zifn/beefore
    def test_wrong_filename(self):
        diff_list = ["1", "2", "3", "4"]

        self.assertEqual(diff.positions(diff_list, "wrong"), None)
示例#19
0
文件: diff_test.py 项目: zifn/beefore
    def test_no_change(self):
        diff_list = ["1", "2", "3", "4"]

        self.assertEqual(diff.positions(diff_list, "testfile"), None)