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: