Update linux-wheels.sh, use more PyPA images #457
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test | |
on: | |
- push | |
- pull_request | |
jobs: | |
test: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
mode: [tests] | |
python: | |
- "3.11" | |
include: | |
- os: ubuntu-latest | |
mode: coverage | |
python: "3.8" | |
- os: ubuntu-20.04 | |
mode: tests | |
python: "3.5" | |
- os: ubuntu-latest | |
mode: checks | |
python: "3.8" | |
- os: ubuntu-latest | |
mode: check-images | |
python: "3.8" | |
runs-on: ${{ matrix.os }} | |
env: | |
TEST_MODE: ${{ matrix.mode }} | |
REPROZIP_USAGE_STATS: "off" | |
REPROZIP_PARAMETERS: https://stats.reprozip.org/parameters/travis/ | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 20 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Install dependencies | |
run: | | |
if [ -z "${XDG_CACHE_HOME-}" ]; then | |
mkdir -p ~/.cache/reprozip | |
else | |
mkdir -p "$XDG_CACHE_HOME/reprozip" | |
fi | |
case "$TEST_MODE" | |
in | |
tests|coverage|check-images) | |
if [ "$TEST_MODE" = "coverage" ]; then | |
export CFLAGS="-fprofile-arcs -ftest-coverage" | |
fi | |
PKGS="libc6-dev-i386 gcc-multilib libsqlite3-dev" | |
if [ "$TEST_MODE" = "coverage" ]; then PKGS="$PKGS lcov"; fi | |
sudo apt-get update -qq | |
sudo apt-get install -qq $PKGS | |
if [ $TEST_MODE = "coverage" ]; then | |
pip install 'coverage<5' | |
# `--config-settings editable_mode=compat` works around https://github.com/pypa/setuptools/issues/3557 | |
pip install -e ./reprozip -e ./reprounzip -e ./reprounzip-docker -e ./reprounzip-vagrant -e ./reprounzip-vistrails -e ./reprounzip-qt -e ./reprozip-jupyter --config-settings editable_mode=compat | |
else | |
pip install ./reprozip ./reprounzip ./reprounzip-docker ./reprounzip-vagrant ./reprounzip-vistrails ./reprounzip-qt ./reprozip-jupyter | |
fi | |
;; | |
checks) | |
pip install flake8 readme_renderer | |
;; | |
*) | |
exit 1 | |
;; | |
esac | |
- name: Test | |
run: | | |
export LANG=C | |
export LC_ALL=C | |
export REPROZIP_TEST_PYTHON="$(which python) -Wd" | |
case "$TEST_MODE" | |
in | |
coverage) | |
export PYTHONUNBUFFERED=1 | |
export COVER="coverage run --append --source=$PWD/reprozip/reprozip,$PWD/reprounzip/reprounzip,$PWD/reprounzip-docker/reprounzip,$PWD/reprounzip-vagrant/reprounzip,$PWD/reprounzip-vistrails/reprounzip,$PWD/tests --branch" | |
python -Wd -m $COVER -m tests --run-docker | |
;; | |
tests) | |
export PYTHONUNBUFFERED=1 | |
python -Wd tests --run-docker | |
;; | |
check-images) | |
python -Wd tests --check-vagrant-images --check-docker-images | |
;; | |
checks) | |
flake8 --ignore=E731,W503,W504 | |
diff -q reprozip/reprozip/common.py reprounzip/reprounzip/common.py | |
diff -q reprozip/reprozip/utils.py reprounzip/reprounzip/utils.py | |
find reprozip reprounzip reprozip-* reprounzip-* -name '*.py' -or -name '*.sh' -or -name '*.h' -or -name '*.c' | (set +x; while read i; do | |
T=$(file -b --mime "$i") | |
if ! ( echo "$T" | grep -q ascii || echo "$T" | grep -q empty ) ; then | |
echo "$i is not ASCII" | |
exit 1 | |
fi | |
done) | |
find reprozip reprounzip reprozip-* reprounzip-* -name '*.py' -exec sh -c "grep 'logging\\.\\(debug\\|warning\\|critical\\|error\\|info\\)' \"\$@\" && exit 1; exit 0" {} + | |
for pkg in reprozip reprounzip reprozip-* reprounzip-*; do | |
(cd $pkg && python setup.py check -r -s) | |
done | |
;; | |
*) | |
exit 1 | |
;; | |
esac | |
- name: Upload coverage | |
if: matrix.mode == 'coverage' | |
run: | | |
# Python | |
if [ -f .coverage ]; then mv .coverage .coverage.orig; fi # FIXME: useless? | |
coverage combine | |
# C | |
# Find the coverage file (in distutils's build directory) | |
OBJDIR=$(dirname "$(find . -name pytracer.gcno | head -n 1)") | |
(cd reprozip/native && lcov --directory ../../$OBJDIR -c -o reprozip.lcov) | |
curl -s -o - https://codecov.io/bash | bash -s - -X gcov | |
test-container: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
python: | |
- "2.7" | |
runs-on: ${{ matrix.os }} | |
container: | |
image: python:${{ matrix.python }} | |
options: "--privileged" | |
env: | |
TEST_MODE: tests | |
REPROZIP_USAGE_STATS: "off" | |
REPROZIP_PARAMETERS: https://stats.reprozip.org/parameters/travis/ | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 20 | |
- name: Install Docker client | |
run: | | |
curl -Lo /tmp/docker.tgz https://download.docker.com/linux/static/stable/x86_64/docker-23.0.6.tgz | |
tar -xf /tmp/docker.tgz -C /usr/local/bin --strip-components=1 | |
rm /tmp/docker.tgz | |
- name: Install dependencies | |
run: | | |
if [ -z "${XDG_CACHE_HOME-}" ]; then | |
mkdir -p ~/.cache/reprozip | |
else | |
mkdir -p "$XDG_CACHE_HOME/reprozip" | |
fi | |
apt-get update -qq | |
apt-get install -qq libc6-dev-i386 gcc-multilib libsqlite3-dev | |
cat > pip.constraints.txt <<'EOF' | |
pyelftools<0.30 | |
EOF | |
pip install -c pip.constraints.txt ./reprozip ./reprounzip ./reprounzip-docker ./reprounzip-vagrant ./reprounzip-vistrails ./reprounzip-qt ./reprozip-jupyter | |
- name: Test | |
run: | | |
export LANG=C | |
export LC_ALL=C | |
export REPROZIP_TEST_PYTHON="$(which python) -Wd" | |
export PYTHONUNBUFFERED=1 | |
python -Wd tests --run-docker |