@ -534,5 +534,104 @@ class CheckNoNewGitFilesAddedInDependenciesTest(unittest.TestCase):
self . assertEqual ( 0 , len ( results ) )
class CheckNewDEPSHooksHasRequiredReviewersTest ( unittest . TestCase ) :
def setUp ( self ) :
self . input_api = MockInputApi ( )
self . input_api . change = MockChange ( [ ] , issue = 123 )
self . input_api . files = [
MockAffectedFile ( ' DEPS ' , ' content ' ) ,
]
def test_no_gerrit_cl ( self ) :
self . input_api . change = MockChange ( [ ] , issue = None )
results = presubmit_canned_checks . CheckNewDEPSHooksHasRequiredReviewers (
self . input_api ,
MockOutputApi ( ) ,
required_reviewers = [ ' foo@chromium.org ' ] )
self . assertEqual ( 0 , len ( results ) )
def test_no_deps_file_change ( self ) :
self . input_api . files = [
MockAffectedFile ( ' foo.py ' , ' content ' ) ,
]
results = presubmit_canned_checks . CheckNewDEPSHooksHasRequiredReviewers (
self . input_api ,
MockOutputApi ( ) ,
required_reviewers = [ ' foo@chromium.org ' ] )
self . assertEqual ( 0 , len ( results ) )
def test_new_deps_hook ( self ) :
gerrit_mock = mock . Mock ( )
self . input_api . gerrit = gerrit_mock
test_cases = [
{
' name ' : ' no new hooks ' ,
' old_contents ' : [ ' hooks = [] ' ] ,
' new_contents ' : [ ' hooks = [] ' ] ,
' reviewers ' : [ ] ,
} ,
{
' name ' :
' add new hook but reviewer missing ' ,
' old_contents ' : [ ' hooks = [ { " name " : " old_hook " }] ' ] ,
' new_contents ' : [
' hooks = [ { " name " : " old_hook " }, { " name " : " new_hook " }, { " name " : " new_hook_2 " }] '
] ,
' reviewers ' : [ ] ,
' expected_error_msg ' :
' New DEPS hooks (new_hook, new_hook_2) are found. Please add '
' one of the following reviewers: \n * foo@chromium.org \n '
' * bar@chromium.org '
} ,
{
' name ' :
' add new hook and reviewer is already added ' ,
' old_contents ' : [ ' hooks = [ { " name " : " old_hook " }] ' ] ,
' new_contents ' : [
' hooks = [ { " name " : " old_hook " }, { " name " : " new_hook " }, { " name " : " new_hook_2 " }] '
] ,
' reviewers ' : [ ' foo@chromium.org ' ] ,
} ,
{
' name ' :
' change existing hook ' ,
' old_contents ' : [
' hooks = [ { " name " : " existing_hook " , " action " : [ " run " , " ./test.sh " ]}] '
] ,
' new_contents ' : [
' hooks = [ { " name " : " existing_hook " , " action " : [ " run " , " ./test_v2.sh " ]}] '
] ,
' reviewers ' : [ ] ,
} ,
{
' name ' :
' remove hook ' ,
' old_contents ' :
[ ' hooks = [ { " name " : " old_hook " }, { " name " : " hook_to_remove " }] ' ] ,
' new_contents ' : [ ' hooks = [ { " name " : " old_hook " }] ' ] ,
' reviewers ' : [ ] ,
} ,
]
for case in test_cases :
with self . subTest ( case_name = case [ ' name ' ] ) :
self . input_api . files = [
MockAffectedFile ( ' DEPS ' ,
old_contents = case [ ' old_contents ' ] ,
new_contents = case [ ' new_contents ' ] ) ,
]
gerrit_mock . GetChangeReviewers . return_value = case [ ' reviewers ' ]
results = presubmit_canned_checks . CheckNewDEPSHooksHasRequiredReviewers (
self . input_api ,
MockOutputApi ( ) ,
required_reviewers = [ ' foo@chromium.org ' , ' bar@chromium.org ' ] )
if ' expected_error_msg ' in case :
self . assertEqual ( 1 , len ( results ) )
self . assertEqual ( case [ ' expected_error_msg ' ] ,
results [ 0 ] . message )
else :
self . assertEqual ( 0 , len ( results ) )
if __name__ == ' __main__ ' :
unittest . main ( )