Travis 作业报告成功,即使测试失败(使用 tox)

Travis jobs reporting success, even though tests fail (using tox)

我正在特别关注以下版本:
https://travis-ci.org/ababic/wagtailmenus/builds/267670218

所有作业似乎都报告为成功,即使它们都有一个故意失败的测试,并且至少在过去 2 天里,同一项目的不同构建上都发生了这种情况。

除了从 'precise' 切换到 'trusty' 之外,我的 .travis.yml 中的配置有一段时间没有发生重大变化 - 并且将其改回似乎无法解决问题。

我的tox.ini也好久没换了

我已经尝试将 tox 强制转换为早期版本,但似乎没有帮助。

我知道这一定与 tox 或 Travis 有关,但我的知识仅此而已。任何帮助都将不胜感激。

我查看了该项目,这与 tox 或 travis 无关。问题是无论发生什么,在 tox 中使用的 runtests.py 总是 returns 且退出代码为 0。 Tox(以及扩展 Travis)需要一个退出代码 != 0 才能知道出了什么问题。

runtests.py中的相关代码:

[...]

def runtests():
    [...]
    try:
        execute_from_command_line(argv)
    except:
        pass

if __name__ == '__main__':
    runtests()

我没有检查 execute execute_from_command_line 究竟做了什么,但我认为它 returns 如果出现问题(或者如果出现问题则引发异常) returns 真的错误)。

因此我会像这样重写上面的代码:

import sys
[...]

def runtests():
    [...]
    return execute_from_command_line(argv)

if __name__ == '__main__':
    sys.exit(runtests())

通过这种方式,您可以通过 运行 必须报告测试结果的任何函数,并将其作为错误代码退出脚本,或者如果引发异常,则打印回溯并脚本也 returns 具有非零代码。