Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: tools/checkdeps/checkdeps_test.py

Issue 307333003: Remove now obsolete checkdeps copy (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « tools/checkdeps/checkdeps.py ('k') | tools/checkdeps/cpp_checker.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 """Tests for checkdeps.
7 """
8
9 import os
10 import unittest
11
12
13 import checkdeps
14 import results
15
16
17 class CheckDepsTest(unittest.TestCase):
18
19 def setUp(self):
20 self.deps_checker = checkdeps.DepsChecker(being_tested=True)
21
22 def ImplTestRegularCheckDepsRun(self, ignore_temp_rules, skip_tests):
23 self.deps_checker._ignore_temp_rules = ignore_temp_rules
24 self.deps_checker._skip_tests = skip_tests
25 self.deps_checker.CheckDirectory(
26 os.path.join(self.deps_checker.base_directory,
27 'tools/checkdeps/testdata'))
28
29 problems = self.deps_checker.results_formatter.GetResults()
30 if skip_tests:
31 self.failUnlessEqual(3, len(problems))
32 else:
33 self.failUnlessEqual(4, len(problems))
34
35 def VerifySubstringsInProblems(key_path, substrings_in_sequence):
36 """Finds the problem in |problems| that contains |key_path|,
37 then verifies that each of |substrings_in_sequence| occurs in
38 that problem, in the order they appear in
39 |substrings_in_sequence|.
40 """
41 found = False
42 key_path = os.path.normpath(key_path)
43 for problem in problems:
44 index = problem.find(key_path)
45 if index != -1:
46 for substring in substrings_in_sequence:
47 index = problem.find(substring, index + 1)
48 self.failUnless(index != -1, '%s in %s' % (substring, problem))
49 found = True
50 break
51 if not found:
52 self.fail('Found no problem for file %s' % key_path)
53
54 if ignore_temp_rules:
55 VerifySubstringsInProblems('testdata/allowed/test.h',
56 ['-tools/checkdeps/testdata/disallowed',
57 'temporarily_allowed.h',
58 '-third_party/explicitly_disallowed',
59 'Because of no rule applying'])
60 else:
61 VerifySubstringsInProblems('testdata/allowed/test.h',
62 ['-tools/checkdeps/testdata/disallowed',
63 '-third_party/explicitly_disallowed',
64 'Because of no rule applying'])
65
66 VerifySubstringsInProblems('testdata/disallowed/test.h',
67 ['-third_party/explicitly_disallowed',
68 'Because of no rule applying',
69 'Because of no rule applying'])
70 VerifySubstringsInProblems('disallowed/allowed/test.h',
71 ['-third_party/explicitly_disallowed',
72 'Because of no rule applying',
73 'Because of no rule applying'])
74
75 if not skip_tests:
76 VerifySubstringsInProblems('allowed/not_a_test.cc',
77 ['-tools/checkdeps/testdata/disallowed'])
78
79 def testRegularCheckDepsRun(self):
80 self.ImplTestRegularCheckDepsRun(False, False)
81
82 def testRegularCheckDepsRunIgnoringTempRules(self):
83 self.ImplTestRegularCheckDepsRun(True, False)
84
85 def testRegularCheckDepsRunSkipTests(self):
86 self.ImplTestRegularCheckDepsRun(False, True)
87
88 def testRegularCheckDepsRunIgnoringTempRulesSkipTests(self):
89 self.ImplTestRegularCheckDepsRun(True, True)
90
91 def CountViolations(self, ignore_temp_rules):
92 self.deps_checker._ignore_temp_rules = ignore_temp_rules
93 self.deps_checker.results_formatter = results.CountViolationsFormatter()
94 self.deps_checker.CheckDirectory(
95 os.path.join(self.deps_checker.base_directory,
96 'tools/checkdeps/testdata'))
97 return self.deps_checker.results_formatter.GetResults()
98
99 def testCountViolations(self):
100 self.failUnlessEqual('10', self.CountViolations(False))
101
102 def testCountViolationsIgnoringTempRules(self):
103 self.failUnlessEqual('11', self.CountViolations(True))
104
105 def testTempRulesGenerator(self):
106 self.deps_checker.results_formatter = results.TemporaryRulesFormatter()
107 self.deps_checker.CheckDirectory(
108 os.path.join(self.deps_checker.base_directory,
109 'tools/checkdeps/testdata/allowed'))
110 temp_rules = self.deps_checker.results_formatter.GetResults()
111 expected = [u' "!third_party/explicitly_disallowed/bad.h",',
112 u' "!third_party/no_rule/bad.h",',
113 u' "!tools/checkdeps/testdata/disallowed/bad.h",',
114 u' "!tools/checkdeps/testdata/disallowed/teststuff/bad.h",']
115 self.failUnlessEqual(expected, temp_rules)
116
117 def testCheckAddedIncludesAllGood(self):
118 problems = self.deps_checker.CheckAddedCppIncludes(
119 [['tools/checkdeps/testdata/allowed/test.cc',
120 ['#include "tools/checkdeps/testdata/allowed/good.h"',
121 '#include "tools/checkdeps/testdata/disallowed/allowed/good.h"']
122 ]])
123 self.failIf(problems)
124
125 def testCheckAddedIncludesManyGarbageLines(self):
126 garbage_lines = ["My name is Sam%d\n" % num for num in range(50)]
127 problems = self.deps_checker.CheckAddedCppIncludes(
128 [['tools/checkdeps/testdata/allowed/test.cc', garbage_lines]])
129 self.failIf(problems)
130
131 def testCheckAddedIncludesNoRule(self):
132 problems = self.deps_checker.CheckAddedCppIncludes(
133 [['tools/checkdeps/testdata/allowed/test.cc',
134 ['#include "no_rule_for_this/nogood.h"']
135 ]])
136 self.failUnless(problems)
137
138 def testCheckAddedIncludesSkippedDirectory(self):
139 problems = self.deps_checker.CheckAddedCppIncludes(
140 [['tools/checkdeps/testdata/disallowed/allowed/skipped/test.cc',
141 ['#include "whatever/whocares.h"']
142 ]])
143 self.failIf(problems)
144
145 def testCheckAddedIncludesTempAllowed(self):
146 problems = self.deps_checker.CheckAddedCppIncludes(
147 [['tools/checkdeps/testdata/allowed/test.cc',
148 ['#include "tools/checkdeps/testdata/disallowed/temporarily_allowed.h"']
149 ]])
150 self.failUnless(problems)
151
152 def testCopyIsDeep(self):
153 # Regression test for a bug where we were making shallow copies of
154 # Rules objects and therefore all Rules objects shared the same
155 # dictionary for specific rules.
156 #
157 # The first pair should bring in a rule from testdata/allowed/DEPS
158 # into that global dictionary that allows the
159 # temp_allowed_for_tests.h file to be included in files ending
160 # with _unittest.cc, and the second pair should completely fail
161 # once the bug is fixed, but succeed (with a temporary allowance)
162 # if the bug is in place.
163 problems = self.deps_checker.CheckAddedCppIncludes(
164 [['tools/checkdeps/testdata/allowed/test.cc',
165 ['#include "tools/checkdeps/testdata/disallowed/temporarily_allowed.h"']
166 ],
167 ['tools/checkdeps/testdata/disallowed/foo_unittest.cc',
168 ['#include "tools/checkdeps/testdata/bongo/temp_allowed_for_tests.h"']
169 ]])
170 # With the bug in place, there would be two problems reported, and
171 # the second would be for foo_unittest.cc.
172 self.failUnless(len(problems) == 1)
173 self.failUnless(problems[0][0].endswith('/test.cc'))
174
175
176 if __name__ == '__main__':
177 unittest.main()
OLDNEW
« no previous file with comments | « tools/checkdeps/checkdeps.py ('k') | tools/checkdeps/cpp_checker.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698