https://git.schokokeks.org/derivepassphrase.git/tree/27f35e7c4101164e42e08051b0698a55735f8322Recent commits to derivepassphrase.git (27f35e7c4101164e42e08051b0698a55735f8322)2026-06-18T06:15:10+02:00tag:gitlist.org,2012:commit/27f35e7c4101164e42e08051b0698a55735f8322Re-align the stubbed SSH agent socket with "real world" behavior2026-06-18T06:15:10+02:00Marco Riccisoftware@the13thletter.info
<pre>Let the stubbed SSH agent tolerate incomplete request messages, or
multiple request messages at once, within the same `sendall` call.
Furthermore, change the error type to OSError (EBADF) for I/O on closed
socket connections (mirroring the behavior of UNIX domain sockets) and
when closing the connection, assert that no incomplete requests have
been issued to the agent.
With this change, the stubbed SSH agent socket now usefully models the
communication channel between agent and client, and can be sensibly used
to simulate communication and protocol errors (or their absence). This
differentiates it—in terms of scope and use cases—from the agent
protocol response queue, which monkeypatches the client instead of
faking a server, and which operates on full request/response messages.
Add some commentary to the stubbed SSH agent socket docstring to this
effect.
</pre>
tag:gitlist.org,2012:commit/729c89799dc49635698c8f73a59ba79eb3c584a0Serialize the SSH agent protocol numbers as request/response codes2026-06-16T22:19:26+02:00Marco Riccisoftware@the13thletter.info
<pre>When calling `bytes` on the SSH agent protocol number enums, return
their corresponding serialization as request codes or response codes.
(A follow-up to 57e3b1ed832e865e9f9e8316f930b1beae3714f0.)
</pre>
tag:gitlist.org,2012:commit/3790413fb35878eb8500e29e7c6923104869d854Rewrite test data initializers for nicer API docs2026-06-16T19:55:01+02:00Marco Riccisoftware@the13thletter.info
<pre>In attribute declarations, `griffe`/`mkdocstring-python` elides the
object on which the outermost method is called (but correctly autolinks
the method itself). This looks good if the initializer is something
like `base64.b64_decode(data)` (which gets shortened to
`b64_decode(data)`), and terrible if the initializer is something like
`base64.b64_decode(data).decode()` (which gets shortened to `decode()`).
So, to get nicer API docs, rewrite some obvious cases where the object
would otherwise be elided in the "class-bound method + self argument"
style instead.
</pre>
tag:gitlist.org,2012:commit/c2efe74d47243d97f87240eee0045cbb58abff53Note that "spawning" an SSH agent in the tests may actually be "interfacing"2026-06-16T19:47:25+02:00Marco Riccisoftware@the13thletter.info
<pre></pre>
tag:gitlist.org,2012:commit/090f87b133247b5f688f5101f0229829616b22ddUse the BuiltinSSHAgentSocketProvider type in the tests2026-06-15T22:27:21+02:00Marco Riccisoftware@the13thletter.info
<pre>Again, instead of magic strings floating around in the test suite, use
the already existing enum instead.
</pre>
tag:gitlist.org,2012:commit/7bccff34588cfb6ac90bc0d277a40cab5b9a5cf2Use an enum for SSH agent configurations in the test suite2026-06-15T21:36:53+02:00Marco Riccisoftware@the13thletter.info
<pre>Instead of having all these magic strings floating around all over the
test suite, use a dedicated enum for consistency, discoverability, and
typo-resistance.
</pre>
tag:gitlist.org,2012:commit/b18d27971117d16358ddd511d69a11813464671eAuto-format everything due to tooling update2026-06-15T18:20:15+02:00Marco Riccisoftware@the13thletter.info
<pre></pre>
tag:gitlist.org,2012:commit/68497eb1efa715ef461aaf33c5e55fc982b190cbFix minor spelling/logic errors and missing TODOs in the test suite2026-06-14T22:46:36+02:00Marco Riccisoftware@the13thletter.info
<pre></pre>
tag:gitlist.org,2012:commit/6c704955736026fc4c77164542682cb2549f3e01Update tooling2026-06-14T22:46:36+02:00Marco Riccisoftware@the13thletter.info
<pre>`ruff` now checks for too many statements in a `try` block (PLW0717),
for non-trivial `__init__.py` files (RUF067), for explicitly comparing
floats with `__eq__` (RUF069) and for bad control flow in
a generator-based context manager (RUF075). We document our intentional
RUF069 and RUF075 violations, we fix the other occurrences of RUF075,
and we ignore PLW0717 and RUF067 for now.
</pre>
tag:gitlist.org,2012:commit/bd1fc69133c0bb9cc8634ab9fb18bc5a91e21f4aEnsure better test suite behavior for regression-only testing2026-06-14T22:46:36+02:00Marco Riccisoftware@the13thletter.info
<pre>Tweak the hypothesis settings for determinism and speed when running the
test suite solely for the purpose of regression testing [1], in the new
hypothesis profile "regression": test generation will be derandomized,
stateful step counts and example counts will be set very low. As all of
our slow-running tests are hypothesis-based, and all of our
hypothesis-based tests are slow because of the high example count, this
change alone immediately makes "regression-only" testing feasible for us
without having to skip hypothesis-based tests. (In fact, the hypothesis
derandomization feature appears to draw motivation from the same source
[1] as we do.)
As a counterpoint, mark test cases that are (or probably should be)
hypothesis-based, but test for completion or correctness purposes rather
than for regression purposes, with a custom marker
`correctness_focused`.
Also try to add at least one working example and one counterexample to
each hypothesis-based test, if feasible. This buys us the flexibility
(in the future) to remove test case generation from the "regression"
profile, if desired. The test cases would then still run the explicit
examples, and thus remain useful, instead of needing another separate
set of non-hypothesis tests to cover the same ground.
References:
1. Nelson Elhage: [Two kinds of testing][], particularly the section
"Test budget".
2. Alex Kladov: [How to Test][], particularly the section "Make Tests
Fast".
[Two kinds of testing]: https://blog.nelhage.com/post/two-kinds-of-testing/
[How to Test]: https://matklad.github.io/2021/05/31/how-to-test.html#Make-Tests-Fast
</pre>