main.yml (poetry-1.1.15) | : | main.yml (poetry-1.2.0) | ||
---|---|---|---|---|
name: Tests | name: Tests | |||
on: | on: | |||
push: | push: | |||
paths-ignore: | paths-ignore: | |||
- 'docs/**' | - 'docs/**' | |||
- '.cirrus.yml' | - '.cirrus.yml' | |||
- '.github/workflows/docs.yml' | ||||
branches: | branches: | |||
- master | - master | |||
- develop | - develop | |||
pull_request: | pull_request: | |||
paths-ignore: | paths-ignore: | |||
- 'docs/**' | - 'docs/**' | |||
- '.cirrus.yml' | - '.cirrus.yml' | |||
- '.github/workflows/docs.yml' | ||||
branches: | branches: | |||
- '**' | - '**' | |||
concurrency: | ||||
group: tests-${{ github.head_ref || github.ref }} | ||||
cancel-in-progress: ${{ github.event_name == 'pull_request' }} | ||||
jobs: | jobs: | |||
tests: | tests: | |||
name: ${{ matrix.os }} / ${{ matrix.python-version }} | name: ${{ matrix.os }} / ${{ matrix.python-version }} ${{ matrix.suffix }} | |||
runs-on: ${{ matrix.os }}-latest | runs-on: ${{ matrix.image }} | |||
strategy: | strategy: | |||
matrix: | matrix: | |||
os: [Ubuntu, MacOS, Windows] | os: [Ubuntu, macOS, Windows] | |||
python-version: ["2.7", "3.5","3.6", "3.7", "3.8", "3.9", "3.10"] | python-version: ["3.7", "3.8", "3.9", "3.10"] | |||
include: | ||||
- os: Ubuntu | ||||
image: ubuntu-22.04 | ||||
- os: Windows | ||||
image: windows-2022 | ||||
- os: macOS | ||||
image: macos-12 | ||||
fail-fast: false | ||||
defaults: | ||||
run: | ||||
shell: bash | ||||
steps: | steps: | |||
- uses: actions/checkout@v2 | - uses: actions/checkout@v2 | |||
- name: Set up Python ${{ matrix.python-version }} | - name: Set up Python ${{ matrix.python-version }} | |||
uses: actions/setup-python@v2 | uses: actions/setup-python@v2 | |||
with: | with: | |||
python-version: ${{ matrix.python-version }} | python-version: ${{ matrix.python-version }} | |||
- name: Get full Python version | - name: Get full Python version | |||
id: full-python-version | id: full-python-version | |||
shell: bash | ||||
run: echo ::set-output name=version::$(python -c "import sys; print('-'. join(str(v) for v in sys.version_info))") | run: echo ::set-output name=version::$(python -c "import sys; print('-'. join(str(v) for v in sys.version_info))") | |||
- name: Bootstrap poetry | - name: Bootstrap poetry | |||
shell: bash | ||||
run: | | run: | | |||
python -m ensurepip | curl -sL https://install.python-poetry.org | python - -y ${{ matrix.bo | |||
python -m pip install --upgrade pip | otstrap-args }} | |||
python -m pip install . | ||||
- name: Update PATH | ||||
if: ${{ matrix.os != 'Windows' }} | ||||
run: echo "$HOME/.local/bin" >> $GITHUB_PATH | ||||
- name: Update Path for Windows | ||||
if: ${{ matrix.os == 'Windows' }} | ||||
run: echo "$APPDATA\Python\Scripts" >> $GITHUB_PATH | ||||
- name: Configure poetry | - name: Configure poetry | |||
shell: bash | run: poetry config virtualenvs.in-project true | |||
run: python -m poetry config virtualenvs.in-project true | ||||
- name: Set up cache | - name: Set up cache | |||
uses: actions/cache@v2 | uses: actions/cache@v2 | |||
id: cache | id: cache | |||
with: | with: | |||
path: .venv | path: .venv | |||
key: venv-${{ runner.os }}-${{ steps.full-python-version.outputs.versi on }}-${{ hashFiles('**/poetry.lock') }} | key: venv-${{ runner.os }}-${{ steps.full-python-version.outputs.versi on }}-${{ hashFiles('**/poetry.lock') }} | |||
- name: Ensure cache is healthy | - name: Ensure cache is healthy | |||
if: steps.cache.outputs.cache-hit == 'true' | if: steps.cache.outputs.cache-hit == 'true' | |||
shell: bash | run: timeout 10s poetry run pip --version || rm -rf .venv | |||
run: timeout 10s python -m poetry run pip --version || rm -rf .venv | ||||
- name: Install dependencies | - name: Install dependencies | |||
shell: bash | run: poetry install | |||
run: python -m poetry install | ||||
- name: Run mypy | ||||
run: poetry run mypy | ||||
- name: Install pytest plugin | ||||
run: poetry run pip install pytest-github-actions-annotate-failures | ||||
- name: Run pytest | - name: Run pytest | |||
shell: bash | run: poetry run python -m pytest -n auto -p no:sugar -q tests/ | |||
run: python -m poetry run python -m pytest -v tests | ||||
- name: Run pytest (integration suite) | ||||
env: | ||||
POETRY_TEST_INTEGRATION_GIT_USERNAME: ${GITHUB_ACTOR} | ||||
POETRY_TEST_INTEGRATION_GIT_PASSWORD: ${{ secrets.GITHUB_TOKEN }} | ||||
run: poetry run python -m pytest -n auto -p no:sugar -q --integration te | ||||
sts/integration | ||||
- name: Get Plugin Version (poetry-plugin-export) | ||||
id: poetry-plugin-export-version | ||||
run: | | ||||
echo ::set-output name=version::$(\ | ||||
poetry show poetry-plugin-export | grep version | cut -d : -f 2 | x | ||||
args) | ||||
- name: Checkout Plugin Source (poetry-plugin-export) | ||||
uses: actions/checkout@v2 | ||||
with: | ||||
path: poetry-plugin-export | ||||
repository: python-poetry/poetry-plugin-export | ||||
ref: refs/tags/${{ steps.poetry-plugin-export-version.outputs.version | ||||
}} | ||||
- name: Run pytest (poetry-plugin-export) | ||||
run: poetry run python -m pytest -p no:sugar -q poetry-plugin-export/tes | ||||
ts/ | ||||
- name: Check for clean working tree | ||||
run: | | ||||
git diff --exit-code --stat HEAD | ||||
git -C poetry-plugin-export diff --exit-code --stat HEAD | ||||
End of changes. 12 change blocks. | ||||
15 lines changed or deleted | 40 lines changed or added |