commit:     4918cc1a5e4458a8f3831a6c0e0900ee72e73932
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 13 16:33:08 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Dec 13 16:33:08 2025 +0000
URL:        https://gitweb.gentoo.org/proj/steve.git/commit/?id=4918cc1a

Add writing tests

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

 test/test_steve.py | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/test/test_steve.py b/test/test_steve.py
index 585c534..3ca81d0 100644
--- a/test/test_steve.py
+++ b/test/test_steve.py
@@ -1,6 +1,9 @@
+import errno
 import multiprocessing
 import os
 
+import pytest
+
 
 def test_basic(steve):
     steve.start(["-j", "5"])
@@ -24,6 +27,40 @@ def test_too_many(steve):
     non_blocking_read_test(steve.dev_path)
 
 
+def test_read_write_read(steve):
+    steve.start(["-j", "5"])
+    with steve.dev_path.open("r+b") as f:
+        os.set_blocking(f.fileno(), False)
+        tokens = f.read(6)
+        assert len(tokens) == 5
+        f.write(tokens[:2])
+        tokens = tokens[2:] + f.read(6)
+        assert len(tokens) == 5
+        f.write(tokens)
+
+
+def test_write_one_extra(steve):
+    steve.start(["-j", "5"])
+    with steve.dev_path.open("r+b") as f:
+        # writing one is fine
+        f.write(b"+")
+        os.set_blocking(f.fileno(), False)
+        tokens = f.read(7)
+        assert len(tokens) == 6
+        f.write(tokens[1:])
+
+
+def test_write_too_many(steve):
+    steve.start(["-j", "5"])
+    with steve.dev_path.open("r+b") as f:
+        tokens = f.read(5)
+        assert len(tokens) == 5
+        os.write(f.fileno(), tokens)
+        with pytest.raises(OSError) as err:
+            os.write(f.fileno(), b"12")
+        assert err.value.errno == errno.ENOSPC
+
+
 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