commit:     66db319b26bf6553b84ba1f53b1b774e18bb2c37
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 13 16:36:06 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Dec 13 16:36:24 2025 +0000
URL:        https://gitweb.gentoo.org/proj/steve.git/commit/?id=66db319b

Add a test for reclaiming tokens on exit

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 test/test_steve.py | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/test/test_steve.py b/test/test_steve.py
index 3ca81d0..d53e9e4 100644
--- a/test/test_steve.py
+++ b/test/test_steve.py
@@ -13,13 +13,14 @@ def test_basic(steve):
         f.write(tokens)
 
 
-def non_blocking_read_test(path: Path) -> None:
+def non_blocking_read_test(path: Path, return_tokens: bool = True) -> None:
     with path.open("r+b") as f:
         os.set_blocking(f.fileno(), False)
         tokens = f.read(6)
         assert len(tokens) == 5
         assert f.read(1) is None
-        f.write(tokens)
+        if return_tokens:
+            f.write(tokens)
 
 
 def test_too_many(steve):
@@ -61,6 +62,23 @@ def test_write_too_many(steve):
         assert err.value.errno == errno.ENOSPC
 
 
+def test_token_reclaim(steve):
+    steve.start(["-j", "5"])
+    with steve.dev_path.open("r+b") as f:
+        process = multiprocessing.Process(
+            target=non_blocking_read_test,
+            args=(steve.dev_path,),
+            kwargs={"return_tokens": False},
+        )
+        process.start()
+        process.join(10)
+        assert process.exitcode == 0
+
+        tokens = f.read(5)
+        assert len(tokens) == 5
+        f.write(tokens)
+
+
 def test_per_process_limit(steve):
     steve.start(["-j", "12", "-p", "5"])
     with steve.dev_path.open("r+b") as f:

Reply via email to