From 0732e6e128e84efafaf2a35283f125cdd8fa4dfe Mon Sep 17 00:00:00 2001 From: Tzu-ping Chung Date: Thu, 27 Oct 2022 06:19:23 +0800 Subject: [PATCH 1/2] Add 3.11 to CI Also upgrade checkout to v3 and setup-python to v4. Signed-off-by: Henry Schreiner --- .github/workflows/ci.yml | 82 +++++++++++---------------------- .github/workflows/news-file.yml | 2 +- noxfile.py | 2 +- 3 files changed, 29 insertions(+), 57 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c9cfb7b8e98..7b48d944329 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,8 +26,10 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: "3.x" - run: pip install nox - run: nox -s docs @@ -60,8 +62,10 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: "3.x" - name: Set up git credentials run: | git config --global user.email "pypa-dev@googlegroups.com" @@ -82,8 +86,10 @@ jobs: github.event_name != 'pull_request' steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: "3.x" - run: pip install nox - run: nox -s vendoring @@ -103,14 +109,15 @@ jobs: matrix: os: [Ubuntu, MacOS] python: - - 3.7 - - 3.8 - - 3.9 + - "3.7" + - "3.8" + - "3.9" - "3.10" + - "3.11" steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 with: python-version: ${{ matrix.python }} @@ -151,16 +158,17 @@ jobs: matrix: os: [Windows] python: - - 3.7 + - "3.7" # Commented out, since Windows tests are expensively slow. - # - 3.8 - # - 3.9 - - "3.10" + # - "3.8" + # - "3.9" + # - "3.10" + - "3.11" group: [1, 2] steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 with: python-version: ${{ matrix.python }} @@ -221,8 +229,8 @@ jobs: github.event_name != 'pull_request' steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 with: python-version: "3.10" @@ -240,41 +248,6 @@ jobs: --durations=5 --use-zipapp - # TODO: Remove this when we add Python 3.11 to CI. - tests-importlib-metadata: - name: tests for importlib.metadata backend - runs-on: ubuntu-latest - env: - _PIP_USE_IMPORTLIB_METADATA: 'true' - - needs: [packaging, determine-changes] - if: >- - needs.determine-changes.outputs.tests == 'true' || - github.event_name != 'pull_request' - - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: '3.10' - - - name: Install Ubuntu dependencies - run: sudo apt-get install bzr - - - run: pip install nox - - - name: Run unit tests - run: >- - nox -s test-3.10 -- - -m unit - --verbose --numprocesses auto --showlocals - - name: Run integration tests - run: >- - nox -s test-3.10 -- - -m integration - --verbose --numprocesses auto --showlocals - --durations=5 - check: # This job does nothing and is only used for the branch protection if: always() @@ -285,7 +258,6 @@ jobs: - tests-unix - tests-windows - tests-zipapp - - tests-importlib-metadata - vendoring runs-on: ubuntu-latest diff --git a/.github/workflows/news-file.yml b/.github/workflows/news-file.yml index da7119a5573..371e12fd755 100644 --- a/.github/workflows/news-file.yml +++ b/.github/workflows/news-file.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: # `towncrier check` runs `git diff --name-only origin/main...`, which # needs a non-shallow clone. diff --git a/noxfile.py b/noxfile.py index 7692bf4b507..1345c417d69 100644 --- a/noxfile.py +++ b/noxfile.py @@ -66,7 +66,7 @@ def should_update_common_wheels() -> bool: # ----------------------------------------------------------------------------- # Development Commands # ----------------------------------------------------------------------------- -@nox.session(python=["3.7", "3.8", "3.9", "3.10", "pypy3"]) +@nox.session(python=["3.7", "3.8", "3.9", "3.10", "3.11", "pypy3"]) def test(session: nox.Session) -> None: # Get the common wheels. if should_update_common_wheels(): From df285ec9b894e99c252a583a0e61b3e8680c441c Mon Sep 17 00:00:00 2001 From: Tzu-ping Chung Date: Fri, 28 Oct 2022 10:57:29 +0800 Subject: [PATCH 2/2] Fix test failure due to metadata backend switch We switched the metadata backend to importlib.metadata for Python 3.11 onwards, which normalizes path differently. There are two tests about this, but since we've switched to the new resolver now they do exactly the same thing and can be merged. --- tests/functional/test_install_user.py | 33 ++++++++++++++-------- tests/functional/test_new_resolver_user.py | 33 ---------------------- 2 files changed, 21 insertions(+), 45 deletions(-) diff --git a/tests/functional/test_install_user.py b/tests/functional/test_install_user.py index c960d0de4f9..3207f0a45bf 100644 --- a/tests/functional/test_install_user.py +++ b/tests/functional/test_install_user.py @@ -287,7 +287,6 @@ def test_install_user_conflict_in_globalsite_and_usersite( assert isdir(dist_info_folder) assert isdir(initools_folder) - @pytest.mark.network def test_install_user_in_global_virtualenv_with_conflict_fails( self, script: PipTestEnvironment ) -> None: @@ -295,27 +294,37 @@ def test_install_user_in_global_virtualenv_with_conflict_fails( Test user install in --system-site-packages virtualenv with conflict in site fails. """ + create_basic_wheel_for_package(script, "pkg", "0.1") + create_basic_wheel_for_package(script, "pkg", "0.2") - script.pip("install", "INITools==0.2") + script.pip( + "install", + "--no-cache-dir", + "--no-index", + "--find-links", + script.scratch_path, + "pkg==0.2", + ) result2 = script.pip( "install", + "--no-cache-dir", + "--no-index", + "--find-links", + script.scratch_path, "--user", - "INITools==0.1", + "pkg==0.1", expect_error=True, ) resultp = script.run( "python", "-c", - "import pkg_resources; print(pkg_resources.get_distribution" - "('initools').location)", + "from pip._internal.metadata import get_default_environment; " + "print(get_default_environment().get_distribution('pkg').location)", ) dist_location = resultp.stdout.strip() + assert ( - "Will not install to the user site because it will lack sys.path " - "precedence to {name} in {location}".format( - name="INITools", - location=dist_location, - ) - in result2.stderr - ) + f"Will not install to the user site because it will lack sys.path " + f"precedence to pkg in {dist_location}" + ) in result2.stderr diff --git a/tests/functional/test_new_resolver_user.py b/tests/functional/test_new_resolver_user.py index 4578c311468..4cd06311348 100644 --- a/tests/functional/test_new_resolver_user.py +++ b/tests/functional/test_new_resolver_user.py @@ -91,39 +91,6 @@ def test_new_resolver_install_user_conflict_in_user_site( result.did_not_create(base_2_dist_info) -@pytest.mark.usefixtures("enable_user_site") -def test_new_resolver_install_user_in_virtualenv_with_conflict_fails( - script: PipTestEnvironment, -) -> None: - create_basic_wheel_for_package(script, "base", "1.0.0") - create_basic_wheel_for_package(script, "base", "2.0.0") - - script.pip( - "install", - "--no-cache-dir", - "--no-index", - "--find-links", - script.scratch_path, - "base==2.0.0", - ) - result = script.pip( - "install", - "--no-cache-dir", - "--no-index", - "--find-links", - script.scratch_path, - "--user", - "base==1.0.0", - expect_error=True, - ) - - error_message = ( - "Will not install to the user site because it will lack sys.path " - "precedence to base in {}" - ).format(os.path.normcase(script.site_packages_path)) - assert error_message in result.stderr - - @pytest.fixture() def patch_dist_in_site_packages(virtualenv: VirtualEnvironment) -> None: # Since the tests are run from a virtualenv, and to avoid the "Will not