Skip to content

Bug: provider overriding does not works with Litestar #119

Closed

Description

@nightblure

Hi!

I discovered that dependency overriding does not work with Litestar. I provide you with two tests with which you can try to reproduce the error:

def test_litestar_di_override_fail_on_provider_override() -> None:
    with TestClient(app=app) as client:
        with DIContainer.int_fn.override_context(12345364758999):
            response = client.get("/router/controller/handler")

    assert response.status_code == HTTP_200_OK, response.text
    assert response.json() == {
        "app_dependency": False,
        "controller_dependency": ["some"],
        "local_dependency": 12345364758999,  # ASSERTION ERROR HERE
        "router_dependency": "",
    }


def test_litestar_di_override_fail_on_override_providers() -> None:
    overrides = {
        'int_fn': 12345364758999,
    }

    with TestClient(app=app) as client:
        with DIContainer.override_providers(overrides):
            response = client.get("/router/controller/handler")

    assert response.status_code == HTTP_200_OK, response.text
    assert response.json() == {
        "app_dependency": False,
        "controller_dependency": ["some"],
        "local_dependency": 12345364758999,  # ASSERTION ERROR HERE
        "router_dependency": "",
    }

I haven’t yet figured out what’s going on: in the overriding logic or the litestar itself


Litestar version: 2.12.1
that-depends version: latest

Activity

  1. linked a pull request that will close this issuefix for provider overriding in litestar #120on Nov 17, 2024
  2. lesnik512 commented on Nov 17, 2024

    @lesnik512
    Member

    Hi! Interesting, overriding in fastapi works, Trying to figure out also

  3. lesnik512 commented on Nov 17, 2024

    @lesnik512
    Member

    Seems like Litestar for some reason clones object, passed to Provide.
    Because it has different id inside test client request and outside.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinglitestar

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions