1*3ac0a46fSAndroid Build Coastguard Worker# Copyright 2020 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker# found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Workerimport re 6*3ac0a46fSAndroid Build Coastguard Worker 7*3ac0a46fSAndroid Build Coastguard Worker 8*3ac0a46fSAndroid Build Coastguard Workerclass MockInputApi(object): 9*3ac0a46fSAndroid Build Coastguard Worker """Mock class for the InputApi class. 10*3ac0a46fSAndroid Build Coastguard Worker 11*3ac0a46fSAndroid Build Coastguard Worker This class can be used for unittests for presubmit by initializing the files 12*3ac0a46fSAndroid Build Coastguard Worker attribute as the list of changed files. 13*3ac0a46fSAndroid Build Coastguard Worker """ 14*3ac0a46fSAndroid Build Coastguard Worker 15*3ac0a46fSAndroid Build Coastguard Worker def __init__(self): 16*3ac0a46fSAndroid Build Coastguard Worker self.files = [] 17*3ac0a46fSAndroid Build Coastguard Worker self.re = re 18*3ac0a46fSAndroid Build Coastguard Worker 19*3ac0a46fSAndroid Build Coastguard Worker def AffectedFiles(self, file_filter=None, include_deletes=False): 20*3ac0a46fSAndroid Build Coastguard Worker # pylint: disable=unused-argument 21*3ac0a46fSAndroid Build Coastguard Worker return self.files 22*3ac0a46fSAndroid Build Coastguard Worker 23*3ac0a46fSAndroid Build Coastguard Worker 24*3ac0a46fSAndroid Build Coastguard Workerclass MockOutputApi(object): 25*3ac0a46fSAndroid Build Coastguard Worker """Mock class for the OutputApi class. 26*3ac0a46fSAndroid Build Coastguard Worker 27*3ac0a46fSAndroid Build Coastguard Worker An instance of this class can be passed to presubmit unittests for outputting 28*3ac0a46fSAndroid Build Coastguard Worker various types of results. 29*3ac0a46fSAndroid Build Coastguard Worker """ 30*3ac0a46fSAndroid Build Coastguard Worker 31*3ac0a46fSAndroid Build Coastguard Worker class PresubmitResult(object): 32*3ac0a46fSAndroid Build Coastguard Worker 33*3ac0a46fSAndroid Build Coastguard Worker def __init__(self, message, items=None, long_text=''): 34*3ac0a46fSAndroid Build Coastguard Worker self.message = message 35*3ac0a46fSAndroid Build Coastguard Worker self.items = items 36*3ac0a46fSAndroid Build Coastguard Worker self.long_text = long_text 37*3ac0a46fSAndroid Build Coastguard Worker 38*3ac0a46fSAndroid Build Coastguard Worker def __repr__(self): 39*3ac0a46fSAndroid Build Coastguard Worker return self.message 40*3ac0a46fSAndroid Build Coastguard Worker 41*3ac0a46fSAndroid Build Coastguard Worker class PresubmitError(PresubmitResult): 42*3ac0a46fSAndroid Build Coastguard Worker 43*3ac0a46fSAndroid Build Coastguard Worker def __init__(self, message, items=None, long_text=''): 44*3ac0a46fSAndroid Build Coastguard Worker MockOutputApi.PresubmitResult.__init__(self, message, items, long_text) 45*3ac0a46fSAndroid Build Coastguard Worker self.type = 'error' 46*3ac0a46fSAndroid Build Coastguard Worker 47*3ac0a46fSAndroid Build Coastguard Worker class PresubmitPromptWarning(PresubmitResult): 48*3ac0a46fSAndroid Build Coastguard Worker 49*3ac0a46fSAndroid Build Coastguard Worker def __init__(self, message, items=None, long_text=''): 50*3ac0a46fSAndroid Build Coastguard Worker MockOutputApi.PresubmitResult.__init__(self, message, items, long_text) 51*3ac0a46fSAndroid Build Coastguard Worker self.type = 'warning' 52*3ac0a46fSAndroid Build Coastguard Worker 53*3ac0a46fSAndroid Build Coastguard Worker 54*3ac0a46fSAndroid Build Coastguard Workerclass MockFile(object): 55*3ac0a46fSAndroid Build Coastguard Worker """Mock class for the File class. 56*3ac0a46fSAndroid Build Coastguard Worker 57*3ac0a46fSAndroid Build Coastguard Worker This class can be used to form the mock list of changed files in 58*3ac0a46fSAndroid Build Coastguard Worker MockInputApi for presubmit unittests. 59*3ac0a46fSAndroid Build Coastguard Worker """ 60*3ac0a46fSAndroid Build Coastguard Worker 61*3ac0a46fSAndroid Build Coastguard Worker def __init__(self, 62*3ac0a46fSAndroid Build Coastguard Worker local_path, 63*3ac0a46fSAndroid Build Coastguard Worker new_contents=None, 64*3ac0a46fSAndroid Build Coastguard Worker old_contents=None, 65*3ac0a46fSAndroid Build Coastguard Worker action='A'): 66*3ac0a46fSAndroid Build Coastguard Worker self._local_path = local_path 67*3ac0a46fSAndroid Build Coastguard Worker if new_contents is None: 68*3ac0a46fSAndroid Build Coastguard Worker new_contents = [] 69*3ac0a46fSAndroid Build Coastguard Worker self._new_contents = new_contents 70*3ac0a46fSAndroid Build Coastguard Worker self._changed_contents = [(i + 1, l) for i, l in enumerate(new_contents)] 71*3ac0a46fSAndroid Build Coastguard Worker self._action = action 72*3ac0a46fSAndroid Build Coastguard Worker self._old_contents = old_contents 73*3ac0a46fSAndroid Build Coastguard Worker 74*3ac0a46fSAndroid Build Coastguard Worker def ChangedContents(self): 75*3ac0a46fSAndroid Build Coastguard Worker return self._changed_contents 76*3ac0a46fSAndroid Build Coastguard Worker 77*3ac0a46fSAndroid Build Coastguard Worker def LocalPath(self): 78*3ac0a46fSAndroid Build Coastguard Worker return self._local_path 79