Skip to content

Merge pull request #229 from mr-c/pytest8 #117

Merge pull request #229 from mr-c/pytest8

Merge pull request #229 from mr-c/pytest8 #117

Workflow file for this run

name: main
on: [push]
jobs:
build-and-test:
strategy:
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: git setup
id: git-setup
run: |
git config --global user.email "[email protected]"
git config --global user.name "GitHub Action"
echo "BRANCH=${GITHUB_REF##*/}" >> $GITHUB_ENV
echo "WORKDIR=$(pwd)" >> $GITHUB_ENV
- name: conda env
run: |
wget -O Mambaforge.sh "https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-$(uname)-$(uname -m).sh"
curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-$(uname)-$(uname -m).sh"
bash Mambaforge.sh -b -p "${HOME}/conda"
source "${HOME}/conda/etc/profile.d/conda.sh"
source "${HOME}/conda/etc/profile.d/mamba.sh"
which conda
conda config --system --add channels defaults
conda config --system --add channels bioconda
conda config --system --add channels conda-forge
conda config --system --set channel_priority strict
mamba create -y -n gffutils-env \
python=${{ matrix.python-version }} \
--file requirements.txt
conda activate gffutils-env
python setup.py clean sdist
(cd dist && pip install gffutils-*.tar.gz)
cd $TMPDIR
python -c "import gffutils; print(gffutils.__file__)"
conda deactivate
- name: run unit tests
run: |
source "${HOME}/conda/etc/profile.d/conda.sh"
source "${HOME}/conda/etc/profile.d/mamba.sh"
mamba install -y -n gffutils-env --file optional-requirements.txt pytest hypothesis
conda activate gffutils-env
pytest -v --doctest-modules gffutils
conda deactivate
- name: doctests
# Specifically in 3.8 (but not 3.6, 3.7, 3.9) we get:
#
# Handler <function process_generate_options at 0x7f6eb70ba790>
# for event 'builder-inited' threw an exception (exception: no
# module named gffutils.pybedtools_integration)
#
# ...and this is difficult or impossible to replicate locally.
# The workaround is to just not build the html docs on 3.8.
if: ${{ (matrix.python-version != 3.8) }}
run: |
source "${HOME}/conda/etc/profile.d/conda.sh"
source "${HOME}/conda/etc/profile.d/mamba.sh"
mamba install -y -n gffutils-env --file docs-requirements.txt
conda activate gffutils-env
(cd doc && make clean doctest)
conda deactivate
- name: build docs
# See above for note about 3.8
if: ${{ (matrix.python-version != 3.8) }}
run: |
source "${HOME}/conda/etc/profile.d/conda.sh"
source "${HOME}/conda/etc/profile.d/mamba.sh"
conda activate gffutils-env
(cd doc && make html)
conda deactivate
# Clone the gh-pages branch to a temporary location
git clone \
--single-branch \
--branch gh-pages "https://x-acess-token:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY" \
/tmp/docs
# clean it out and add newly-built docs
rm -rf /tmp/docs/*
cp -r doc/build/html/* /tmp/docs
# so that sphinx-built docs show up correctly on github.io
touch /tmp/docs/.nojekyll
cd /tmp/docs
git add .
if git diff --cached --quiet; then
echo "no changes to docs, nothing to commit"
else
git commit -m "update docs"
fi
cd $WORKDIR
- name: push artifact
if: ${{ (matrix.python-version == 3.9) }}
uses: actions/upload-artifact@v3
with:
name: doc
path: /tmp/docs
- name: push docs to gh-pages branch
# Push docs to gh-pages if this test is running on master branch, and
# restrict to a single Python version.
if: ${{ (github.ref == 'refs/heads/master') && (matrix.python-version == 3.9) }}
run: |
cd /tmp/docs
git push "https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY" gh-pages
cd $WORKDIR