繁体   English   中英

如何监视Linux二进制文件以测试Shell脚本

[英]how to spy on linux binaries for testing of shell scripts

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

我的用例比较复杂,但是可以缩小为以下问题:

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

有一些标准的方法可以做到这一点吗?

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

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

只是一个想法,我什么都没看到,但:

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

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 "$@"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM