Commit fd4b2b63 authored by John Budorick's avatar John Budorick Committed by Commit Bot

checkdeps: encode input to os.walk as utf-8.

Also fix checkdeps_test.py after the move into chromium/src.

Bug: 962059
Change-Id: I86f041e5ce819e0fbf3fb1e4de29fdde6c8d4596
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1610222
Auto-Submit: John Budorick <jbudorick@chromium.org>
Reviewed-by: default avatarThomas Anderson <thomasanderson@chromium.org>
Commit-Queue: John Budorick <jbudorick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#659173}
parent 59bd5d3f
...@@ -20,14 +20,14 @@ class CheckDepsTest(unittest.TestCase): ...@@ -20,14 +20,14 @@ class CheckDepsTest(unittest.TestCase):
def setUp(self): def setUp(self):
self.deps_checker = checkdeps.DepsChecker( self.deps_checker = checkdeps.DepsChecker(
being_tested=True, being_tested=True,
base_directory=os.path.join(os.path.dirname(__file__), os.path.pardir)) base_directory=os.path.join(os.path.dirname(__file__), '..', '..'))
def ImplTestRegularCheckDepsRun(self, ignore_temp_rules, skip_tests): def ImplTestRegularCheckDepsRun(self, ignore_temp_rules, skip_tests):
self.deps_checker._ignore_temp_rules = ignore_temp_rules self.deps_checker._ignore_temp_rules = ignore_temp_rules
self.deps_checker._skip_tests = skip_tests self.deps_checker._skip_tests = skip_tests
self.deps_checker.CheckDirectory( self.deps_checker.CheckDirectory(
os.path.join(self.deps_checker.base_directory, os.path.join(self.deps_checker.base_directory,
'checkdeps/testdata')) 'buildtools/checkdeps/testdata'))
problems = self.deps_checker.results_formatter.GetResults() problems = self.deps_checker.results_formatter.GetResults()
if skip_tests: if skip_tests:
...@@ -56,13 +56,13 @@ class CheckDepsTest(unittest.TestCase): ...@@ -56,13 +56,13 @@ class CheckDepsTest(unittest.TestCase):
if ignore_temp_rules: if ignore_temp_rules:
VerifySubstringsInProblems('testdata/allowed/test.h', VerifySubstringsInProblems('testdata/allowed/test.h',
['-checkdeps/testdata/disallowed', ['-buildtools/checkdeps/testdata/disallowed',
'temporarily_allowed.h', 'temporarily_allowed.h',
'-third_party/explicitly_disallowed', '-third_party/explicitly_disallowed',
'Because of no rule applying']) 'Because of no rule applying'])
else: else:
VerifySubstringsInProblems('testdata/allowed/test.h', VerifySubstringsInProblems('testdata/allowed/test.h',
['-checkdeps/testdata/disallowed', ['-buildtools/checkdeps/testdata/disallowed',
'-third_party/explicitly_disallowed', '-third_party/explicitly_disallowed',
'Because of no rule applying']) 'Because of no rule applying'])
...@@ -80,7 +80,7 @@ class CheckDepsTest(unittest.TestCase): ...@@ -80,7 +80,7 @@ class CheckDepsTest(unittest.TestCase):
if not skip_tests: if not skip_tests:
VerifySubstringsInProblems('allowed/not_a_test.cc', VerifySubstringsInProblems('allowed/not_a_test.cc',
['-checkdeps/testdata/disallowed']) ['-buildtools/checkdeps/testdata/disallowed'])
def testRegularCheckDepsRun(self): def testRegularCheckDepsRun(self):
self.ImplTestRegularCheckDepsRun(False, False) self.ImplTestRegularCheckDepsRun(False, False)
...@@ -99,7 +99,7 @@ class CheckDepsTest(unittest.TestCase): ...@@ -99,7 +99,7 @@ class CheckDepsTest(unittest.TestCase):
self.deps_checker.results_formatter = results.CountViolationsFormatter() self.deps_checker.results_formatter = results.CountViolationsFormatter()
self.deps_checker.CheckDirectory( self.deps_checker.CheckDirectory(
os.path.join(self.deps_checker.base_directory, os.path.join(self.deps_checker.base_directory,
'checkdeps/testdata')) 'buildtools/checkdeps/testdata'))
return self.deps_checker.results_formatter.GetResults() return self.deps_checker.results_formatter.GetResults()
def testCountViolations(self): def testCountViolations(self):
...@@ -111,17 +111,17 @@ class CheckDepsTest(unittest.TestCase): ...@@ -111,17 +111,17 @@ class CheckDepsTest(unittest.TestCase):
def testCountViolationsWithRelativePath(self): def testCountViolationsWithRelativePath(self):
self.deps_checker.results_formatter = results.CountViolationsFormatter() self.deps_checker.results_formatter = results.CountViolationsFormatter()
self.deps_checker.CheckDirectory( self.deps_checker.CheckDirectory(
os.path.join('checkdeps', 'testdata', 'allowed')) os.path.join('buildtools', 'checkdeps', 'testdata', 'allowed'))
self.failUnlessEqual('4', self.deps_checker.results_formatter.GetResults()) self.failUnlessEqual('4', self.deps_checker.results_formatter.GetResults())
def testTempRulesGenerator(self): def testTempRulesGenerator(self):
self.deps_checker.results_formatter = results.TemporaryRulesFormatter() self.deps_checker.results_formatter = results.TemporaryRulesFormatter()
self.deps_checker.CheckDirectory( self.deps_checker.CheckDirectory(
os.path.join(self.deps_checker.base_directory, os.path.join(self.deps_checker.base_directory,
'checkdeps/testdata/allowed')) 'buildtools/checkdeps/testdata/allowed'))
temp_rules = self.deps_checker.results_formatter.GetResults() temp_rules = self.deps_checker.results_formatter.GetResults()
expected = [u' "!checkdeps/testdata/disallowed/bad.h",', expected = [u' "!buildtools/checkdeps/testdata/disallowed/bad.h",',
u' "!checkdeps/testdata/disallowed/teststuff/bad.h",', u' "!buildtools/checkdeps/testdata/disallowed/teststuff/bad.h",',
u' "!third_party/explicitly_disallowed/bad.h",', u' "!third_party/explicitly_disallowed/bad.h",',
u' "!third_party/no_rule/bad.h",'] u' "!third_party/no_rule/bad.h",']
self.failUnlessEqual(expected, temp_rules) self.failUnlessEqual(expected, temp_rules)
...@@ -134,36 +134,36 @@ class CheckDepsTest(unittest.TestCase): ...@@ -134,36 +134,36 @@ class CheckDepsTest(unittest.TestCase):
def testCheckAddedIncludesAllGood(self): def testCheckAddedIncludesAllGood(self):
problems = self.deps_checker.CheckAddedCppIncludes( problems = self.deps_checker.CheckAddedCppIncludes(
[['checkdeps/testdata/allowed/test.cc', [['buildtools/checkdeps/testdata/allowed/test.cc',
['#include "checkdeps/testdata/allowed/good.h"', ['#include "buildtools/checkdeps/testdata/allowed/good.h"',
'#include "checkdeps/testdata/disallowed/allowed/good.h"'] '#include "buildtools/checkdeps/testdata/disallowed/allowed/good.h"']
]]) ]])
self.failIf(problems) self.failIf(problems)
def testCheckAddedIncludesManyGarbageLines(self): def testCheckAddedIncludesManyGarbageLines(self):
garbage_lines = ["My name is Sam%d\n" % num for num in range(50)] garbage_lines = ["My name is Sam%d\n" % num for num in range(50)]
problems = self.deps_checker.CheckAddedCppIncludes( problems = self.deps_checker.CheckAddedCppIncludes(
[['checkdeps/testdata/allowed/test.cc', garbage_lines]]) [['buildtools/checkdeps/testdata/allowed/test.cc', garbage_lines]])
self.failIf(problems) self.failIf(problems)
def testCheckAddedIncludesNoRule(self): def testCheckAddedIncludesNoRule(self):
problems = self.deps_checker.CheckAddedCppIncludes( problems = self.deps_checker.CheckAddedCppIncludes(
[['checkdeps/testdata/allowed/test.cc', [['buildtools/checkdeps/testdata/allowed/test.cc',
['#include "no_rule_for_this/nogood.h"'] ['#include "no_rule_for_this/nogood.h"']
]]) ]])
self.failUnless(problems) self.failUnless(problems)
def testCheckAddedIncludesSkippedDirectory(self): def testCheckAddedIncludesSkippedDirectory(self):
problems = self.deps_checker.CheckAddedCppIncludes( problems = self.deps_checker.CheckAddedCppIncludes(
[['checkdeps/testdata/disallowed/allowed/skipped/test.cc', [['buildtools/checkdeps/testdata/disallowed/allowed/skipped/test.cc',
['#include "whatever/whocares.h"'] ['#include "whatever/whocares.h"']
]]) ]])
self.failIf(problems) self.failIf(problems)
def testCheckAddedIncludesTempAllowed(self): def testCheckAddedIncludesTempAllowed(self):
problems = self.deps_checker.CheckAddedCppIncludes( problems = self.deps_checker.CheckAddedCppIncludes(
[['checkdeps/testdata/allowed/test.cc', [['buildtools/checkdeps/testdata/allowed/test.cc',
['#include "checkdeps/testdata/disallowed/temporarily_allowed.h"'] ['#include "buildtools/checkdeps/testdata/disallowed/temporarily_allowed.h"']
]]) ]])
self.failUnless(problems) self.failUnless(problems)
...@@ -179,11 +179,11 @@ class CheckDepsTest(unittest.TestCase): ...@@ -179,11 +179,11 @@ class CheckDepsTest(unittest.TestCase):
# once the bug is fixed, but succeed (with a temporary allowance) # once the bug is fixed, but succeed (with a temporary allowance)
# if the bug is in place. # if the bug is in place.
problems = self.deps_checker.CheckAddedCppIncludes( problems = self.deps_checker.CheckAddedCppIncludes(
[['checkdeps/testdata/allowed/test.cc', [['buildtools/checkdeps/testdata/allowed/test.cc',
['#include "/checkdeps/testdata/disallowed/temporarily_allowed.h"'] ['#include "buildtools/checkdeps/testdata/disallowed/temporarily_allowed.h"']
], ],
['checkdeps/testdata/disallowed/foo_unittest.cc', ['buildtools/checkdeps/testdata/disallowed/foo_unittest.cc',
['#include "checkdeps/testdata/bongo/temp_allowed_for_tests.h"'] ['#include "buildtools/checkdeps/testdata/bongo/temp_allowed_for_tests.h"']
]]) ]])
# With the bug in place, there would be two problems reported, and # With the bug in place, there would be two problems reported, and
# the second would be for foo_unittest.cc. # the second would be for foo_unittest.cc.
...@@ -192,7 +192,7 @@ class CheckDepsTest(unittest.TestCase): ...@@ -192,7 +192,7 @@ class CheckDepsTest(unittest.TestCase):
def testTraversalIsOrdered(self): def testTraversalIsOrdered(self):
dirs_traversed = [] dirs_traversed = []
for rules, filenames in self.deps_checker.GetAllRulesAndFiles(): for rules, filenames in self.deps_checker.GetAllRulesAndFiles(dir_name='buildtools'):
self.failUnlessEqual(type(filenames), list) self.failUnlessEqual(type(filenames), list)
self.failUnlessEqual(filenames, sorted(filenames)) self.failUnlessEqual(filenames, sorted(filenames))
if filenames: if filenames:
...@@ -203,38 +203,37 @@ class CheckDepsTest(unittest.TestCase): ...@@ -203,38 +203,37 @@ class CheckDepsTest(unittest.TestCase):
def testCheckPartialImportsAreAllowed(self): def testCheckPartialImportsAreAllowed(self):
problems = self.deps_checker.CheckAddedProtoImports( problems = self.deps_checker.CheckAddedProtoImports(
[['checkdeps/testdata/test.proto', [['buildtools/checkdeps/testdata/test.proto',
['import "no_rule_for_this/nogood.proto"'] ['import "no_rule_for_this/nogood.proto"']
]]) ]])
self.failIf(problems) self.failIf(problems)
def testCheckAddedFullPathImportsAllowed(self): def testCheckAddedFullPathImportsAllowed(self):
# NOTE: Base directory is buildtools.
problems = self.deps_checker.CheckAddedProtoImports( problems = self.deps_checker.CheckAddedProtoImports(
[['checkdeps/testdata/test.proto', [['buildtools/checkdeps/testdata/test.proto',
['import "checkdeps/testdata/allowed/good.proto"', ['import "buildtools/checkdeps/testdata/allowed/good.proto"',
'import "checkdeps/testdata/disallowed/sub_folder/good.proto"'] 'import "buildtools/checkdeps/testdata/disallowed/sub_folder/good.proto"']
]]) ]])
self.failIf(problems) self.failIf(problems)
def testCheckAddedFullPathImportsDisallowed(self): def testCheckAddedFullPathImportsDisallowed(self):
problems = self.deps_checker.CheckAddedProtoImports( problems = self.deps_checker.CheckAddedProtoImports(
[['checkdeps/testdata/test.proto', [['buildtools/checkdeps/testdata/test.proto',
['import "checkdeps/testdata/disallowed/bad.proto"'] ['import "buildtools/checkdeps/testdata/disallowed/bad.proto"']
]]) ]])
self.failUnless(problems) self.failUnless(problems)
def testCheckAddedFullPathImportsManyGarbageLines(self): def testCheckAddedFullPathImportsManyGarbageLines(self):
garbage_lines = ["My name is Sam%d\n" % num for num in range(50)] garbage_lines = ["My name is Sam%d\n" % num for num in range(50)]
problems = self.deps_checker.CheckAddedProtoImports( problems = self.deps_checker.CheckAddedProtoImports(
[['checkdeps/testdata/test.proto', [['buildtools/checkdeps/testdata/test.proto',
garbage_lines]]) garbage_lines]])
self.failIf(problems) self.failIf(problems)
def testCheckAddedIncludesNoRuleFullPath(self): def testCheckAddedIncludesNoRuleFullPath(self):
problems = self.deps_checker.CheckAddedProtoImports( problems = self.deps_checker.CheckAddedProtoImports(
[['checkdeps/testdata/test.proto', [['buildtools/checkdeps/testdata/test.proto',
['import "../tools/some.proto"'] ['import "tools/some.proto"']
]]) ]])
self.failUnless(problems) self.failUnless(problems)
......
...@@ -74,7 +74,7 @@ class JavaChecker(object): ...@@ -74,7 +74,7 @@ class JavaChecker(object):
return False return False
def _PrescanFiles(self, added_classset): def _PrescanFiles(self, added_classset):
for root, dirs, files in os.walk(self._base_directory): for root, dirs, files in os.walk(self._base_directory.encode('utf-8')):
# Skip unwanted subdirectories. TODO(husky): it would be better to do # Skip unwanted subdirectories. TODO(husky): it would be better to do
# this via the skip_child_includes flag in DEPS files. Maybe hoist this # this via the skip_child_includes flag in DEPS files. Maybe hoist this
# prescan logic into checkdeps.py itself? # prescan logic into checkdeps.py itself?
......
include_rules = [ include_rules = [
"-checkdeps/testdata/disallowed", "-buildtools/checkdeps/testdata/disallowed",
"+checkdeps/testdata/allowed", "+buildtools/checkdeps/testdata/allowed",
"-third_party/explicitly_disallowed", "-third_party/explicitly_disallowed",
] ]
skip_child_includes = [ skip_child_includes = [
......
include_rules = [ include_rules = [
"+checkdeps/testdata/disallowed/allowed", "+buildtools/checkdeps/testdata/disallowed/allowed",
"!checkdeps/testdata/disallowed/temporarily_allowed.h", "!buildtools/checkdeps/testdata/disallowed/temporarily_allowed.h",
"+third_party/allowed_may_use", "+third_party/allowed_may_use",
] ]
specific_include_rules = { specific_include_rules = {
".*_unittest\.cc": [ ".*_unittest\.cc": [
"+checkdeps/testdata/disallowed/teststuff", "+buildtools/checkdeps/testdata/disallowed/teststuff",
"!checkdeps/testdata/bongo/temp_allowed_for_tests.h", "!buildtools/checkdeps/testdata/bongo/temp_allowed_for_tests.h",
] ]
} }
...@@ -2,4 +2,4 @@ ...@@ -2,4 +2,4 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "checkdeps/testdata/disallowed/teststuff/good.h" #include "buildtools/checkdeps/testdata/disallowed/teststuff/good.h"
...@@ -2,4 +2,4 @@ ...@@ -2,4 +2,4 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "checkdeps/testdata/disallowed/teststuff/bad.h" #include "buildtools/checkdeps/testdata/disallowed/teststuff/bad.h"
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "checkdeps/testdata/allowed/good.h" #include "buildtools/checkdeps/testdata/allowed/good.h"
#include "checkdeps/testdata/disallowed/bad.h" #include "buildtools/checkdeps/testdata/disallowed/bad.h"
#include "checkdeps/testdata/disallowed/allowed/good.h" #include "buildtools/checkdeps/testdata/disallowed/allowed/good.h"
#include "checkdeps/testdata/disallowed/temporarily_allowed.h" #include "buildtools/checkdeps/testdata/disallowed/temporarily_allowed.h"
#include "third_party/explicitly_disallowed/bad.h" #include "third_party/explicitly_disallowed/bad.h"
#include "third_party/allowed_may_use/good.h" #include "third_party/allowed_may_use/good.h"
#include "third_party/no_rule/bad.h" #include "third_party/no_rule/bad.h"
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "checkdeps/testdata/allowed/good.h" #include "buildtools/checkdeps/testdata/allowed/good.h"
// Always allowed to include self and parents. // Always allowed to include self and parents.
#include "checkdeps/testdata/disallowed/good.h" #include "buildtools/checkdeps/testdata/disallowed/good.h"
#include "checkdeps/testdata/disallowed/allowed/good.h" #include "buildtools/checkdeps/testdata/disallowed/allowed/good.h"
#include "third_party/explicitly_disallowed/bad.h" #include "third_party/explicitly_disallowed/bad.h"
#include "third_party/allowed_may_use/bad.h" #include "third_party/allowed_may_use/bad.h"
#include "third_party/no_rule/bad.h" #include "third_party/no_rule/bad.h"
...@@ -7,4 +7,4 @@ ...@@ -7,4 +7,4 @@
// bug where we were taking shallow copies of rules when generating // bug where we were taking shallow copies of rules when generating
// rules for subdirectories, so all rule objects were getting the same // rules for subdirectories, so all rule objects were getting the same
// dictionary for specific rules. // dictionary for specific rules.
#include "checkdeps/testdata/disallowed/temp_allowed_for_tests.h" #include "buildtools/checkdeps/testdata/disallowed/temp_allowed_for_tests.h"
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "checkdeps/testdata/allowed/good.h" #include "buildtools/checkdeps/testdata/allowed/good.h"
// Always allowed to include self. // Always allowed to include self.
#include "checkdeps/testdata/disallowed/good.h" #include "buildtools/checkdeps/testdata/disallowed/good.h"
#include "checkdeps/testdata/disallowed/allowed/good.h" #include "buildtools/checkdeps/testdata/disallowed/allowed/good.h"
#include "third_party/explicitly_disallowed/bad.h" #include "third_party/explicitly_disallowed/bad.h"
// Only allowed for code under allowed/. // Only allowed for code under allowed/.
#include "third_party/allowed_may_use/bad.h" #include "third_party/allowed_may_use/bad.h"
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
// found in the LICENSE file. // found in the LICENSE file.
// Disallowed because noparent removes the +allowed from the parent dir. // Disallowed because noparent removes the +allowed from the parent dir.
#include "checkdeps/testdata/allowed/bad.h" #include "buildtools/checkdeps/testdata/allowed/bad.h"
// Same-directory includes are still allowed. // Same-directory includes are still allowed.
#include "checkdeps/testdata/noparent/self.h" #include "buildtools/checkdeps/testdata/noparent/self.h"
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment