From 0201471a221e3a572fe3ce800f313d5903b43fdf Mon Sep 17 00:00:00 2001 From: Maksim Stepanov <17935127+delatrie@users.noreply.github.com> Date: Mon, 4 Mar 2024 19:47:54 +0700 Subject: [PATCH 1/7] Fix getfixturedefs call --- allure-pytest/src/listener.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/allure-pytest/src/listener.py b/allure-pytest/src/listener.py index 63daf01d..dea558f2 100644 --- a/allure-pytest/src/listener.py +++ b/allure-pytest/src/listener.py @@ -347,7 +347,7 @@ def _test_fixtures(item): if hasattr(item, "_request") and hasattr(item._request, "fixturenames"): for name in item._request.fixturenames: - fixturedefs_pytest = fixturemanager.getfixturedefs(name, item.nodeid) + fixturedefs_pytest = fixturemanager.getfixturedefs(name, item) if fixturedefs_pytest: fixturedefs.extend(fixturedefs_pytest) From a423c401801615d6fe21eb02feb55f4c09db1147 Mon Sep 17 00:00:00 2001 From: Maksim Stepanov <17935127+delatrie@users.noreply.github.com> Date: Mon, 4 Mar 2024 20:26:26 +0700 Subject: [PATCH 2/7] Revert getfixturedefs fix for pytest < 8.1 --- allure-pytest/src/listener.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/allure-pytest/src/listener.py b/allure-pytest/src/listener.py index dea558f2..eb222bc0 100644 --- a/allure-pytest/src/listener.py +++ b/allure-pytest/src/listener.py @@ -1,5 +1,7 @@ import pytest import doctest +from packaging import version + import allure_commons from allure_commons.utils import now from allure_commons.utils import uuid4 @@ -347,13 +349,23 @@ def _test_fixtures(item): if hasattr(item, "_request") and hasattr(item._request, "fixturenames"): for name in item._request.fixturenames: - fixturedefs_pytest = fixturemanager.getfixturedefs(name, item) + fixturedefs_pytest = _getfixturedefs(fixturemanager, name, item) if fixturedefs_pytest: fixturedefs.extend(fixturedefs_pytest) return fixturedefs +def _getfixturedefs(fixturemanager, name, item): + # See pytest-dev/pytest#11785 + itemarg = item if __is_pytest8_1_or_greater() else item.nodeid + return fixturemanager.getfixturedefs(name, itemarg) + + +def __is_pytest8_1_or_greater(): + return version.parse(pytest.__version__) >= version.parse("8.1") + + def _exception_brokes_test(exception): return not isinstance(exception, ( AssertionError, From bdb8ea18b97939d7ce1d5aaa2ccd0bb39424882e Mon Sep 17 00:00:00 2001 From: Maksim Stepanov <17935127+delatrie@users.noreply.github.com> Date: Tue, 5 Mar 2024 02:00:29 +0700 Subject: [PATCH 3/7] Test against pytest 6,7,8 in workflow --- .github/workflows/build.yaml | 93 ++++++++++++++++++++++++++++-------- 1 file changed, 72 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 6d150a8c..2ddae973 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -6,13 +6,29 @@ on: - master jobs: - changes: - name: Collect file changes + pytest-changes: + name: Collect allure-pytest file changes + runs-on: ubuntu-latest + outputs: + changed: ${{ steps.filter.outputs.allure-pytest }} + steps: + - uses: dorny/paths-filter@v3 + id: filter + with: + filters: | + allure-pytest: + - allure-pytest/** + - allure-python-commons/** + - allure-python-commons-test/** + - tests/*.py + - tests/allure_pytest/** + other-changes: + name: Collect file changes other than allure-pytest runs-on: ubuntu-latest outputs: packages: ${{ steps.filter.outputs.changes }} steps: - - uses: dorny/paths-filter@v2 + - uses: dorny/paths-filter@v3 id: filter with: filters: | @@ -28,12 +44,6 @@ jobs: - allure-python-commons-test/** - tests/*.py - tests/allure_nose2/** - allure-pytest: - - allure-pytest/** - - allure-python-commons/** - - allure-python-commons-test/** - - tests/*.py - - tests/allure_pytest/** allure-pytest-bdd: - allure-pytest-bdd/** - allure-python-commons/** @@ -53,7 +63,7 @@ jobs: name: Build commons runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Cache commons id: commons @@ -68,13 +78,13 @@ jobs: python -m build allure-python-commons --outdir dist/ && python -m build allure-python-commons-test --outdir dist/ - linters: + lint: name: Static check runs-on: ubuntu-latest - needs: [commons, changes] - if: ${{ needs.changes.outputs.packages != '[]' }} + needs: [commons, pytest-changes, other-changes] + if: ${{ needs.pytest-changes.outputs.changed || needs.other-changes.outputs.packages != '[]' }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v4 @@ -87,23 +97,64 @@ jobs: - name: Linting the codebase run: poe linter - build: - name: Test package + test-pytest: + name: Test allure-pytest runs-on: ubuntu-latest - needs: [linters, commons, changes] - if: ${{ needs.changes.outputs.packages != '[]' }} + needs: [lint, commons, pytest-changes] + if: ${{ needs.pytest-changes.outputs.changed }} strategy: matrix: - package: ${{ fromJSON(needs.changes.outputs.packages) }} python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] + pytest-version: ["6.*", "7.*", "8.*"] env: TEST_TMP: /tmp ALLURE_INDENT_OUTPUT: yep steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Get commons from cache + id: commons + uses: actions/cache@v3 + with: + path: dist/ + key: commons-${{ github.sha }} + + - name: Install packages + run: | + pip install pytest==${{ matrix.pytest-version }} + pip install dist/allure-python-commons*.tar.gz && + pip install ./allure-pytest && + pip install -r ./requirements/testing.txt && + pip install -r ./requirements/testing/allure-pytest.txt + + - name: Test allure-pytest + working-directory: allure-pytest + run: poe tests + + test-others: + name: Test packages other than allure-pytest + runs-on: ubuntu-latest + needs: [lint, commons, other-changes] + if: ${{ needs.other-changes.outputs.packages != '[]' }} + strategy: + matrix: + package: ${{ fromJSON(needs.other-changes.outputs.packages) }} + python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] + exclude: + - package: allure-pytest + env: + TEST_TMP: /tmp + ALLURE_INDENT_OUTPUT: yep + steps: + - uses: actions/checkout@v4 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} From e267ef0cfd7b8d650789fc57925a7392c15fa8bb Mon Sep 17 00:00:00 2001 From: Maksim Stepanov <17935127+delatrie@users.noreply.github.com> Date: Tue, 5 Mar 2024 02:04:38 +0700 Subject: [PATCH 4/7] Remove dep between test and lint CI jobs --- .github/workflows/build.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 2ddae973..ad1ed61a 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -100,7 +100,7 @@ jobs: test-pytest: name: Test allure-pytest runs-on: ubuntu-latest - needs: [lint, commons, pytest-changes] + needs: [commons, pytest-changes] if: ${{ needs.pytest-changes.outputs.changed }} strategy: matrix: @@ -139,7 +139,7 @@ jobs: test-others: name: Test packages other than allure-pytest runs-on: ubuntu-latest - needs: [lint, commons, other-changes] + needs: [commons, other-changes] if: ${{ needs.other-changes.outputs.packages != '[]' }} strategy: matrix: From d37324bb8ccbe39994dbfafcdac5b957ada72f6e Mon Sep 17 00:00:00 2001 From: Maksim Stepanov <17935127+delatrie@users.noreply.github.com> Date: Tue, 5 Mar 2024 02:05:18 +0700 Subject: [PATCH 5/7] Remove incompatible python/pytest combination from CI --- .github/workflows/build.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index ad1ed61a..a265284c 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -106,6 +106,9 @@ jobs: matrix: python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] pytest-version: ["6.*", "7.*", "8.*"] + exclude: + - python-version: "3.7" + pytest-version: "8.*" env: TEST_TMP: /tmp ALLURE_INDENT_OUTPUT: yep From 2588710b7efc74152d977d938a0bca70be9668db Mon Sep 17 00:00:00 2001 From: Maksim Stepanov <17935127+delatrie@users.noreply.github.com> Date: Mon, 11 Mar 2024 13:50:25 +0700 Subject: [PATCH 6/7] Fix pytest version in CI --- .github/workflows/build.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index a265284c..2154b10c 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -129,11 +129,11 @@ jobs: - name: Install packages run: | - pip install pytest==${{ matrix.pytest-version }} - pip install dist/allure-python-commons*.tar.gz && - pip install ./allure-pytest && - pip install -r ./requirements/testing.txt && - pip install -r ./requirements/testing/allure-pytest.txt + pip install dist/allure-python-commons*.tar.gz \ + ./allure-pytest \ + pytest==${{ matrix.pytest-version }} \ + -r ./requirements/testing.txt \ + -r ./requirements/testing/allure-pytest.txt - name: Test allure-pytest working-directory: allure-pytest From a65242bb4e88e01ff4c161317d227041df55c962 Mon Sep 17 00:00:00 2001 From: Maksim Stepanov <17935127+delatrie@users.noreply.github.com> Date: Mon, 11 Mar 2024 14:02:30 +0700 Subject: [PATCH 7/7] Remove testing against pytest 6 Out tests use pytest.Stash that requires pytest 7.0. We can't test against pytest 6 until the pytest version of the runner is decoupled with the one of the samples. --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 2154b10c..fb0ce63d 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -105,7 +105,7 @@ jobs: strategy: matrix: python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] - pytest-version: ["6.*", "7.*", "8.*"] + pytest-version: ["7.*", "8.*"] exclude: - python-version: "3.7" pytest-version: "8.*"