如何监视linux二进制文件以测试shell脚本

时间:2015-06-16 10:06:25

标签: linux bash shell testing spy

抱歉,如果这是重复的,我不知道该搜索什么...

我的用例更复杂,但可以缩小到以下问题:

我想运行一个bash脚本,它调用各种二进制文件,例如:grep。 我想断言用正确的参数调用二进制文件。 这些断言应该是自动化测试的一部分,我不想手动开始检查。 这应该进入ci周期。

有一些标准的方法吗?

如果没有,我想移动我希望断言的所有二进制文件,用一个首先记录参数的间谍替换它们,然后调用原始二进制文件,最后删除它自己并返回原始二进制文件。

这可行吗?有没有更好的方法解决这个问题?

1 个答案:

答案 0 :(得分:0)

只是一个想法,我没有看到这个,但是:

除非您使用完整路径来调用这些二进制文件,否则您可以创建这些库的模拟,例如,在项目bin/目录中,并使该目录成为$PATH中的第一个。< / p>

export PATH="$PWD/bin:$PATH"

例如,要模拟grep,您可以执行以下操作:

增加计数的帮助程序可执行文件:

#!/bin/bash
#Usage: increment FILE_WITH_A_NUMBER
touch "$1" #To create it if it doesn't exist
NTIMES=$(( $(cat "$1") + 1 ))
echo "$NTIMES" > "$1"

模拟模板(在bin / grep中):

#!/bin/bash

increment ${BASH_SOURCE[0]}.log    #=> bin/grep.log

#Possibly do some other stuff, such as log parameters

#Return a mocked result
echo "fake match"

#Or delegate to the real thing:
exec /usr/bin/grep "$@"