tox+pytest 仅在 travis 上给出代码为 -11 的调用错误

tox+pytest gives invocation error with code -11 only on travis

我有代码,当我在本地使用 tox 进行测试时,它通过了所有测试。但是,在 Travis 上,它给出了以下错误:

tests/test_cli.py::test_spin ERROR: InvocationError for command /home/travis/build/21cmfast/21cmFAST/.tox/py36/bin/py.test -vv --basetemp=/home/travis/build/21cmfast/21cmFAST/.tox/py36/tmp --cov py21cmfast (exited with code -11)
___________________________________ summary ____________________________________
ERROR:   py36: commands failed

The command "tox" exited with 1.

https://travis-ci.org/21cmfast/21cmFAST/jobs/545483077

的完整输出

有人知道代码-11 是什么意思吗?知道为什么它会在 travis 上失败而不是在本地失败吗?

可能需要注意的一件事...test_spin 是一个合理 密集函数。

错误隐藏在此处的硬编码路径中:

EXTERNALTABLES = ffi.new("char[]", path.join(path.expanduser("~"), ".21CMMC").encode())
global_params.external_table_path = EXTERNALTABLES

Travis 环境没有定义路径 ~/.21CMMC,因此从那里读取的尝试将失败,从而导致段错误。如果将回溯转储到 SIGSEGV 信号上,您将看到类似于此的输出:

tests/test_cli.py::test_spin T_RECFAST: Unable to open file: /home/travis/.21CMMC/External_tables/recfast_LCDM.dat for reading
Aborting
Called xion_RECFAST with z=35.000000, bailing out!
Called xion_RECFAST with z=35.000000, bailing out!
Fatal Python error: Segmentation fault
Current thread 0x00007fba4012d700 (most recent call first):
  File "/home/travis/build/21cmFAST/21cmFAST/.tox/py36/lib/python3.6/site-packages/py21cmfast/wrapper.py", line 765 in _call_c_func
  File "/home/travis/build/21cmFAST/21cmFAST/.tox/py36/lib/python3.6/site-packages/py21cmfast/wrapper.py", line 1641 in spin_temperature
  File "/home/travis/build/21cmFAST/21cmFAST/.tox/py36/lib/python3.6/site-packages/py21cmfast/cli.py", line 264 in spin
  File "/home/travis/build/21cmFAST/21cmFAST/.tox/py36/lib/python3.6/site-packages/click/decorators.py", line 17 in new_func
  File "/home/travis/build/21cmFAST/21cmFAST/.tox/py36/lib/python3.6/site-packages/click/core.py", line 555 in invoke
  File "/home/travis/build/21cmFAST/21cmFAST/.tox/py36/lib/python3.6/site-packages/click/core.py", line 956 in invoke
  File "/home/travis/build/21cmFAST/21cmFAST/.tox/py36/lib/python3.6/site-packages/click/core.py", line 1137 in invoke
  File "/home/travis/build/21cmFAST/21cmFAST/.tox/py36/lib/python3.6/site-packages/click/core.py", line 717 in main
  File "/home/travis/build/21cmFAST/21cmFAST/.tox/py36/lib/python3.6/site-packages/click/testing.py", line 326 in invoke
  File "/home/travis/build/21cmFAST/21cmFAST/tests/test_cli.py", line 116 in test_spin
  ...