小编Nor*_*ill的帖子

鱼壳评估制作返回码

我正在尝试在Fish中编写一个运行Make配方的脚本,然后执行所有生成的二进制文件.我遇到的问题是,如果make命令遇到错误,我希望脚本退出并带有错误代码.每当我尝试捕获Make的返回值时,我最终会得到它的输出日志.

例如:

if test (make allUnitTests) -eq 0
    echo "success"
else
    echo "fail"
end
Run Code Online (Sandbox Code Playgroud)

返回错误,因为"test"正在查看构建过程,而不是终止条件.

我编写了脚本,以便在触发构建时,我可以轻松地让Jenkins运行所有单元测试.由于我无法使脚本的上述部分正常工作,我已经指示Jenkins将make命令作为单独的命令运行,这正是我想要的:停止整个构建过程而不执行任何二进制文件如果有什么不能编译.因此,在这一点上,我的问题更多的是学术练习,但我想将单元测试二进制文件添加到脚本中(并使其干净地终止于构建错误),以便任何人可能检查出来代码,并希望运行单元测试.

我玩了一点像:

if test (count (make allUnitTests | grep "Stop")) -eq 0
Run Code Online (Sandbox Code Playgroud)

但这有两个问题:

  1. 当我需要管道stderr时,我显然正在管道stdout.(想想看,如果我能检查是否有任何东西写入stderr,那么我根本不需要grep.)
  2. Grep正在吞咽所有传输到它的日志数据,我真的希望在控制台上看到它.

shell unit-testing makefile fish

1
推荐指数
1
解决办法
686
查看次数

标签 统计

fish ×1

makefile ×1

shell ×1

unit-testing ×1