URL: https://linuxfr.org/users/serge_ss_paille/journaux/automatiser-les-tests-multi-plateforme-avec-sivart Title: Automatiser les tests multi-plateforme avec Sivart Authors: serge_sans_paille Date: 2015年02月18日T12:15:37+01:00 License: CC By-SA Tags: testing et debian Score: 13 Abat-jour' nal (variante médiocre sur un thème connu) Lors de mes développements en C/C++, j'ai parfois besoin de tester la portabilité du code que j'écris, entre différentes architectures, ou quand j'ai des dépendances sur différentes versions d'ubuntu/Debian/*BSD. Et pourquoi pas OSX. Alors d'habitude je teste sur ma machine, puis je lance une VM from scratch, je teste à la main, et c'est lourd et long, donc je ne le fais pas souvent/pas méthodiquement. J'utilise aussi travis-ci mais pour le multi-plateforme, c'est pas terrible. Et puis on m'a parlé de vagrant, alors j'ai joué avec puis j'ai commis https://pypi.python.org/pypi/sivart C'est rien qu'une moulinette qui lit les étapes d'installation dans un fichier de description et lance des VMs en fonction de la description, en faisant le produit cartésien des environnements demandés (par exemple pour tester avec différentes combinaisons de flags de compil). Par exemple pour tester Pythran — c'était mon cas d'utilisation à la base : ``` # here I describe my facets, something like base classes .compilers: env: - CXX=clang++-3.5 - CXX=g++ # here I share the install and test steps for all debian derivatives .deb: install: - apt-get update - apt-get install -y libboost-python-dev libgoogle-perftools-dev libgmp-dev libboost-dev git cmake python-ply python-networkx python-numpy clang - apt-get install -y python-pytest-xdist python-docutils python-setuptools - apt-get install -y clang-3.5 - apt-get install -y g++-4.8 g++ - apt-get install -y libgoogle-perftools-dev libgmp-dev git cmake make - easy_install colorlog pytest-pep8 - easy_install -U numpy script: - printf "[user]\ncxx=$CXX\n"> .pythranrc - git clone https://github.com/serge-sans-paille/pythran.git -b bugfix/more-robust-openmp-detection - cd pythran - python setup.py build - python setup.py install - py.test pythran/tests/test_cases.py # then I describe my base classes and the vagrant box to use ubuntu-trusty64: using: - .compilers - .deb box: ubuntu/trusty64 ubuntu-trusty32: using: - .compilers - .deb box: ubuntu/trusty32 jessy64: using: - .compilers - .deb box: thoughtbot/debian-jessie-64 ``` Alors voilà c'est tout bête, quelques heures de dév. au plus, mais ça m'a permis de trouver plusieurs bugs d'install et de portabilité pour mon projet chéri, alors je partage !