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.yml136
1 files changed, 136 insertions, 0 deletions
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
new file mode 100644
index 0000000..e46c084
--- /dev/null
+++ b/.github/workflows/tests.yml
@@ -0,0 +1,136 @@
+# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
+# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
+
+name: continuous-integration
+
+on:
+ push:
+ branches: [master]
+ tags:
+ - "v[0-9]+.[0-9]+.[0-9]+*"
+ pull_request:
+ schedule:
+ - cron: '0 0 * * 0' # every week
+
+jobs:
+
+ pre-commit:
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python 3.8
+ uses: actions/setup-python@v2
+ with:
+ python-version: '3.8'
+ - uses: pre-commit/action@v2.0.0
+
+ tests:
+
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: ['pypy-3.7', '3.7', '3.8', '3.9', '3.10']
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install .[testing,linkify]
+ - name: Run pytest
+ run: |
+ pytest tests/ --cov=markdown_it --cov-report=xml --cov-report=term-missing
+ - name: Upload to Codecov
+ if: matrix.python-version == '3.7' && github.repository == 'executablebooks/markdown-it-py'
+ uses: codecov/codecov-action@v1
+ with:
+ name: markdown-it-py-pytests-py3.7
+ flags: pytests
+ file: ./coverage.xml
+ fail_ci_if_error: true
+
+ test-plugins:
+
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: ['3.8']
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Install markdown-it-py
+ run: |
+ python -m pip install --upgrade pip
+ pip install .[testing]
+ - name: clone and install mdit-py-plugins
+ run: |
+ git clone https://github.com/executablebooks/mdit-py-plugins.git
+ pip install --no-deps -e mdit-py-plugins
+ - name: Run pytest for unit tests of mdit-py-plugins
+ run: cd mdit-py-plugins; pytest
+
+ benchmark:
+
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Set up Python 3.8
+ uses: actions/setup-python@v2
+ with:
+ python-version: '3.8'
+
+ - name: Install tox
+ run: |
+ python -m pip install --upgrade pip
+ pip install tox
+
+ - name: Run benchmark
+ run: tox -e py38-bench-core -- --benchmark-json bench-core.json
+
+ - name: Upload data
+ uses: actions/upload-artifact@v2
+ with:
+ name: bench-core
+ path: bench-core.json
+ if-no-files-found: error
+
+ publish:
+
+ name: Publish to PyPi
+ needs: [pre-commit, tests]
+ 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@v2
+ 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 }}
+
+ allgood:
+ runs-on: ubuntu-latest
+ needs:
+ - pre-commit
+ - tests
+ steps:
+ - run: echo "Great success!"