From d6e333fb636424d7dca15f4e8aa61cdaab9cdd31 Mon Sep 17 00:00:00 2001 From: Tzu-ping Chung Date: Sat, 29 Oct 2022 00:37:04 +0800 Subject: [PATCH] Add 3.11 to CI (#11550) --- .github/workflows/ci.yml | 82 +++++++--------------- .github/workflows/news-file.yml | 2 +- noxfile.py | 2 +- tests/functional/test_install_user.py | 33 +++++---- tests/functional/test_new_resolver_user.py | 33 --------- 5 files changed, 50 insertions(+), 102 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c9cfb7b8e..7b48d9443 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 da7119a55..371e12fd7 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 7692bf4b5..1345c417d 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(): diff --git a/tests/functional/test_install_user.py b/tests/functional/test_install_user.py index c960d0de4..3207f0a45 100644 --- a/tests/functional/test_install_user.py +++ b/tests/functional/test_install_user.py @@ -287,7 +287,6 @@ class Tests_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 @@ class Tests_UserSite: 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 4578c3114..4cd063113 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