• Phyks (Lucas Verney)'s avatar
    Gitlab-CI continuous integration · 434c0f15
    Phyks (Lucas Verney) authored
    This commit adds the necessary files to run the CI using Gitlab-CI. For
    now, it checks that Weboob builds, then runs the linting script
    (checking that every module as an icon and some tests + PyFlakes) and
    the unittests. Most of modules unittests cannot run because there is no
    backend configured.
    Some changes were needed in the pre-existing scripts:
    * Edit `weboob_lint` to exit with non-zero code if it finds modules
    without icons or tests, so that the build could fail in such a case.
    * Edit `run_tests.sh` to set correct exit code on failure and rework
    generation of XUNIT output. Also added some doc about useful environment
    variables. Added a way to generate an xunit output file when running modules
    unittests, passing a `XUNIT_OUT` env variable to `run_tests.sh` script.
    * Modification of `setup.cfg` and `run_tests` scripts to handle code
    coverage generation. The matching regex in Gitlab for the total code
    coverage is `TOTAL: (\d+\%\s*)$)`.
    I also added a script to generate a JSON module status matrix from
    modules unittests, ready to be sent to a
    [Weboob-CI](https://github.com/Phyks/weboob-ci) instance.
    NOTE: Required Python modules are taken from the `setup.py` script.
    `.ci/requirements.txt` contains the requirements to run the unittests
    and the CI, whereas `.ci/requirements_modules.txt` contains the specific
    Python modules required at runtime by Weboob modules. The latter could
    eventually be replaced by a proper call to `debpydep` script.