Skip to content

fix: pass doctests, s/doctest/doctests/, run them in gha, s/asyncpg/psycopg/ in doctest, fix keycloak flakiness: wait for first user #505

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 14 commits into from
Mar 27, 2024

Conversation

santi
Copy link
Collaborator

@santi santi commented Mar 26, 2024

Doctests are run as interpreted code from docstrings. In order to run these tests, libraries need to be available for the example code, and usage of async code either needs to be wrapped in an asyncio call or avoided completely.

This PR fixes up all failing doctests and makes make doctests target run successfully again.
Summary:

  • Renames Make target doctest to doctests to follow naming convention from tests target
  • Adds doctests step to Github Action workflow runs
  • Replaces asyncpg example from index.rst with psycopg to be able to run as a doctest. Also added psycopg as dev dependency (asyncpg was already missing from here)
  • Fixes Keycloak doctest by providing expected output, also did the same for regular test
  • Also: Fixed wait_for_container method in Keycloak module to actually wait for the first user to be created (in order to be able to authenticate at all) before returning the started container, if the command is dev-start. This is needed in order to prevent race conditions in flaky tests and for the sample usage code.

Doctests are run as interpreted code, where usage of await is only allowed inside async functions.
By replacing the async code with a sync equivalent, doctests should run nicely for the INDEX.rst once again.
@santi santi changed the title fix(): Doctests fix: Doctests Mar 26, 2024
@santi santi marked this pull request as ready for review March 27, 2024 12:03
@alexanderankin alexanderankin changed the title fix: Doctests fix: pass doctests, s/doctest/doctests/, run them in gha, s/asyncpg/psycopg/ in doctest, fix keycloak flakiness: wait for first user Mar 27, 2024
@alexanderankin alexanderankin merged commit 545240d into main Mar 27, 2024
@alexanderankin alexanderankin deleted the fix/postgres-doctests-in-INDEX.rst branch March 27, 2024 14:19
bearrito pushed a commit to bearrito/testcontainers-python that referenced this pull request Mar 30, 2024
…sycopg/ in doctest, fix keycloak flakiness: wait for first user (testcontainers#505)

Doctests are run as interpreted code from docstrings. In order to run
these tests, libraries need to be available for the example code, and
usage of async code either needs to be wrapped in an `asyncio` call or
avoided completely.

This PR fixes up all failing doctests and makes `make doctests` target
run successfully again.
Summary:
- Renames Make target `doctest` to `doctests` to follow naming
convention from `tests` target
- Adds `doctests` step to Github Action workflow runs
- Replaces `asyncpg` example from `index.rst` with `psycopg` to be able
to run as a doctest. Also added `psycopg` as dev dependency (`asyncpg`
was already missing from here)
- Fixes Keycloak doctest by providing expected output, also did the same
for regular test
- Also: Fixed `wait_for_container` method in `Keycloak` module to
actually wait for the first user to be created (in order to be able to
authenticate at all) before returning the started container, if the
command is `dev-start`. This is needed in order to prevent race
conditions in flaky tests and for the sample usage code.
alexanderankin pushed a commit that referenced this pull request Apr 1, 2024
🤖 I have created a release *beep* *boop*
---


##
[4.3.0](testcontainers-v4.2.0...testcontainers-v4.3.0)
(2024-04-01)


### Features

* **client:** Add custom User-Agent in Docker client as
`tc-python/<version>`
([#507](#507))
([dd55082](dd55082))


### Bug Fixes

* Add CassandraContainer
([#476](#476))
([507e466](507e466))
* add chroma container
([#515](#515))
([0729bf4](0729bf4))
* Add Weaviate module
([#492](#492))
([90762e8](90762e8))
* **cassandra:** make cassandra dependency optional/test-only
([#518](#518))
([bddbaeb](bddbaeb))
* **core:** allow setting docker command path for docker compose
([#512](#512))
([63fcd52](63fcd52))
* **google:** add support for Datastore emulator
([#508](#508))
([3d891a5](3d891a5))
* Improved Oracle DB module
([#363](#363))
([6e6d8e3](6e6d8e3))
* inconsistent test runs for community modules
([#497](#497))
([914f1e5](914f1e5))
* **kafka:** Add redpanda testcontainer module
([#441](#441))
([451d278](451d278))
* **kafka:** wait_for_logs in kafka container to reduce lib requirement
([#377](#377))
([909107b](909107b))
* **keycloak:** container should use dedicated API endpoints to
determine container readiness
([#490](#490))
([2e27225](2e27225))
* **nats:** Client-Free(ish) NATS container
([#462](#462))
([302c73d](302c73d))
* **new:** add a new Docker Registry test container
([#389](#389))
([0f554fb](0f554fb))
* pass doctests, s/doctest/doctests/, run them in gha,
s/asyncpg/psycopg/ in doctest, fix keycloak flakiness: wait for first
user
([#505](#505))
([545240d](545240d))
* pass updated keyword args to Publisher/Subscriber client in
google/pubsub
[#161](#161)
([#164](#164))
([8addc11](8addc11))
* Qdrant module
([#463](#463))
([e8876f4](e8876f4))
* remove accidentally added pip in dev dependencies
([#516](#516))
([dee20a7](dee20a7))
* **ryuk:** Enable Ryuk test suite. Ryuk image 0.5.1 -> 0.7.0. Add
RYUK_RECONNECTION_TIMEOUT env variable
([#509](#509))
([472b2c2](472b2c2))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants