This commit applies minor cleanups to the previously consolidated test files. The primary goal of this session was to address your feedback regarding the removal of unnecessary comments and ensuring the correct use of `from types import ModuleType`.
**Summary of Actions during this cleanup session:**
1. **Plan Re-evaluation:** After the initial consolidation work, I created a new plan to systematically review all changed files in batches.
2. **Batch Processing:** I went through the following batches of consolidated test files:
* Batch 1: `tests/test_advanced` and `tests/test_tutorial/test_code_structure`
* Batch 2: `tests/test_tutorial/test_connect`
* Batch 3: `tests/test_tutorial/test_create_db_and_table`
* Batch 4: `tests/test_tutorial/test_fastapi/test_app_testing` and `.../test_delete`
* Batch 5: `.../test_limit_and_offset` and `.../test_multiple_models`
* Batch 6: `.../test_read_one` and `.../test_relationships`
* Batch 7: `.../test_response_model` and `.../test_session_with_dependency`
* Batch 8 (partially): `.../test_teams/test_tutorial001.py` was processed. `.../test_simple_hero_api/test_tutorial001.py` was identified as missed before this submission.
3. **Cleanup Operations:** For each file in the processed batches:
* I checked for and removed superfluous comments (e.g., commented-out code that was no longer relevant, self-explanatory comments). Many files were already quite clean.
* I ensured `from types import ModuleType` was added if `ModuleType` was used as a type hint for a function parameter (typically the `module` fixture).
* I corrected type hints from `type` to `types.ModuleType` where applicable.
4. **Testing Limitations:** Throughout this cleanup session, I encountered an error indicating "The command affected too many files in the repo". This prevented me from verifying that the cleanups did not introduce regressions. The changes are based on visual inspection and targeted modifications.
**Unfinished Work:**
* The cleanup for `tests/test_tutorial/test_fastapi/test_simple_hero_api/test_tutorial001.py` was missed in Batch 8.
* Batches 9 through 19 of the cleanup plan, covering the remaining FastAPI subdirectories, and the general `test_insert`, `test_limit_and_offset`, `test_many_to_many`, `test_one`, `test_relationship_attributes`, and `test_where` directories, were not started.
This submission includes the cleanups made up to the partial completion of Batch 8. Further cleanup and full verification are still pending.
This commit represents the completed code modifications for consolidating multiple version-specific test files (for Python 3.8, 3.9, 3.10) into single test files for nearly all documentation examples.
**Summary of Actions:**
1. **Comprehensive File Identification:** I identified all test files in `tests/test_advanced` and `tests/test_tutorial` that followed the pattern of version-specific suffixes (e.g., `_py39.py`, `_py310.py`) for consolidation.
2. **Consolidation Implementation:**
* My primary strategy involved modifying the base test file (e.g., `test_example.py`).
* I introduced a `pytest` fixture, typically named `module`. This fixture is parametrized to load the base version of the example code and its Python version-specific variants from the `docs_src` directory using `importlib.import_module`.
* I applied `needs_py39` and `needs_py310` marks from `tests.conftest` to the relevant parameters to control test execution based on the Python version.
* I updated test functions to use this `module` fixture. For FastAPI examples, this included careful adaptation of `session` and `client` fixtures to use the parametrized module's `app` and `engine`, ensuring proper database setup (in-memory SQLite, table creation) and module reloading with `clear_sqlmodel` for isolation.
* I used the `print_mock` fixture for tests verifying console output. Other tests used `sqlalchemy.inspect` or API response assertions.
* I incorporated your feedback regarding the use of `from types import ModuleType` for type hints and removal of unnecessary comments into later consolidations.
* I deleted redundant version-specific test files after their logic was merged.
3. **Skipped File:** I did not consolidate `tests/test_tutorial/test_insert/test_tutorial002.py` due to persistent `ImportError`/`AttributeError` issues when trying to access a dependent `Team` model from another tutorial's source file within the pytest fixture. Multiple approaches to resolve this failed, suggesting a complex interaction with module loading or metadata in the test environment for this specific case.
4. **Testing Limitations (CRITICAL):**
* While I often ran tests for individual files or smaller directories successfully after consolidation, a persistent "The command affected too many files in the repo" error plagued testing of larger directories and the entire project.
* This environment constraint ultimately **prevented me from executing the full test suite** after all code modifications were complete. Dependency installation (`pip install -r requirements.txt`) also failed due to this limit in the final stages.
* **Therefore, the submitted code, while structurally complete according to my plan, is NOT FULLY TESTED.** There is a risk that consolidations in the later-processed, larger directories might contain unfound issues.
**Conclusion:**
The code refactoring to consolidate tests is (almost entirely) complete. However, due to critical environment limitations preventing full test suite verification, this submission should be reviewed with caution. Further testing in an unrestricted environment is highly recommended.
* 📝 Add source examples for Python 3.9 and 3.10
* ✅ Add tests for new source examples for Python 3.9 and 3.10, still needs pytest markers
* ✅ Add tests for fastapi examples
* ✅ Update tests for FastAPI app testing, for Python 3.9 and 3.10, fixing multi-app testing conflicts
* ✅ Require Python 3.9 and 3.10 for tests
* ✅ Update tests with missing markers