Move presubmit_canned_checks tests under tests/ and fix

Only tests under tests/ are run on presubmit, so
presubmit_canned_checks_test.py is not run. Move these there and fix
them.

Bug: 1385693
Change-Id: Ib01a816b0a81919722ea49e5551010251c0e3287
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4038514
Commit-Queue: Gavin Mak <gavinmak@google.com>
Reviewed-by: Josip Sokcevic <sokcevic@chromium.org>
Reviewed-by: Aravind Vasudevan <aravindvasudev@google.com>
changes/14/4038514/13
Gavin Mak 2 years ago committed by LUCI CQ
parent 0115386a26
commit d83509c0c3

@ -1957,7 +1957,7 @@ _NON_INCLUSIVE_TERMS = (
# ...' will not. This may require some tweaking to catch these cases # ...' will not. This may require some tweaking to catch these cases
# without triggering a lot of false positives. Leaving it naive and # without triggering a lot of false positives. Leaving it naive and
# less matchy for now. # less matchy for now.
r'/\b(?i)((black|white)list|slave)\b', # nocheck r'/(?i)\b((black|white)list|slave)\b', # nocheck
( (
'Please don\'t use blacklist, whitelist, ' # nocheck 'Please don\'t use blacklist, whitelist, ' # nocheck
'or slave in your', # nocheck 'or slave in your', # nocheck
@ -1966,7 +1966,7 @@ _NON_INCLUSIVE_TERMS = (
'at the end of the offending line will bypass this PRESUBMIT error', 'at the end of the offending line will bypass this PRESUBMIT error',
'but avoid using this whenever possible. Reach out to', 'but avoid using this whenever possible. Reach out to',
'community@chromium.org if you have questions'), 'community@chromium.org if you have questions'),
True),) True), )
def _GetMessageForMatchingTerm(input_api, affected_file, line_number, line, def _GetMessageForMatchingTerm(input_api, affected_file, line_number, line,

@ -1,279 +0,0 @@
#!/usr/bin/env python3
# Copyright (c) 2021 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 unittest
from presubmit_canned_checks_test_mocks import MockFile, MockAffectedFile
from presubmit_canned_checks_test_mocks import MockInputApi, MockOutputApi
from presubmit_canned_checks_test_mocks import MockChange
import presubmit_canned_checks
class InclusiveLanguageCheckTest(unittest.TestCase):
def testBlockedTerms(self):
input_api = MockInputApi()
input_api.change.RepositoryRoot = lambda: ''
input_api.presubmit_local_path = ''
input_api.files = [
MockFile('infra/inclusive_language_presubmit_exempt_dirs.txt', [
'some/dir 2 1',
'some/other/dir 2 1',
]),
MockFile('some/ios/file.mm',
['TEST(SomeClassTest, SomeInteraction, blacklist) {', # nocheck
'}']),
MockFile('some/mac/file.mm',
['TEST(SomeClassTest, SomeInteraction, BlackList) {', # nocheck
'}']),
MockFile('another/ios_file.mm',
['class SomeTest : public testing::Test blocklist {};']),
MockFile('some/ios/file_egtest.mm',
['- (void)testSomething { V(whitelist); }']), # nocheck
MockFile('some/ios/file_unittest.mm',
['TEST_F(SomeTest, Whitelist) { V(allowlist); }']), # nocheck
MockFile('some/doc/file.md',
['# Title',
'Some markdown text includes master.', # nocheck
]),
MockFile('some/doc/ok_file.md',
['# Title',
# This link contains a '//' which the matcher thinks is a
# C-style comment, and the 'master' term appears after the
# '//' in the URL, so it gets ignored as a side-effect.
'[Ignored](https://git/project.git/+/master/foo)', # nocheck
]),
MockFile('some/doc/branch_name_file.md',
['# Title',
# Matches appearing before `//` still trigger the check.
'[src/master](https://git/p.git/+/master/foo)', # nocheck
]),
MockFile('some/java/file/TestJavaDoc.java',
['/**',
' * This line contains the word master,', # nocheck
'* ignored because this is a comment. See {@link',
' * https://s/src/+/master:tools/README.md}', # nocheck
' */']),
MockFile('some/java/file/TestJava.java',
['class TestJava {',
' public String master;', # nocheck
'}']),
MockFile('some/html/file.html',
['<-- an existing html multiline comment',
'says "master" here', # nocheck
'in the comment -->'])
]
errors = presubmit_canned_checks.CheckInclusiveLanguage(input_api,
MockOutputApi())
self.assertEqual(1, len(errors))
self.assertTrue('some/ios/file.mm' in errors[0].message)
self.assertTrue('another/ios_file.mm' not in errors[0].message)
self.assertTrue('some/mac/file.mm' in errors[0].message)
self.assertTrue('some/ios/file_egtest.mm' in errors[0].message)
self.assertTrue('some/ios/file_unittest.mm' in errors[0].message)
self.assertTrue('some/doc/file.md' not in errors[0].message)
self.assertTrue('some/doc/ok_file.md' not in errors[0].message)
self.assertTrue('some/doc/branch_name_file.md' not in errors[0].message)
self.assertTrue('some/java/file/TestJavaDoc.java' not in errors[0].message)
self.assertTrue('some/java/file/TestJava.java' not in errors[0].message)
self.assertTrue('some/html/file.html' not in errors[0].message)
def testBlockedTermsWithLegacy(self):
input_api = MockInputApi()
input_api.change.RepositoryRoot = lambda: ''
input_api.presubmit_local_path = ''
input_api.files = [
MockFile('infra/inclusive_language_presubmit_exempt_dirs.txt', [
'some/ios 2 1',
'some/other/dir 2 1',
]),
MockFile('some/ios/file.mm',
['TEST(SomeClassTest, SomeInteraction, blacklist) {', # nocheck
'}']),
MockFile('some/ios/subdir/file.mm',
['TEST(SomeClassTest, SomeInteraction, blacklist) {', # nocheck
'}']),
MockFile('some/mac/file.mm',
['TEST(SomeClassTest, SomeInteraction, BlackList) {', # nocheck
'}']),
MockFile('another/ios_file.mm',
['class SomeTest : public testing::Test blocklist {};']),
MockFile('some/ios/file_egtest.mm',
['- (void)testSomething { V(whitelist); }']), # nocheck
MockFile('some/ios/file_unittest.mm',
['TEST_F(SomeTest, Whitelist) { V(allowlist); }']), # nocheck
]
errors = presubmit_canned_checks.CheckInclusiveLanguage(input_api,
MockOutputApi())
self.assertEqual(1, len(errors))
self.assertTrue('some/ios/file.mm' not in errors[0].message)
self.assertTrue('some/ios/subdir/file.mm' in errors[0].message)
self.assertTrue('another/ios_file.mm' not in errors[0].message)
self.assertTrue('some/mac/file.mm' in errors[0].message)
self.assertTrue('some/ios/file_egtest.mm' not in errors[0].message)
self.assertTrue('some/ios/file_unittest.mm' not in errors[0].message)
def testBlockedTermsWithNocheck(self):
input_api = MockInputApi()
input_api.change.RepositoryRoot = lambda: ''
input_api.presubmit_local_path = ''
input_api.files = [
MockFile('infra/inclusive_language_presubmit_exempt_dirs.txt', [
'some/dir 2 1',
'some/other/dir 2 1',
]),
MockFile('some/ios/file.mm',
['TEST(SomeClassTest, SomeInteraction, ',
' blacklist) { // nocheck', # nocheck
'}']),
MockFile('some/mac/file.mm',
['TEST(SomeClassTest, SomeInteraction, ',
'BlackList) { // nocheck', # nocheck
'}']),
MockFile('another/ios_file.mm',
['class SomeTest : public testing::Test blocklist {};']),
MockFile('some/ios/file_egtest.mm',
['- (void)testSomething { ',
'V(whitelist); } // nocheck']), # nocheck
MockFile('some/ios/file_unittest.mm',
['TEST_F(SomeTest, Whitelist) // nocheck', # nocheck
' { V(allowlist); }']),
MockFile('some/doc/file.md',
['Master in markdown <!-- nocheck -->', # nocheck
'## Subheading is okay']),
MockFile('some/java/file/TestJava.java',
['class TestJava {',
' public String master; // nocheck', # nocheck
'}']),
MockFile('some/html/file.html',
['<-- an existing html multiline comment',
'says "master" here --><!-- nocheck -->', # nocheck
'<!-- in the comment -->'])
]
errors = presubmit_canned_checks.CheckInclusiveLanguage(input_api,
MockOutputApi())
self.assertEqual(0, len(errors))
def testTopLevelDirExcempt(self):
input_api = MockInputApi()
input_api.change.RepositoryRoot = lambda: ''
input_api.presubmit_local_path = ''
input_api.files = [
MockFile('infra/inclusive_language_presubmit_exempt_dirs.txt', [
'. 2 1',
'some/other/dir 2 1',
]),
MockFile('presubmit_canned_checks_test.py',
['TEST(SomeClassTest, SomeInteraction, blacklist) {', # nocheck
'}']),
MockFile('presubmit_canned_checks.py',
['- (void)testSth { V(whitelist); } // nocheck']), # nocheck
]
errors = presubmit_canned_checks.CheckInclusiveLanguage(input_api,
MockOutputApi())
self.assertEqual(1, len(errors))
self.assertTrue('presubmit_canned_checks_test.py' in errors[0].message)
self.assertTrue('presubmit_canned_checks.py' not in errors[0].message)
def testChangeIsForSomeOtherRepo(self):
input_api = MockInputApi()
input_api.change.RepositoryRoot = lambda: 'v8'
input_api.presubmit_local_path = ''
input_api.files = [
MockFile('some_file', [
'# this is a blacklist', # nocheck
]),
]
errors = presubmit_canned_checks.CheckInclusiveLanguage(input_api,
MockOutputApi())
self.assertEqual([], errors)
class DescriptionChecksTest(unittest.TestCase):
def testCheckDescriptionUsesColonInsteadOfEquals(self):
input_api = MockInputApi()
input_api.change.RepositoryRoot = lambda: ''
input_api.presubmit_local_path = ''
# Verify error in case of the attempt to use "Bug=".
input_api.change = MockChange([], 'Broken description\nBug=123')
errors = presubmit_canned_checks.CheckDescriptionUsesColonInsteadOfEquals(
input_api, MockOutputApi())
self.assertEqual(1, len(errors))
self.assertTrue('Bug=' in errors[0].message)
# Verify error in case of the attempt to use "Fixed=".
input_api.change = MockChange([], 'Broken description\nFixed=123')
errors = presubmit_canned_checks.CheckDescriptionUsesColonInsteadOfEquals(
input_api, MockOutputApi())
self.assertEqual(1, len(errors))
self.assertTrue('Fixed=' in errors[0].message)
# Verify error in case of the attempt to use the lower case "bug=".
input_api.change = MockChange([], 'Broken description lowercase\nbug=123')
errors = presubmit_canned_checks.CheckDescriptionUsesColonInsteadOfEquals(
input_api, MockOutputApi())
self.assertEqual(1, len(errors))
self.assertTrue('Bug=' in errors[0].message)
# Verify no error in case of "Bug:"
input_api.change = MockChange([], 'Correct description\nBug: 123')
errors = presubmit_canned_checks.CheckDescriptionUsesColonInsteadOfEquals(
input_api, MockOutputApi())
self.assertEqual(0, len(errors))
# Verify no error in case of "Fixed:"
input_api.change = MockChange([], 'Correct description\nFixed: 123')
errors = presubmit_canned_checks.CheckDescriptionUsesColonInsteadOfEquals(
input_api, MockOutputApi())
self.assertEqual(0, len(errors))
class CheckUpdateOwnersFileReferences(unittest.TestCase):
def testShowsWarningIfDeleting(self):
input_api = MockInputApi()
input_api.files = [
MockFile('foo/OWNERS', [], [], action='D'),
]
results = presubmit_canned_checks.CheckUpdateOwnersFileReferences(
input_api, MockOutputApi())
self.assertEqual(1, len(results))
self.assertEqual('warning', results[0].type)
self.assertEqual(1, len(results[0].items))
def testShowsWarningIfMoving(self):
input_api = MockInputApi()
input_api.files = [
MockFile('new_directory/OWNERS', [], [], action='A'),
MockFile('old_directory/OWNERS', [], [], action='D'),
]
results = presubmit_canned_checks.CheckUpdateOwnersFileReferences(
input_api, MockOutputApi())
self.assertEqual(1, len(results))
self.assertEqual('warning', results[0].type)
self.assertEqual(1, len(results[0].items))
def testNoWarningIfAdding(self):
input_api = MockInputApi()
input_api.files = [
MockFile('foo/OWNERS', [], [], action='A'),
]
results = presubmit_canned_checks.CheckUpdateOwnersFileReferences(
input_api, MockOutputApi())
self.assertEqual(0, len(results))
if __name__ == '__main__':
unittest.main()

@ -72,6 +72,7 @@ class MockInputApi(object):
self.sys = sys self.sys = sys
self.files = [] self.files = []
self.is_committing = False self.is_committing = False
self.no_diffs = False
self.change = MockChange([]) self.change = MockChange([])
self.presubmit_local_path = os.path.dirname(__file__) self.presubmit_local_path = os.path.dirname(__file__)
self.logging = logging.getLogger('PRESUBMIT') self.logging = logging.getLogger('PRESUBMIT')

@ -0,0 +1,366 @@
#!/usr/bin/env python3
# Copyright (c) 2021 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
ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, ROOT_DIR)
from testing_support.presubmit_canned_checks_test_mocks import MockFile
from testing_support.presubmit_canned_checks_test_mocks import (MockInputApi,
MockOutputApi)
from testing_support.presubmit_canned_checks_test_mocks import MockChange
import presubmit_canned_checks
class InclusiveLanguageCheckTest(unittest.TestCase):
def testBlockedTerms(self):
input_api = MockInputApi()
input_api.change.RepositoryRoot = lambda: ''
input_api.presubmit_local_path = ''
input_api.files = [
MockFile(
os.path.normpath(
'infra/inclusive_language_presubmit_exempt_dirs.txt'), [
os.path.normpath('some/dir') + ' 2 1',
os.path.normpath('some/other/dir') + ' 2 1',
]),
MockFile(
os.path.normpath('some/ios/file.mm'),
[
'TEST(SomeClassTest, SomeInteraction, blacklist) {', # nocheck
'}'
]),
MockFile(
os.path.normpath('some/mac/file.mm'),
[
'TEST(SomeClassTest, SomeInteraction, BlackList) {', # nocheck
'}'
]),
MockFile(os.path.normpath('another/ios_file.mm'),
['class SomeTest : public testing::Test blocklist {};']),
MockFile(os.path.normpath('some/ios/file_egtest.mm'),
['- (void)testSomething { V(whitelist); }']), # nocheck
MockFile(os.path.normpath('some/ios/file_unittest.mm'),
['TEST_F(SomeTest, Whitelist) { V(allowlist); }']), # nocheck
MockFile(
os.path.normpath('some/doc/file.md'),
[
'# Title',
'Some markdown text includes master.', # nocheck
]),
MockFile(
os.path.normpath('some/doc/ok_file.md'),
[
'# Title',
# This link contains a '//' which the matcher thinks is a
# C-style comment, and the 'master' term appears after the
# '//' in the URL, so it gets ignored as a side-effect.
'[Ignored](https://git/project.git/+/master/foo)', # nocheck
]),
MockFile(
os.path.normpath('some/doc/branch_name_file.md'),
[
'# Title',
# Matches appearing before `//` still trigger the check.
'[src/master](https://git/p.git/+/master/foo)', # nocheck
]),
MockFile(
os.path.normpath('some/java/file/TestJavaDoc.java'),
[
'/**',
' * This line contains the word master,', # nocheck
'* ignored because this is a comment. See {@link',
' * https://s/src/+/master:tools/README.md}', # nocheck
' */'
]),
MockFile(
os.path.normpath('some/java/file/TestJava.java'),
[
'class TestJava {',
' public String master;', # nocheck
'}'
]),
MockFile(
os.path.normpath('some/html/file.html'),
[
'<-- an existing html multiline comment',
'says "master" here', # nocheck
'in the comment -->'
])
]
errors = presubmit_canned_checks.CheckInclusiveLanguage(
input_api, MockOutputApi())
self.assertEqual(1, len(errors))
self.assertTrue(os.path.normpath('some/ios/file.mm') in errors[0].message)
self.assertTrue(
os.path.normpath('another/ios_file.mm') not in errors[0].message)
self.assertTrue(os.path.normpath('some/mac/file.mm') in errors[0].message)
self.assertTrue(
os.path.normpath('some/ios/file_egtest.mm') in errors[0].message)
self.assertTrue(
os.path.normpath('some/ios/file_unittest.mm') in errors[0].message)
self.assertTrue(
os.path.normpath('some/doc/file.md') not in errors[0].message)
self.assertTrue(
os.path.normpath('some/doc/ok_file.md') not in errors[0].message)
self.assertTrue(
os.path.normpath('some/doc/branch_name_file.md') not in
errors[0].message)
self.assertTrue(
os.path.normpath('some/java/file/TestJavaDoc.java') not in
errors[0].message)
self.assertTrue(
os.path.normpath('some/java/file/TestJava.java') not in
errors[0].message)
self.assertTrue(
os.path.normpath('some/html/file.html') not in errors[0].message)
def testBlockedTermsWithLegacy(self):
input_api = MockInputApi()
input_api.change.RepositoryRoot = lambda: ''
input_api.presubmit_local_path = ''
input_api.files = [
MockFile(
os.path.normpath(
'infra/inclusive_language_presubmit_exempt_dirs.txt'), [
os.path.normpath('some/ios') + ' 2 1',
os.path.normpath('some/other/dir') + ' 2 1',
]),
MockFile(
os.path.normpath('some/ios/file.mm'),
[
'TEST(SomeClassTest, SomeInteraction, blacklist) {', # nocheck
'}'
]),
MockFile(
os.path.normpath('some/ios/subdir/file.mm'),
[
'TEST(SomeClassTest, SomeInteraction, blacklist) {', # nocheck
'}'
]),
MockFile(
os.path.normpath('some/mac/file.mm'),
[
'TEST(SomeClassTest, SomeInteraction, BlackList) {', # nocheck
'}'
]),
MockFile(os.path.normpath('another/ios_file.mm'),
['class SomeTest : public testing::Test blocklist {};']),
MockFile(os.path.normpath('some/ios/file_egtest.mm'),
['- (void)testSomething { V(whitelist); }']), # nocheck
MockFile(os.path.normpath('some/ios/file_unittest.mm'),
['TEST_F(SomeTest, Whitelist) { V(allowlist); }']), # nocheck
]
errors = presubmit_canned_checks.CheckInclusiveLanguage(
input_api, MockOutputApi())
self.assertEqual(1, len(errors))
self.assertTrue(
os.path.normpath('some/ios/file.mm') not in errors[0].message)
self.assertTrue(
os.path.normpath('some/ios/subdir/file.mm') in errors[0].message)
self.assertTrue(
os.path.normpath('another/ios_file.mm') not in errors[0].message)
self.assertTrue(os.path.normpath('some/mac/file.mm') in errors[0].message)
self.assertTrue(
os.path.normpath('some/ios/file_egtest.mm') not in errors[0].message)
self.assertTrue(
os.path.normpath('some/ios/file_unittest.mm') not in errors[0].message)
def testBlockedTermsWithNocheck(self):
input_api = MockInputApi()
input_api.change.RepositoryRoot = lambda: ''
input_api.presubmit_local_path = ''
input_api.files = [
MockFile(
os.path.normpath(
'infra/inclusive_language_presubmit_exempt_dirs.txt'), [
os.path.normpath('some/dir') + ' 2 1',
os.path.normpath('some/other/dir') + ' 2 1',
]),
MockFile(
os.path.normpath('some/ios/file.mm'),
[
'TEST(SomeClassTest, SomeInteraction, ',
' blacklist) { // nocheck', # nocheck
'}'
]),
MockFile(
os.path.normpath('some/mac/file.mm'),
[
'TEST(SomeClassTest, SomeInteraction, ',
'BlackList) { // nocheck', # nocheck
'}'
]),
MockFile(os.path.normpath('another/ios_file.mm'),
['class SomeTest : public testing::Test blocklist {};']),
MockFile(os.path.normpath('some/ios/file_egtest.mm'),
['- (void)testSomething { ', 'V(whitelist); } // nocheck'
]), # nocheck
MockFile(
os.path.normpath('some/ios/file_unittest.mm'),
[
'TEST_F(SomeTest, Whitelist) // nocheck', # nocheck
' { V(allowlist); }'
]),
MockFile(
os.path.normpath('some/doc/file.md'),
[
'Master in markdown <!-- nocheck -->', # nocheck
'## Subheading is okay'
]),
MockFile(
os.path.normpath('some/java/file/TestJava.java'),
[
'class TestJava {',
' public String master; // nocheck', # nocheck
'}'
]),
MockFile(
os.path.normpath('some/html/file.html'),
[
'<-- an existing html multiline comment',
'says "master" here --><!-- nocheck -->', # nocheck
'<!-- in the comment -->'
])
]
errors = presubmit_canned_checks.CheckInclusiveLanguage(
input_api, MockOutputApi())
self.assertEqual(0, len(errors))
def testTopLevelDirExcempt(self):
input_api = MockInputApi()
input_api.change.RepositoryRoot = lambda: ''
input_api.presubmit_local_path = ''
input_api.files = [
MockFile(
os.path.normpath(
'infra/inclusive_language_presubmit_exempt_dirs.txt'), [
os.path.normpath('.') + ' 2 1',
os.path.normpath('some/other/dir') + ' 2 1',
]),
MockFile(
os.path.normpath('presubmit_canned_checks_test.py'),
[
'TEST(SomeClassTest, SomeInteraction, blacklist) {', # nocheck
'}'
]),
MockFile(os.path.normpath('presubmit_canned_checks.py'),
['- (void)testSth { V(whitelist); } // nocheck']), # nocheck
]
errors = presubmit_canned_checks.CheckInclusiveLanguage(
input_api, MockOutputApi())
self.assertEqual(1, len(errors))
self.assertTrue(
os.path.normpath('presubmit_canned_checks_test.py') in
errors[0].message)
self.assertTrue(
os.path.normpath('presubmit_canned_checks.py') not in errors[0].message)
def testChangeIsForSomeOtherRepo(self):
input_api = MockInputApi()
input_api.change.RepositoryRoot = lambda: 'v8'
input_api.presubmit_local_path = ''
input_api.files = [
MockFile(
os.path.normpath('some_file'),
[
'# this is a blacklist', # nocheck
]),
]
errors = presubmit_canned_checks.CheckInclusiveLanguage(
input_api, MockOutputApi())
self.assertEqual([], errors)
class DescriptionChecksTest(unittest.TestCase):
def testCheckDescriptionUsesColonInsteadOfEquals(self):
input_api = MockInputApi()
input_api.change.RepositoryRoot = lambda: ''
input_api.presubmit_local_path = ''
# Verify error in case of the attempt to use "Bug=".
input_api.change = MockChange([], 'Broken description\nBug=123')
errors = presubmit_canned_checks.CheckDescriptionUsesColonInsteadOfEquals(
input_api, MockOutputApi())
self.assertEqual(1, len(errors))
self.assertTrue('Bug=' in errors[0].message)
# Verify error in case of the attempt to use "Fixed=".
input_api.change = MockChange([], 'Broken description\nFixed=123')
errors = presubmit_canned_checks.CheckDescriptionUsesColonInsteadOfEquals(
input_api, MockOutputApi())
self.assertEqual(1, len(errors))
self.assertTrue('Fixed=' in errors[0].message)
# Verify error in case of the attempt to use the lower case "bug=".
input_api.change = MockChange([], 'Broken description lowercase\nbug=123')
errors = presubmit_canned_checks.CheckDescriptionUsesColonInsteadOfEquals(
input_api, MockOutputApi())
self.assertEqual(1, len(errors))
self.assertTrue('Bug=' in errors[0].message)
# Verify no error in case of "Bug:"
input_api.change = MockChange([], 'Correct description\nBug: 123')
errors = presubmit_canned_checks.CheckDescriptionUsesColonInsteadOfEquals(
input_api, MockOutputApi())
self.assertEqual(0, len(errors))
# Verify no error in case of "Fixed:"
input_api.change = MockChange([], 'Correct description\nFixed: 123')
errors = presubmit_canned_checks.CheckDescriptionUsesColonInsteadOfEquals(
input_api, MockOutputApi())
self.assertEqual(0, len(errors))
class CheckUpdateOwnersFileReferences(unittest.TestCase):
def testShowsWarningIfDeleting(self):
input_api = MockInputApi()
input_api.files = [
MockFile(os.path.normpath('foo/OWNERS'), [], [], action='D'),
]
results = presubmit_canned_checks.CheckUpdateOwnersFileReferences(
input_api, MockOutputApi())
self.assertEqual(1, len(results))
self.assertEqual('warning', results[0].type)
self.assertEqual(1, len(results[0].items))
def testShowsWarningIfMoving(self):
input_api = MockInputApi()
input_api.files = [
MockFile(os.path.normpath('new_directory/OWNERS'), [], [], action='A'),
MockFile(os.path.normpath('old_directory/OWNERS'), [], [], action='D'),
]
results = presubmit_canned_checks.CheckUpdateOwnersFileReferences(
input_api, MockOutputApi())
self.assertEqual(1, len(results))
self.assertEqual('warning', results[0].type)
self.assertEqual(1, len(results[0].items))
def testNoWarningIfAdding(self):
input_api = MockInputApi()
input_api.files = [
MockFile(os.path.normpath('foo/OWNERS'), [], [], action='A'),
]
results = presubmit_canned_checks.CheckUpdateOwnersFileReferences(
input_api, MockOutputApi())
self.assertEqual(0, len(results))
if __name__ == '__main__':
unittest.main()
Loading…
Cancel
Save