[langchain-mongodb] "Run unit tests with minimum dependency versions" step in test and release workflows doesn't test min deps

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Fixed
    • Priority: Unknown
    • langchain-mongodb-0.12.0
    • Affects Version/s: None
    • Component/s: ABX
    • None
    • None
    • Python Drivers
    • Not Needed
    • None
    • None
    • None
    • None
    • None
    • None

      Summary

      "Run unit tests with minimum dependency versions" is a no-op in CI — uv run re-resolves to highest before pytest starts.

      Goal

      Make the minimum-dependency-version CI step actually test minimum dependency versions. It currently reinstalls everything at the highest versions before pytest runs, so the step has never validated a single declared floor in any of the four libs.

      Blocked by

      Nothing. But see "Sequencing" — this must not merge before the floor fixes it exposes.

      Current state (verified on main)

      Both .github/workflows/_test.yml and .github/workflows/_release.yml end with:

      - name: Run unit tests with minimum dependency versions
        run: |
          uv sync --python=${PYTHON_VERSION} --resolution=lowest-direct
          just unit_tests
      

      Every just test recipe is uv run pytest .... uv run re-syncs the project environment from the lockfile, and because the lockfile was written under a different resolution mode it discards the lowest-direct install entirely. uv states this outright:

      Ignoring existing lockfile due to change in resolution mode: `lowest-direct` vs. `highest`
      

      Measured in libs/langchain-mongodb-deepagents-vfs on Python 3.11:

      Package After uv sync --resolution=lowest-direct What pytest actually ran against
      deepagents 0.6.0 0.7.8
      tiktoken 0.8.0 0.14.0
      pydantic 2.13.0 2.13.4
      wcmatch 10.1 11.0.1

      The step therefore runs the same highest-version suite twice, in both the PR test workflow and the release workflow, for all four libs.

      Fix

      Prevent uv run from re-syncing, e.g.:

      uv sync --python=${PYTHON_VERSION} --resolution=lowest-direct
      uv run --no-sync pytest tests/unit_tests
      

      --no-sync was verified to preserve the lowest-direct environment. Note this cannot simply call just unit_tests unless the recipe itself is parameterized, since the recipe hardcodes uv run.

      Sequencing (important)

      This change turns on a test that has never run. Landing it alone will immediately red the CI of libs whose floors are wrong. Verified consequences at true minimum versions on Python 3.11:

      • langchain-mongodb — 12 failures in tests/unit_tests/test_cache.py (see linked ticket; langchain-core floor too low)
      • langchain-mongodb-deepagents-vfs — pytest INTERNALERROR, 0 tests collected (see linked ticket; pytest-asyncio floor too low)
      • langgraph-checkpoint-mongodb / langgraph-store-mongodb — not verified locally; their unit tests require a live MongoDB, which CI provides. Must be confirmed in CI before this lands.

      Land the floor fixes first, then this.

      Acceptance criteria

      • The minimum-version step demonstrably installs and tests floor versions — verifiable by printing resolved versions in the step output, so a future regression is visible in the log rather than silent.
      • CI is green for all four libs with the step actually running.

      Notes

      • This is why the pydantic/Python 3.14 and native-wheel floor problems went unnoticed: the one job designed to catch exactly this class of bug was inert.
      • Consider printing uv pip list (or a short subset) in the step so "minimum versions" is auditable from the CI log.

            Assignee:
            Unassigned
            Reporter:
            Casey Clements
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: