def test_argument_parse_order():
    """Check early early exit from argument parsing due to finding ``info``.

    Reserved argument parsing, which interally also resolves annotations, exits early
    after detecting the ``info`` argumnent. As a result, the annotation of the ``id_``
    argument in `tests.schema.test_annotated.type_a.Query` is never resolved. This
    results in `StrawberryArgument` not being able to detect that ``id_`` makes use of
    `typing.Annotated` and `strawberry.argument`.

    This behavior is fixed by by ensuring that `StrawberryArgument` makes use of the new
    `StrawberryAnnotation.evaluate` method instead of consuming the raw annotation.

    An added benefit of this fix is that by removing annotation resolving code from
    `StrawberryResolver` and making it a part of `StrawberryAnnotation`, it makes it
    possible for `StrawberryArgument` and `StrawberryResolver` to share the same type
    evaluation cache.

    Refer to: https://github.com/strawberry-graphql/strawberry/issues/2855
    """
    from tests.schema.test_annotated import type_a, type_b

    expected = """
    type Query {
      getTesting(id: UUID!): String
    }

    scalar UUID
    """

    schema_a = strawberry.Schema(type_a.Query)
    schema_b = strawberry.Schema(type_b.Query)

    assert str(schema_a) == str(schema_b)
    assert str(schema_a) == textwrap.dedent(expected).strip()
Check early early exit from argument parsing due to finding ``info``.

    Reserved argument parsing, which interally also resolves annotations, exits early
    after detecting the ``info`` argumnent. As a result, the annotation of the ``id_``
    argument in `tests.schema.test_annotated.type_a.Query` is never resolved. This
    results in `StrawberryArgument` not being able to detect that ``id_`` makes use of
    `typing.Annotated` and `strawberry.argument`.

    This behavior is fixed by by ensuring that `StrawberryArgument` makes use of the new
    `StrawberryAnnotation.evaluate` method instead of consuming the raw annotation.

    An added benefit of this fix is that by removing annotation resolving code from
    `StrawberryResolver` and making it a part of `StrawberryAnnotation`, it makes it
    possible for `StrawberryArgument` and `StrawberryResolver` to share the same type
    evaluation cache.

    Refer to: https://github.com/strawberry-graphql/strawberry/issues/2855
    
tests/schema/test_arguments.py