summaryrefslogtreecommitdiffstats
path: root/.github/workflows/tests.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/tests.yml')
-rw-r--r--.github/workflows/tests.yml152
1 files changed, 152 insertions, 0 deletions
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
new file mode 100644
index 0000000..c05356e
--- /dev/null
+++ b/.github/workflows/tests.yml
@@ -0,0 +1,152 @@
+name: continuous-integration
+
+on:
+ push:
+ branches: [master]
+ tags:
+ - "v[0-9]+.[0-9]+.[0-9]+*"
+ pull_request:
+
+jobs:
+ pre-commit:
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python 3.8
+ uses: actions/setup-python@v1
+ with:
+ python-version: "3.8"
+ - uses: pre-commit/action@v2.0.0
+
+ tests:
+
+ strategy:
+ fail-fast: false
+ matrix:
+ python-version: ["3.7", "3.8", "3.9", "3.10"]
+ sphinx: [">=5,<6"]
+ os: [ubuntu-latest]
+ include:
+ - os: ubuntu-latest
+ python-version: "3.8"
+ sphinx: ">=4,<5"
+ - os: windows-latest
+ python-version: "3.8"
+ sphinx: ">=4,<5"
+
+ runs-on: ${{ matrix.os }}
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v1
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install -e .[linkify,testing]
+ pip install --upgrade-strategy "only-if-needed" "sphinx${{ matrix.sphinx }}"
+ - name: Run pytest
+ run: |
+ pytest --cov=myst_parser --cov-report=xml --cov-report=term-missing
+ coverage xml
+ - name: Upload to Codecov
+ if: github.repository == 'executablebooks/MyST-Parser' && matrix.python-version == 3.8
+ uses: codecov/codecov-action@v1
+ with:
+ name: myst-parser-pytests
+ flags: pytests
+ file: ./coverage.xml
+ fail_ci_if_error: true
+
+ check-myst-docutils:
+
+ name: Check myst-docutils install
+ runs-on: ubuntu-latest
+
+ strategy:
+ fail-fast: false
+ matrix:
+ docutils-version: ["0.17", "0.18", "0.19"]
+
+ steps:
+ - name: Checkout source
+ uses: actions/checkout@v2
+ - name: Set up Python 3.8
+ uses: actions/setup-python@v1
+ with:
+ python-version: "3.8"
+ - name: Install setup
+ run: |
+ python -m pip install --upgrade pip
+ pip install tomlkit
+ - name: Modify setup
+ run: python .github/workflows/docutils_setup.py pyproject.toml README.md
+ - name: Install dependencies
+ run: |
+ pip install .
+ pip install pytest~=6.2 pytest-param-files~=0.3.3 pygments docutils==${{ matrix.docutils-version }}
+ - name: ensure sphinx is not installed
+ run: |
+ python -c "\
+ try:
+ import sphinx
+ except ImportError:
+ pass
+ else:
+ raise AssertionError()"
+ - name: Run pytest for docutils-only tests
+ run: pytest tests/test_docutils.py tests/test_renderers/test_fixtures_docutils.py tests/test_renderers/test_include_directive.py
+ - name: Run docutils CLI
+ run: echo "test" | myst-docutils-html
+
+ publish:
+
+ name: Publish myst-parser to PyPi
+ needs: [pre-commit, tests, check-myst-docutils]
+ if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout source
+ uses: actions/checkout@v2
+ - name: Set up Python 3.8
+ uses: actions/setup-python@v1
+ with:
+ python-version: "3.8"
+ - name: install flit
+ run: |
+ pip install flit~=3.4
+ - name: Build and publish
+ run: |
+ flit publish
+ env:
+ FLIT_USERNAME: __token__
+ FLIT_PASSWORD: ${{ secrets.PYPI_KEY }}
+
+ publish-docutils:
+
+ name: Publish myst-docutils to PyPi
+ needs: [publish]
+ if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout source
+ uses: actions/checkout@v2
+ - name: Set up Python 3.8
+ uses: actions/setup-python@v1
+ with:
+ python-version: "3.8"
+ - name: install flit and tomlkit
+ run: |
+ pip install flit~=3.4 tomlkit
+ - name: Modify setup
+ run: python .github/workflows/docutils_setup.py pyproject.toml README.md
+ - name: Build and publish
+ run: |
+ flit publish
+ env:
+ FLIT_USERNAME: __token__
+ FLIT_PASSWORD: ${{ secrets.PYPI_KEY_DOCUTILS }}