Skip to content

ci: cli-compat fails — 4 sse/sync integration tests broken in B2_Command_Line_Tool (all environments) #627

Open

Description

@ffumero2003

The cli-compat job keeps master CI red. After fuller analysis the scope is not Python-3.14-specific (original framing corrected): it is 4 integration tests that fail across every environment, and they live in the B2_Command_Line_Tool repo.

Actual scope

Four tests fail, always the same ones:

  • test/integration/test_b2_command_line.py::test_sse_b2
  • test/integration/test_b2_command_line.py::test_sse_c
  • test/integration/test_b2_command_line.py::test_sync_up[-None]
  • test/integration/test_b2_command_line.py::test_sync_up[sync-None]

They fail with a plain assert expected == actual at test/integration/helpers.py:138 — i.e. the CLI's server-side-encryption / sync behavior no longer matches what its own tests expect.

It is not a Python 3.14 issue. In B2_Command_Line_Tool's own CI these 4 fail on 3.10, 3.12, 3.14, pypy3.10, Docker, Linux bundles, Windows and macOS — the same "4 failed" everywhere. It only looked 3.14-specific here because this SDK's cli-compat job runs the CLI's unit tests on 3.10/3.12 but its integration tests only on the 3.14 entry, so 3.14 was the only red job. The Python-3.14 fork()/forkpty() warnings in the log are noise, not the cause.

It is not caused by this SDK release. The SDK's own unit tests pass on all versions; cli-compat is just surfacing a pre-existing break that already reddens the CLI repo's own CI.

The correct way to fix this

  1. Fix the root cause in B2_Command_Line_Tool — the failing tests and the assertion live there. A passing fix turns both the CLI's CI and this SDK's cli-compat job green at once.
  2. First determine which kind of fix it is: pull the expected-vs-actual for one sse test and decide whether it's (a) a stale test expectation to update (the sse/sync output changed deliberately — the assertion context references apiver_int >= 4, consistent with the CLI v5.0.0 / API v4 change), or (b) a real sse/sync regression to fix in code. Correlate with the most recent change that touched sse inheritance / sync output.
  3. Do not mark the 3.14 job continue-on-error / allow-failure. That would hide a broad, legitimate failure (and wouldn't help, since every version fails). Suppressing CI is the anti-pattern we're trying to avoid.
  4. Track it where the fix lands: open/raise the primary issue on B2_Command_Line_Tool and link it here. This issue stays as the SDK-side visibility (cli-compat red) and closes when the CLI fix propagates.

Standing practice to carry forward

  • No release while CI is red — the red here is real, so the answer is to fix it, not route around it.
  • cli-compat is a cross-repo canary: when it's red, check whether the downstream repo (the CLI) is red on its own first; if it is, the cause is localized there, not in the SDK change.

Acceptance

  • The 4 sse/sync integration tests pass in B2_Command_Line_Tool's CI.
  • This SDK's cli-compat job is green; master Continuous Integration is green.
  • No releases are cut while CI is red.

Activity

  1. self-assigned this
    on Oct 8, 2026
  2. added theissue type on Oct 8, 2026
  3. changed the title [-]ci: cli-compat integration tests fail on Python 3.14 (sse, sync_up)[/-] [+]ci: cli-compat fails — 4 sse/sync integration tests broken in B2_Command_Line_Tool (all environments)[/+] on Oct 8, 2026
  4. ffumero2003 commented on Oct 8, 2026

    @ffumero2003
    ContributorAuthor

    Re-scoped after fuller analysis: this is not Python-3.14-specific. The same 4 sse/sync integration tests fail across every environment in B2_Command_Line_Tool's own CI (3.10–3.14, pypy, Docker, bundles, Windows, macOS); it only surfaced as the 3.14 job here because cli-compat runs the CLI integration suite only on the 3.14 entry. Root cause and fix belong in B2_Command_Line_Tool (assertion at test/integration/helpers.py:138).

  5. ffumero2003 commented on Oct 8, 2026

    @ffumero2003
    ContributorAuthor

    Primary fix tracked in Backblaze/B2_Command_Line_Tool#1184 (the tests live in B2_Command_Line_Tool).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingtesting

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions