mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
patman: Provide a way to intercept commands for testing
Add a test point for the command module. This allows tests to emulate the execution of commands. This provides more control (since we can make the fake 'commands' do whatever we like), makes it faster to write tests since we don't need to set up as much environment, and speeds up test execution. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
48ba5856eb
commit
82012dd284
1 changed files with 20 additions and 0 deletions
|
@ -20,9 +20,25 @@ class CommandResult:
|
|||
def __init__(self):
|
||||
self.stdout = None
|
||||
self.stderr = None
|
||||
self.combined = None
|
||||
self.return_code = None
|
||||
self.exception = None
|
||||
|
||||
def __init__(self, stdout='', stderr='', combined='', return_code=0,
|
||||
exception=None):
|
||||
self.stdout = stdout
|
||||
self.stderr = stderr
|
||||
self.combined = combined
|
||||
self.return_code = return_code
|
||||
self.exception = exception
|
||||
|
||||
|
||||
# This permits interception of RunPipe for test purposes. If it is set to
|
||||
# a function, then that function is called with the pipe list being
|
||||
# executed. Otherwise, it is assumed to be a CommandResult object, and is
|
||||
# returned as the result for every RunPipe() call.
|
||||
# When this value is None, commands are executed as normal.
|
||||
test_result = None
|
||||
|
||||
def RunPipe(pipe_list, infile=None, outfile=None,
|
||||
capture=False, capture_stderr=False, oneline=False,
|
||||
|
@ -44,6 +60,10 @@ def RunPipe(pipe_list, infile=None, outfile=None,
|
|||
Returns:
|
||||
CommandResult object
|
||||
"""
|
||||
if test_result:
|
||||
if hasattr(test_result, '__call__'):
|
||||
return test_result(pipe_list=pipe_list)
|
||||
return test_result
|
||||
result = CommandResult()
|
||||
last_pipe = None
|
||||
pipeline = list(pipe_list)
|
||||
|
|
Loading…
Reference in a new issue