| #!/usr/bin/env python |
| # Copyright (c) 2019 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import os.path |
| import subprocess |
| import sys |
| import unittest |
| |
| import PRESUBMIT |
| |
| file_dir_path = os.path.dirname(os.path.abspath(__file__)) |
| sys.path.insert(0, os.path.join(file_dir_path, '..', '..')) |
| from PRESUBMIT_test_mocks import MockFile, MockAffectedFile |
| from PRESUBMIT_test_mocks import MockInputApi, MockOutputApi |
| |
| _VALID_DEP = "+third_party/blink/public/platform/web_something.h," |
| _INVALID_DEP = "+third_party/blink/public/web/web_something.h," |
| _INVALID_DEP2 = "+third_party/blink/public/web/web_nothing.h," |
| |
| class BlinkPublicWebUnwantedDependenciesTest(unittest.TestCase): |
| def makeInputApi(self, files): |
| input_api = MockInputApi() |
| input_api.files = files |
| # Override os_path.exists because the presubmit uses the actual |
| # os.path.exists. |
| input_api.CreateMockFileInPath( |
| [x.LocalPath() for x in input_api.AffectedFiles(include_deletes=True)]) |
| return input_api |
| |
| INVALID_DEPS_MESSAGE = ('chrome/browser cannot depend on ' |
| 'blink/public/web interfaces. Use' |
| ' blink/public/common instead.') |
| |
| def testAdditionOfUnwantedDependency(self): |
| input_api = self.makeInputApi([ |
| MockAffectedFile('DEPS', [_INVALID_DEP], [], action='M')]) |
| warnings = PRESUBMIT._CheckUnwantedDependencies(input_api, MockOutputApi()) |
| self.assertEqual(1, len(warnings)) |
| self.assertEqual(self.INVALID_DEPS_MESSAGE, warnings[0].message) |
| self.assertEqual(1, len(warnings[0].items)) |
| |
| def testAdditionOfUnwantedDependencyInComment(self): |
| input_api = self.makeInputApi([ |
| MockAffectedFile('DEPS', ["#" + _INVALID_DEP], [], action='M')]) |
| warnings = PRESUBMIT._CheckUnwantedDependencies(input_api, MockOutputApi()) |
| self.assertEqual([], warnings) |
| |
| def testAdditionOfValidDependency(self): |
| input_api = self.makeInputApi([ |
| MockAffectedFile('DEPS', [_VALID_DEP], [], action='M')]) |
| warnings = PRESUBMIT._CheckUnwantedDependencies(input_api, MockOutputApi()) |
| self.assertEqual([], warnings) |
| |
| def testAdditionOfMultipleUnwantedDependency(self): |
| input_api = self.makeInputApi([ |
| MockAffectedFile('DEPS', [_INVALID_DEP, _INVALID_DEP2], action='M')]) |
| warnings = PRESUBMIT._CheckUnwantedDependencies(input_api, MockOutputApi()) |
| self.assertEqual(1, len(warnings)) |
| self.assertEqual(self.INVALID_DEPS_MESSAGE, warnings[0].message) |
| self.assertEqual(2, len(warnings[0].items)) |
| |
| input_api = self.makeInputApi([ |
| MockAffectedFile('DEPS', [_INVALID_DEP, _VALID_DEP], [], action='M')]) |
| warnings = PRESUBMIT._CheckUnwantedDependencies(input_api, MockOutputApi()) |
| self.assertEqual(1, len(warnings)) |
| self.assertEqual(self.INVALID_DEPS_MESSAGE, warnings[0].message) |
| self.assertEqual(1, len(warnings[0].items)) |
| |
| def testRemovalOfUnwantedDependency(self): |
| input_api = self.makeInputApi([ |
| MockAffectedFile('DEPS', [], [_INVALID_DEP], action='M')]) |
| warnings = PRESUBMIT._CheckUnwantedDependencies(input_api, MockOutputApi()) |
| self.assertEqual([], warnings) |
| |
| def testRemovalOfValidDependency(self): |
| input_api = self.makeInputApi([ |
| MockAffectedFile('DEPS', [], [_VALID_DEP], action='M')]) |
| warnings = PRESUBMIT._CheckUnwantedDependencies(input_api, MockOutputApi()) |
| self.assertEqual([], warnings) |
| |
| if __name__ == '__main__': |
| unittest.main() |