summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.coveragerc2
-rw-r--r--.gitignore3
-rw-r--r--.gitlab-ci.yml28
-rw-r--r--tox.ini42
4 files changed, 56 insertions, 19 deletions
diff --git a/.coveragerc b/.coveragerc
index d81aec1a2..af22a1282 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -9,6 +9,8 @@ omit =
# Omit generated code
*/buildstream/_protos/*
*/.eggs/*
+ # Omit .tox directory
+ */.tox/*
[report]
show_missing = True
diff --git a/.gitignore b/.gitignore
index 3fd1addbc..00cb4e2c4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,11 +13,12 @@ tests/**/*.pyc
integration-cache/
tmp
.coverage
+.coverage-reports/
.coverage.*
.cache
.pytest_cache/
*.bst/
-.tox
+.tox/
# Pycache, in case buildstream is ran directly from within the source
# tree
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 9706037a4..78e725da8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -13,6 +13,7 @@ variables:
PYTEST_ADDOPTS: "--color=yes"
INTEGRATION_CACHE: "${CI_PROJECT_DIR}/cache/integration-cache"
TEST_COMMAND: "tox -- --color=yes --integration"
+ COVERAGE_PREFIX: "${CI_JOB_NAME}."
#####################################################
@@ -24,9 +25,6 @@ variables:
.tests-template: &tests
stage: test
- variables:
- COVERAGE_DIR: coverage-linux
-
before_script:
# Diagnostics
- mount
@@ -40,14 +38,11 @@ variables:
- su buildstream -c "${TEST_COMMAND}"
after_script:
- # Collect our reports
- - mkdir -p ${COVERAGE_DIR}
- - cp .coverage ${COVERAGE_DIR}/coverage."${CI_JOB_NAME}"
except:
- schedules
artifacts:
paths:
- - ${COVERAGE_DIR}
+ - .coverage-reports
tests-debian-9:
image: buildstream/testsuite-debian:9-5da27168-32c47d1c
@@ -83,7 +78,6 @@ tests-unix:
<<: *tests
variables:
BST_FORCE_BACKEND: "unix"
- COVERAGE_DIR: coverage-unix
script:
@@ -239,22 +233,22 @@ coverage:
stage: post
coverage: '/TOTAL +\d+ +\d+ +(\d+\.\d+)%/'
script:
- - pip3 install -r requirements/requirements.txt -r requirements/dev-requirements.txt
- - pip3 install --no-index .
- - mkdir report
- - cd report
- - cp ../coverage-unix/coverage.* .
- - cp ../coverage-linux/coverage.* .
- - ls coverage.*
- - coverage combine --rcfile=../.coveragerc -a coverage.*
- - coverage report --rcfile=../.coveragerc -m
+ - cp -a .coverage-reports/ ./coverage-sources
+ - tox -e coverage
+ - cp -a .coverage-reports/ ./coverage-report
dependencies:
- tests-debian-9
- tests-fedora-27
- tests-fedora-28
+ - tests-fedora-missing-deps
+ - tests-ubuntu-18.04
- tests-unix
except:
- schedules
+ artifacts:
+ paths:
+ - coverage-sources/
+ - coverage-report/
# Deploy, only for merges which land on master branch.
#
diff --git a/tox.ini b/tox.ini
index 3b6496d3f..abc13d03a 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,9 +1,20 @@
+#
+# Tox global configuration
+#
[tox]
envlist = py35,py36,py37
skip_missing_interpreters = true
+#
+# Defaults for all environments
+#
+# Anything specified here is iherited by the sections
+#
[testenv]
-commands = pytest {posargs}
+commands =
+ pytest --basetemp {envtmpdir} {posargs}
+ mkdir -p .coverage-reports
+ mv {envtmpdir}/.coverage {toxinidir}/.coverage-reports/.coverage.{env:COVERAGE_PREFIX:}{envname}
deps =
-rrequirements/requirements.txt
-rrequirements/dev-requirements.txt
@@ -13,6 +24,32 @@ passenv =
GI_TYPELIB_PATH
INTEGRATION_CACHE
+#
+# These keys are not inherited by any other sections
+#
+setenv =
+ py{35,36,37}: COVERAGE_FILE = {envtmpdir}/.coverage
+whitelist_externals =
+ py{35,36,37}:
+ mv
+ mkdir
+
+#
+# Coverage reporting
+#
+[testenv:coverage]
+commands =
+ - coverage combine --rcfile={toxinidir}/.coveragerc {toxinidir}/.coverage-reports/
+ coverage report --rcfile={toxinidir}/.coveragerc -m
+deps =
+ -rrequirements/requirements.txt
+ -rrequirements/dev-requirements.txt
+setenv =
+ COVERAGE_FILE = {toxinidir}/.coverage-reports/.coverage
+
+#
+# Running linters
+#
[testenv:lint]
commands =
pycodestyle
@@ -22,6 +59,9 @@ deps =
-rrequirements/dev-requirements.txt
-rrequirements/plugin-requirements.txt
+#
+# Building documentation
+#
[testenv:docs]
commands =
make -C doc