def testWhitelistedUntouched(self): # When a change doesn't touch the whitelist file, any updated files # (except deleted) must be checked. The whitelist used for analysis # must be trimmed to the changed files subset. # # A_NW.cc - added, not whitelisted => check # A_W.cc - added, whitelisted => check, remain on the trimmed whitelist # D_NW.cc - deleted, not whitelisted => ignore # D_W.cc - deleted and whitelisted => remain on w/l # M_NW.cc - modified, not whitelisted => check # M_W.cc - modified and whitelisted => check, remain on w/l # NM_W.cc - not modified, whitelisted => trim from w/l # W - the whitelist file self.input_api.AffectedFiles = self.CreateAffectedFilesFunc([ 'A_NW.cc', 'A', 'A_W.cc', 'A', 'D_NW.cc', 'D', 'D_W.cc', 'D', 'M_NW.cc', 'M', 'M_W.cc', 'M' ]) self.mox.StubOutWithMock(copyright_scanner, '_GetWhitelistFileName') copyright_scanner._GetWhitelistFileName = lambda _: 'W' self.mox.StubOutWithMock(copyright_scanner, 'LoadWhitelistedFilesList') copyright_scanner.LoadWhitelistedFilesList = \ lambda _: ['A_W.cc', 'D_W.cc', 'M_W.cc', 'NM_W.cc'] self.mox.StubOutWithMock(copyright_scanner, '_DoScanAtPresubmit') copyright_scanner._DoScanAtPresubmit = self.CreateDoScanAtPresubmitFunc( ) self.mox.ReplayAll() copyright_scanner.ScanAtPresubmit(self.input_api, self.output_api) self.assertEqual(['A_W.cc', 'D_W.cc', 'M_W.cc'], self.GetWhitelistedFiles()) self.assertEqual(['A_NW.cc', 'A_W.cc', 'M_NW.cc', 'M_W.cc'], self.GetFilesToCheck())
def testWhitelistTouched(self): # When the whitelist file is touched by the change, all the files listed in # it, including deleted entries, must be re-checked. All modified files # (including the deleted ones) must be checked as well. The current contents # of the whitelist are used for analysis. # Whitelist addition or deletion are not considered. # # All the files from names testWhitelistedUntouched are re-used, but now # action for all of them is 'check' (except for the w/l file itself). # A_DW.cc - added, deleted from w/l => check # D_DW.cc - deleted from repo and w/l => check # M_DW.cc - modified, deleted from w/l => check self.input_api.AffectedFiles = self.CreateAffectedFilesFunc( ['A_DW.cc', 'A', 'A_NW.cc', 'A', 'A_W.cc', 'A', 'D_DW.cc', 'D', 'D_NW.cc', 'D', 'D_W.cc', 'D', 'M_DW.cc', 'M', 'M_NW.cc', 'M', 'M_W.cc', 'M', 'W', 'M']) self.mox.StubOutWithMock(copyright_scanner, '_GetWhitelistFileName') copyright_scanner._GetWhitelistFileName = lambda _: 'W' self.mox.StubOutWithMock(copyright_scanner, '_GetDeletedContents') def GetDeletedContentsStub(affected_file): self.assertEqual('W', affected_file.LocalPath()) return ['A_DW.cc', 'D_DW.cc', 'M_DW.cc'] copyright_scanner._GetDeletedContents = GetDeletedContentsStub self.mox.StubOutWithMock(copyright_scanner, 'LoadWhitelistedFilesList') copyright_scanner.LoadWhitelistedFilesList = \ lambda _: ['A_W.cc', 'D_W.cc', 'M_W.cc', 'NM_W.cc'] self.mox.StubOutWithMock(copyright_scanner, '_DoScanAtPresubmit') copyright_scanner._DoScanAtPresubmit = self.CreateDoScanAtPresubmitFunc() self.mox.ReplayAll() copyright_scanner.ScanAtPresubmit(self.input_api, self.output_api) self.assertEqual( ['A_W.cc', 'D_W.cc', 'M_W.cc', 'NM_W.cc'], self.GetWhitelistedFiles()) self.assertEqual( ['A_DW.cc', 'A_NW.cc', 'A_W.cc', 'D_DW.cc', 'D_NW.cc', 'D_W.cc', 'M_DW.cc', 'M_NW.cc', 'M_W.cc', 'NM_W.cc' ], self.GetFilesToCheck())