我编写了一个函数,该函数可在调用时打开编辑器以编辑提交消息。看起来像这样:
def apply():
return subprocess.run(['git', 'commit', '-o', '--amend'])
此函数在另一个函数中被调用,我正在尝试为该函数编写单元测试。问题在于,该函数在调用时会打开编辑器。
因此,我想到了将提交消息作为在单元测试中被调用的子流程的输入。
def apply(msg=None):
if msg is None
return subprocess.run(['git', 'commit', '-o', '--amend'])
else:
return subprocess.run(['git', 'commit', '-o', '--amend'], input=msg)
但这给出了以下错误
Too many errors from stdintor to close the file...
Buffer written to /home/projects/xrides/.git/COMMIT_EDITMSG.save.7
error: There was a problem with the editor 'editor'.
答案 0 :(得分:0)
您的依赖项注入方法很好,您只需要在-m
命令行中添加--message
/ git
参数并传递消息即可(不像您那样通过STDIN) :
subprocess.run(['git', 'commit', '-o', '--amend', '--message', msg])
所以:
def apply(msg=None):
if msg is None
return subprocess.run(['git', 'commit', '-o', '--amend'])
else:
return subprocess.run(['git', 'commit', '-o', '--amend', '--message', msg])
另一种方法是模拟测试中的subprocess.run
对象,以便它返回一个可以检查或进一步验证的自定义值。