summaryrefslogtreecommitdiffstats
path: root/tools/check-moz-style/run_tests.py
blob: 5ef3fa3113a55e628250b8a9269bc6398a9a412b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/python
#
# Any copyright is dedicated to the Public Domain.
# http://creativecommons.org/publicdomain/zero/1.0/
#

from __future__ import print_function
from modules.scm import detect_scm_system
from contextlib import closing
import checkmozstyle
import os
import modules.cpplint as cpplint
import StringIO

TESTS = [
    # Empty patch
    {
        "patch": "tests/test1.patch",
        "cpp": "tests/test1.cpp",
        "out": "tests/test1.out"
    },
    # Bad header
    {
        "patch": "tests/test2.patch",
        "cpp": "tests/test2.cpp",
        "out": "tests/test2.out"
    },
    # Bad Description
    {
        "patch": "tests/test3.patch",
        "cpp": "tests/test3.cpp",
        "out": "tests/test3.out"
    },
    # readability tests
    {
        "patch": "tests/test4.patch",
        "cpp": "tests/test4.cpp",
        "out": "tests/test4.out"
    },
    # runtime tests
    {
        "patch": "tests/test5.patch",
        "cpp": "tests/test5.cpp",
        "out": "tests/test5.out"
    },
]


def main():
    cwd = os.path.abspath('.')
    scm = detect_scm_system(cwd)
    cpplint.use_mozilla_styles()
    (args, flags) = cpplint.parse_arguments([])

    for test in TESTS:
        with open(test["patch"]) as fh:
            patch = fh.read()

        with closing(StringIO.StringIO()) as output:
            cpplint.set_stream(output)
            checkmozstyle.process_patch(patch, cwd, cwd, scm)
            result = output.getvalue()

        with open(test["out"]) as fh:
            expected_output = fh.read()

        test_status = "PASSED"
        if result != expected_output:
            test_status = "FAILED"
            print("TEST " + test["patch"] + " " + test_status)
            print("Got result:\n" + result + "Expected:\n" + expected_output)
        else:
            print("TEST " + test["patch"] + " " + test_status)


if __name__ == "__main__":
        main()