travisでtoxをつかうtips

さて、python3.4とか trove にも登録されたし、自分で書いてるライブラリは対応させてこうかなというところです。

で、各種バージョンでのテストを通すのに tox 使うのが最近の常識になってきていると思いますが、travisでciをしようとすると、.travis.ymlに同じようなことを書いてしまうわけです。 さらに、今のところ travis ではpython3.4が入っていない。

最近注目している次期PyPIの実装である warehouse をみていたら、python3.4でtravisでのテストを実行させている。 しかも、中でtoxを呼ぶようにしている。

python3.4は単にdeadsnakesからapt-getでインストールしているだけです。 tox呼ぶこと自体は簡単で、単に .travis.yml で script に tox を指定すればOK。 ただし、これだと tox ですべてのバージョンを一気にテストするわけで、どこかのバージョンでテストが失敗したのかわからなくなります。 あとなんかせっかくtravisでヴァージョンごととかできるのに、そうならなくなってるのが非常にださい。

warehouseの .travis.yml では、環境変数 TOXENV のmatrixを設定してありました。

ということで、これを利用して以下のような .travis.yml を作ってみました。

python: 3.3
env:
  matrix:
    - TOXENV=py26
    - TOXENV=py27
    - TOXENV=pypy
    - TOXENV=py33
    - TOXENV=py34

before_install:
  - sudo apt-get update
  - sudo apt-get install python3.4 python3.4-dev

install: pip install tox
script: tox

最初の python: 3.3 はtoxが動けばなんでもいいです。 そのあとのenv:matrix: で、toxでテストを実行したいenv名をそれぞれ環境変数TOXENVで指定、あとは toxインストールとtoxの実行を書いておけばOK。 今のところ WebDispatch に適用しています。

先端のことやってる人たちは細かいところでいちいちセンスがいいですね。

Comments !

blogroll

social