name: test on: workflow_call: permissions: contents: read jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: - "3.10" - "3.11" - "3.12" - "3.13" - "3.14" defaults: run: working-directory: libs/langgraph name: "test #${{ matrix.python-version }}" steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Set up Python ${{ matrix.python-version }} uses: ./.github/actions/uv_setup with: python-version: ${{ matrix.python-version }} cache-suffix: "test-langgraph" working-directory: libs/langgraph - name: Login to Docker Hub uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4 if: ${{ !github.event.pull_request.head.repo.fork }} with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_RO_TOKEN }} - name: Install dependencies shell: bash run: uv sync --frozen --group test --no-dev - name: Run tests shell: bash run: make test_parallel - name: Run strict msgpack pregel tests if: ${{ matrix.python-version == '3.13' }} shell: bash env: LANGGRAPH_STRICT_MSGPACK: "true" run: make test TEST="tests/test_pregel.py tests/test_pregel_async.py" - name: Ensure the tests did not create any additional files shell: bash run: | set -eu STATUS="$(git status)" echo "$STATUS" # grep will exit non-zero if the target message isn't found, # and `set -e` above will cause the step to fail. echo "$STATUS" | grep 'nothing to commit, working tree clean'