aboutsummaryrefslogtreecommitdiffstats
path: root/.gitlab-ci.yml
blob: 38cbe20196181108c45c1db5b1045f9f2fdc6d43 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
variables:
  CONTAINER_REGISTRY: $CI_REGISTRY/georg/mat2-ci-images

stages:
  - linting
  - test

.prepare_env: &prepare_env
  before_script:  # This is needed to not run the testsuite as root
    - useradd --home-dir ${CI_PROJECT_DIR} mat2
    - chown -R mat2 .

linting:bandit:
  image: $CONTAINER_REGISTRY:linting 
  stage: linting
  script:  # TODO: remove B405 and B314
    - bandit ./mat2 --format txt --skip B101
    - bandit -r ./nautilus/ --format txt --skip B101
    - bandit -r ./libmat2 --format txt --skip B101,B404,B603,B405,B314,B108,B311

linting:codespell:
  image: $CONTAINER_REGISTRY:linting
  stage: linting
  script:
    # Run codespell to check for spelling errors; ignore errors about binary
    # files, use a config with ignored words and exclude the git directory,
    # which might contain false positives
    - codespell -q 2 -I utils/ci/codespell/ignored_words.txt -S .git
  
linting:pylint:
  image: $CONTAINER_REGISTRY:linting
  stage: linting
  script:
    - pylint --disable=no-else-return,no-else-raise,no-else-continue,unnecessary-comprehension --extension-pkg-whitelist=cairo,gi ./libmat2 ./mat2
    # Once nautilus-python is in Debian, decomment it form the line below
    - pylint --disable=no-else-return,no-else-raise,no-else-continue,unnecessary-comprehension --extension-pkg-whitelist=Nautilus,GObject,Gtk,Gio,GLib,gi ./nautilus/mat2.py

linting:pyflakes:
  image: $CONTAINER_REGISTRY:linting
  stage: linting
  script:
    - pyflakes3 ./libmat2 ./mat2 ./tests/ ./nautilus

linting:mypy:
  image: $CONTAINER_REGISTRY:linting
  stage: linting
  script:
    - mypy --ignore-missing-imports mat2 libmat2/*.py ./nautilus/mat2.py

tests:archlinux:
  image: $CONTAINER_REGISTRY:archlinux
  stage: test
  script:
    - python3 -m unittest discover -v
  
tests:debian:
  image: $CONTAINER_REGISTRY:debian
  stage: test
  script:
    - apt-get -qqy purge bubblewrap
    - python3 -m unittest discover -v

tests:debian_with_bubblewrap:
  image: $CONTAINER_REGISTRY:debian
  stage: test
  <<: *prepare_env
  script:
    - su - mat2 -c "python3-coverage run --branch -m unittest discover -s tests/"
    - su - mat2 -c "python3-coverage report --fail-under=100 -m --include 'libmat2/*'"

tests:fedora:
  image: $CONTAINER_REGISTRY:fedora
  stage: test
  script:
    - python3 -m unittest discover -v

tests:gentoo:
  image: $CONTAINER_REGISTRY:gentoo
  stage: test
  <<: *prepare_env
  script:
    - su - mat2 -c "python3 -m unittest discover -v"