]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-138013: Move I/O tests to test_io (#138365)
authorCody Maloney <cmaloney@users.noreply.github.com>
Wed, 3 Sep 2025 09:37:06 +0000 (02:37 -0700)
committerGitHub <noreply@github.com>
Wed, 3 Sep 2025 09:37:06 +0000 (11:37 +0200)
Centralize `io` tests into the `test_io` module so they are easier to
find and work on. This will make it easier to split `test_general` which
takes 30+ seconds in a debug build on my machine.

This renames `test_bufio` to be `test_bufferedio` so that it matches
the implementation file name (`bufferedio.c`).

Validation performed:
Tests are run in parallel after change:

```bash
./python.exe -m test test_io  -uall,largefile,extralargefile -M12G -j8
```

Docstring reformat in `test_io/__init__.py` looks reasonable:

```python
>>> import test.test_io
>>> help(test.test_io)
```

Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
Lib/test/libregrtest/findtests.py
Lib/test/test_io/__init__.py
Lib/test/test_io/test_bufferedio.py [moved from Lib/test/test_bufio.py with 100% similarity]
Lib/test/test_io/test_file.py [moved from Lib/test/test_file.py with 100% similarity]
Lib/test/test_io/test_fileio.py [moved from Lib/test/test_fileio.py with 100% similarity]
Lib/test/test_io/test_general.py
Lib/test/test_io/test_largefile.py [moved from Lib/test/test_largefile.py with 100% similarity]
Lib/test/test_io/test_memoryio.py [moved from Lib/test/test_memoryio.py with 100% similarity]
Lib/test/test_io/test_univnewlines.py [moved from Lib/test/test_univnewlines.py with 100% similarity]

index f01c1240774707207a5d3300e548bb42bccc3895..79afaf9083ae596efd15c03e33a186c319de635c 100644 (file)
@@ -24,6 +24,7 @@ SPLITTESTDIRS: set[TestName] = {
     "test_future_stmt",
     "test_gdb",
     "test_inspect",
+    "test_io",
     "test_pydoc",
     "test_multiprocessing_fork",
     "test_multiprocessing_forkserver",
index 4b16ecc31156a512db4a28fe272e5339994a4538..c94fad3e779381dcf6c67cf6cfd1fb0c3cb58a1d 100644 (file)
@@ -1,3 +1,26 @@
+"""Tests for the io module and its implementations (_io and _pyio)
+
+Tests are split across multiple files to increase
+parallelism and focus on specific implementation pieces.
+
+* test_io
+  * test_bufferedio - tests file buffering
+  * test_memoryio - tests BytesIO and StringIO
+  * test_fileio - tests FileIO
+  * test_file - tests the file interface
+  * test_general - tests everything else in the io module
+  * test_univnewlines - tests universal newline support
+  * test_largefile - tests operations on a file greater than 2**32 bytes
+    (only enabled with -ulargefile)
+* test_free_threading/test_io - tests thread safety of io objects
+
+.. attention::
+   When writing tests for io, it's important to test both the C and Python
+   implementations. This is usually done by writing a base test that refers to
+   the type it is testing as an attribute. Then it provides custom subclasses to
+   test both implementations. This directory contains lots of examples.
+"""
+
 import os
 from test.support import load_package_tests
 
index e3d7d26a7e0f9c46df530fdd7a0718d569275a7a..30fe1e2f866091a252d73222eb511437c823731b 100644 (file)
@@ -1,24 +1,7 @@
-"""Unit tests for the io module."""
-
-# Tests of io are scattered over the test suite:
-# * test_bufio - tests file buffering
-# * test_memoryio - tests BytesIO and StringIO
-# * test_fileio - tests FileIO
-# * test_file - tests the file interface
-# * test_io.test_general - tests everything else in the io module
-# * test_univnewlines - tests universal newline support
-# * test_largefile - tests operations on a file greater than 2**32 bytes
-#     (only enabled with -ulargefile)
-# * test_free_threading/test_io - tests thread safety of io objects
-
-################################################################################
-# ATTENTION TEST WRITERS!!!
-################################################################################
-# When writing tests for io, it's important to test both the C and Python
-# implementations. This is usually done by writing a base test that refers to
-# the type it is testing as an attribute. Then it provides custom subclasses to
-# test both implementations. This file has lots of examples.
-################################################################################
+"""General tests for the io module.
+
+New tests should go in more specific modules; see test_io/__init__.py
+"""
 
 import abc
 import array