Skip to content

Conversation

@JP-Ellis
Copy link
Contributor

📝 Summary

Upgrade to macos-15-intel.

🚨 Breaking Changes

🔥 Motivation

The macos-13 runners are being deprecated

🔨 Test Plan

🔗 Related issues/PRs

Signed-off-by: JP-Ellis <josh@jpellis.me>
@JP-Ellis JP-Ellis self-assigned this Nov 18, 2025
Copilot AI review requested due to automatic review settings November 18, 2025 23:52
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR updates the GitHub Actions CI configuration to use macos-15-intel runners instead of the deprecated macos-13 runners, ensuring continued CI functionality as GitHub phases out the older runner version.

  • Updated macOS runner version from macos-13 to macos-15-intel across workflow files

Reviewed Changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
.github/workflows/build-ffi.yml Updates macOS runner to macos-15-intel in the build matrix
.github/workflows/build-cli.yml Updates macOS runner to macos-15-intel in the build matrix

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@codecov
Copy link

codecov bot commented Nov 18, 2025

❌ 1 Tests Failed:

Tests completed Failed Passed Skipped
346 1 345 14
View the top 1 failed test(s) by shortest run time
tests.compatibility_suite.test_v4_matching_rules::test_supports_an_eachvalue_matcher_positive_case
Stack Traces | 0.002s run time
fixturefunc = <function the_request_is_compared_to_the_expected_one at 0x7f01056553f0>
request = <FixtureRequest for <Function test_supports_an_eachvalue_matcher_positive_case>>
kwargs = {'pact': <Pact: consumer='v4-matching-rules-consumer', provider='v4-matching-rules-provider', handle=PactHandle(49675)>, 'request_calls': [<function a_request_is_received_with_the_following.<locals>.<lambda> at 0x7f00f6744430>]}

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mcall_fixture_func#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        fixturefunc: _FixtureFunc[FixtureValue], request: FixtureRequest, kwargs#x1B[90m#x1B[39;49;00m
    ) -> FixtureValue:#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m inspect.isgeneratorfunction(fixturefunc):#x1B[90m#x1B[39;49;00m
            fixturefunc = cast(Callable[..., Generator[FixtureValue]], fixturefunc)#x1B[90m#x1B[39;49;00m
            generator = fixturefunc(**kwargs)#x1B[90m#x1B[39;49;00m
            #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                fixture_result = #x1B[96mnext#x1B[39;49;00m(generator)#x1B[90m#x1B[39;49;00m
            #x1B[94mexcept#x1B[39;49;00m #x1B[96mStopIteration#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                #x1B[94mraise#x1B[39;49;00m #x1B[96mValueError#x1B[39;49;00m(#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mrequest.fixturename#x1B[33m}#x1B[39;49;00m#x1B[33m did not yield a value#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m) #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mNone#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            finalizer = functools.partial(_teardown_yield_fixture, fixturefunc, generator)#x1B[90m#x1B[39;49;00m
            request.addfinalizer(finalizer)#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            fixturefunc = cast(Callable[..., FixtureValue], fixturefunc)#x1B[90m#x1B[39;49;00m
>           fixture_result = fixturefunc(**kwargs)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31m..../test/lib/python3.10.../site-packages/_pytest/fixtures.py#x1B[0m:930: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/compatibility_suite/test_v4_matching_rules.py#x1B[0m:371: in the_request_is_compared_to_the_expected_one
    #x1B[0m#x1B[94mwith#x1B[39;49;00m pact.serve(raises=#x1B[94mFalse#x1B[39;49;00m) #x1B[94mas#x1B[39;49;00m srv:#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31msrc/pact/pact.py#x1B[0m:773: in __enter__
    #x1B[0m#x1B[96mself#x1B[39;49;00m._handle = pact_ffi.create_mock_server_for_transport(#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

pact = PactHandle(49675), addr = 'localhost', port = 44751, transport = 'http'
transport_config = None

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mcreate_mock_server_for_transport#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        pact: PactHandle,#x1B[90m#x1B[39;49;00m
        addr: #x1B[96mstr#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        port: #x1B[96mint#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        transport: #x1B[96mstr#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        transport_config: #x1B[96mstr#x1B[39;49;00m | #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> PactServerHandle:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""#x1B[39;49;00m
    #x1B[33m    Create a mock server for the provided Pact handle and transport.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    [Rust#x1B[39;49;00m
    #x1B[33m    `pactffi_create_mock_server_for_transport`](https://docs.rs/pact_ffi/0.4.28/pact_ffi/?search=pactffi_create_mock_server_for_transport)#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Args:#x1B[39;49;00m
    #x1B[33m        pact:#x1B[39;49;00m
    #x1B[33m            Handle to the Pact model.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m        addr:#x1B[39;49;00m
    #x1B[33m            The address to bind to.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m        port:#x1B[39;49;00m
    #x1B[33m            The port number to bind to. A value of zero will result in the#x1B[39;49;00m
    #x1B[33m            operating system allocating an available port.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m        transport:#x1B[39;49;00m
    #x1B[33m            The transport to use (i.e. http, https, grpc). The underlying Pact#x1B[39;49;00m
    #x1B[33m            library will interpret this, typically in a case-sensitive way.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m        transport_config:#x1B[39;49;00m
    #x1B[33m            Configuration to be passed to the transport. This must be a valid#x1B[39;49;00m
    #x1B[33m            JSON string, or `None` if not required.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Returns:#x1B[39;49;00m
    #x1B[33m        A handle to the mock server.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Raises:#x1B[39;49;00m
    #x1B[33m        RuntimeError:#x1B[39;49;00m
    #x1B[33m            If the mock server could not be created. The error message will#x1B[39;49;00m
    #x1B[33m            contain details of the error.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        ret: #x1B[96mint#x1B[39;49;00m = lib.pactffi_create_mock_server_for_transport(#x1B[90m#x1B[39;49;00m
            pact._ref,#x1B[90m#x1B[39;49;00m
            addr.encode(#x1B[33m"#x1B[39;49;00m#x1B[33mutf-8#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            port,#x1B[90m#x1B[39;49;00m
            transport.encode(#x1B[33m"#x1B[39;49;00m#x1B[33mutf-8#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            (transport_config.encode(#x1B[33m"#x1B[39;49;00m#x1B[33mutf-8#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m) #x1B[94mif#x1B[39;49;00m transport_config #x1B[94melse#x1B[39;49;00m ffi.NULL),#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m ret > #x1B[94m0#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m PactServerHandle(ret)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m ret == -#x1B[94m1#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mAn invalid Pact handle was received: #x1B[39;49;00m#x1B[33m{#x1B[39;49;00mpact#x1B[33m}#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94melif#x1B[39;49;00m ret == -#x1B[94m2#x1B[39;49;00m:  #x1B[90m# noqa: PLR2004#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            msg = #x1B[33m"#x1B[39;49;00m#x1B[33mInvalid transport_config JSON.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94melif#x1B[39;49;00m ret == -#x1B[94m3#x1B[39;49;00m:  #x1B[90m# noqa: PLR2004#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            msg = #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mPact mock server could not be started for #x1B[39;49;00m#x1B[33m{#x1B[39;49;00mpact#x1B[33m}#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94melif#x1B[39;49;00m ret == -#x1B[94m4#x1B[39;49;00m:  #x1B[90m# noqa: PLR2004#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            msg = #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mPanick during Pact mock server creation for #x1B[39;49;00m#x1B[33m{#x1B[39;49;00mpact#x1B[33m}#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94melif#x1B[39;49;00m ret == -#x1B[94m5#x1B[39;49;00m:  #x1B[90m# noqa: PLR2004#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            msg = #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mAddress is invalid: #x1B[39;49;00m#x1B[33m{#x1B[39;49;00maddr#x1B[33m}#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            msg = #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mAn unknown error occurred during Pact mock server creation for #x1B[39;49;00m#x1B[33m{#x1B[39;49;00mpact#x1B[33m}#x1B[39;49;00m#x1B[33m.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mRuntimeError#x1B[39;49;00m(msg)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       RuntimeError: Pact mock server could not be started for PactHandle(49675).#x1B[0m

#x1B[1m#x1B[.../src/pact_ffi/__init__.py#x1B[0m:5035: RuntimeError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@JP-Ellis JP-Ellis merged commit 9a92e0d into main Nov 19, 2025
87 of 89 checks passed
@JP-Ellis JP-Ellis deleted the chore/update-macos-runners branch November 19, 2025 00:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants