这个问题比我的理解更重要。我正在使用Test::More
通过TAP::Harness
运行一些测试。
当测试运行时,它会返回退出代码和等待代码。
退出代码旨在根据Test::More
documentation在失败时返回非零值。
但等待代码表示什么?对于我正在运行的测试,它似乎是失败测试次数的倍数(256 * n)。
我的猜测是协议试图模仿Unix之间的父子进程关系,但我对等待代码一无所知。
答案 0 :(得分:3)
有关等待代码结构的详细信息,请see the notes on $?。正如您所推测的那样,Test :: More的退出代码乘以256,通常该值将是失败测试的数量。
等待代码有用的原因是,它可以让您看到由于信号而导致线束下的代码退出:
use Test::More tests => 2;
ok 1,"first";
kill 15,$$;
ok 1,"second";
将产生等待状态15.您的脚本是否从信号中退出取决于您正在做什么;我有一个系统必须调用一个不可靠的远程服务,当另一端死亡时会看到SIGPIPE错误。