2016-07-28 11 views
0

私はa Travis CI build that is failingです。 py.testは間違ったモジュールをインポートしようとしているようですが、ローカルでは再現できません。私はそれが--full-traceを持っていると仮定すると、それがtools.lint.tests.test_lintlint.tests.test_lintではない、あなたがトレースバックで見ることができるようにインポートすることを期待する!これにより、ツールパッケージからの相対インポートを試みるときに、その下にエラーが発生します。py.testトラビスで間違ったモジュールをインポートしようとしましたが、ローカルではありません

短いトラックバックは次のとおりです。

___________________ ERROR collecting lint/tests/test_lint.py ___________________ 
.tox/py27/lib/python2.7/site-packages/py/_path/local.py:650: in pyimport 
    __import__(modname) 
lint/__init__.py:1: in <module> 
    from . import lint 
lint/lint.py:15: in <module> 
    from .. import localpaths 
E ValueError: Attempted relative import beyond toplevel package 

トップレベルのパッケージの名前はレポが入っているディレクトリだけで考えると、私はそれが見ても驚かないだろう異なる-が、私はまだだろうそこにそれを見ることを期待する!

答えて

0

トラビスのファイルを参照してください:/home/travis/build/w3c/wpt-tools/lint/tests/test_lint.py。お使いのコンピュータのtoolsという名前のディレクトリは、GitHubのリポジトリの名前に続いて、Travisのwpt-toolsと呼ばれます。

Vitally、wpt-toolsは有効なPythonパッケージ名ではありません。Pythonパッケージには名前にハイフンを含めることはできません。 (彼らはidentifierでなければなりません)。これにより、が含まれているにもかかわらず、py.testがパッケージではないと結論づけられます。したがって、インポートパスにはコードが含まれていないため、コードが相対インポートを試みるときに、レベルパッケージ。それは任意のハイフンが含まれないように、あなたが確立リポジトリをしている、明らかならば、これはおそらく望ましくないものの、おそらく単純なものは、リポジトリの名前を変更している

  • :ここソリューションのカップルがあります

  • はトラヴィスCIは、その名のようなものを使用して、before_installの開始時に、ハイフンを含まないディレクトリにリポジトリを移動/コピーすることによって、いくつかのディレクトリからコードを実行するには、Get:

    before_install: 
        - mv `pwd` /tmp/tools 
        - cd /tmp/tools 
    

    これですべてのインストールとそれ以降の手順が/tmp/toolsから実行され、すべてが期待どおりに実行されます。

    (あなたはPythonでos.getcwd()としてここにシンボリックリンクを使用することはできませんが、回避策を思わすると、まったく機能していないことをリードする、本当のパスを返し、パスからリンクを除去することができます。)

関連する問題