https://git.schokokeks.org/derivepassphrase.git/tree/96a6de836795685b74c4172cf8f807fd187bce47Recent commits to derivepassphrase.git (96a6de836795685b74c4172cf8f807fd187bce47)2026-07-06T21:29:46+02:00tag:gitlist.org,2012:commit/96a6de836795685b74c4172cf8f807fd187bce47Update wishlist to post-v0.6.12026-07-06T21:29:46+02:00Marco Riccisoftware@the13thletter.info
<pre></pre>
tag:gitlist.org,2012:commit/84cfbefc857e59bbd2379d5201d338fa493d6d54Release 0.6.12026-07-06T21:28:06+02:00Marco Riccisoftware@the13thletter.info
<pre></pre>
tag:gitlist.org,2012:commit/faad82c15c751fccb56639ec0f63b9181aa93211Merge branch 'release-0.6.1-preparations'2026-07-06T21:20:40+02:00Marco Riccisoftware@the13thletter.info
<pre>Prepare to release derivepassphrase v0.6.1
* release-0.6.1-preparations:
Update wishlist
Update the translation template, the German translation, and the message catalogs
Add changelog entries for economic-test-suite, click-8.4.2-compatibility and openssh-bug3967-workaround
Reformat everything with ruff
Update wishlist
Set the Python path correctly during pytest invocation
</pre>
tag:gitlist.org,2012:commit/6e6b81b3c29295e12d0cfb1cafb86885f9585ddeUpdate wishlist2026-07-06T20:19:03+02:00Marco Riccisoftware@the13thletter.info
<pre>Also reference the new entry in the changelog.
</pre>
tag:gitlist.org,2012:commit/180f4092b7d8f31d577478744bd4cd1de991b2cfUpdate the translation template, the German translation, and the message catalogs2026-07-05T22:34:45+02:00Marco Riccisoftware@the13thletter.info
<pre></pre>
tag:gitlist.org,2012:commit/f6501cdea5b9af2c5ea73367239b38dd7ef7f69bAdd changelog entries for economic-test-suite, click-8.4.2-compatibility and openssh-bug3967-workaround2026-07-05T22:22:00+02:00Marco Riccisoftware@the13thletter.info
<pre></pre>
tag:gitlist.org,2012:commit/b21188f464eb047ac53f122b2ec64eb8a8a383acReformat everything with ruff2026-07-05T21:47:45+02:00Marco Riccisoftware@the13thletter.info
<pre>Linting and type checking passes, so nothing to do there.
</pre>
tag:gitlist.org,2012:commit/a696063933df2258448ce50c38cfdfe5ce80a4baUpdate wishlist2026-07-05T21:46:51+02:00Marco Riccisoftware@the13thletter.info
<pre></pre>
tag:gitlist.org,2012:commit/0bf24eb16ec698d7759657cb810385ec7388f74cSet the Python path correctly during pytest invocation2026-07-05T21:31:22+02:00Marco Riccisoftware@the13thletter.info
<pre>Some of our tests spawn subprocesses, and without this, the subprocesses
fail to import code from the `tests` hierarchy (e.g., `tests.data`.)
We have so far sidestepped this issue by requiring `$PYTHONPATH` to be
set accordingly, but it turns out that setting this in the pytest
settings works even more reliably.
In the long run, it might be smarter to use a similar source layout
in `tests` as we already do in `src`: a top-level
`test_derivepassphrase` package, and the `data`, `machinery` and other
tests modules/packages as submodules/subpackages of
`test_derivepassphrase`.
</pre>
tag:gitlist.org,2012:commit/caa1b1748a9b129e2e1afd684c0d52905e6a2df8Merge branch 'economic-test-suite'2026-07-05T16:57:37+02:00Marco Riccisoftware@the13thletter.info
<pre>This topic branch implements steps to make the test suite more
economical (i.e., to ensure a high value-to-code ratio in the test
suite) on the grounds that changes to the main codebase usually cause
changes to the test suite, and thus the test suite needs similar
management to the main codebase regarding technical debt.
1. As the first big step, we divide our tests semantically into
"regression tests" and "correctness tests", serving [the two main
purposes of a test suite][TWO_KINDS]: fast feedback ("regression
tests") vs. high coverage/confidence ("correctness tests").
Specifically:
- During regression testing, random input generation is turned
down severely, currently to three examples. In the long run,
property-based tests without explicit examples will be skipped,
and thus every non-correctness-only hypothesis test should have
at least one explicit example.
- Regression tests that "should" be correctness tests shall be
implemented as property-based tests with explicit examples.
Conversely, property-based tests that implement an exhaustive
testing matrix over some parameter set shall be refactored such
that the testing matrix is expressed with
`pytest.mark.parametrize`. (It is possible for a test to be
a "combined" test using both `pytest.mark.parametrize` and
`hypothesis.given`.)
2. As a second step, avoid using "heavyweight" machinery if more
"lightweight" machinery will do. Specifically, avoid spawning or
interfacing with an external SSH agent if the internal stub SSH
agent works just as well, e.g., because the communication is being
stubbed out anyway.
Beyond these two steps, add several quality-of-life improvements to the
test suite:
- To convert `parametrize`'d tests to hypothesis tests, add
a converter function that takes the same arguments as the
`parametrize` mark and decorates the respective function with the
equivalent explicit examples (and, if not yet a hypothesis test,
also synthesizes a `hypothesis.given`).
- Fix the stub SSH agent to behave more like a real communication
socket (incomplete messages, EBADF after closing), thus also making
it more suitable to model actual connection problems.
- Clean up multiple "magic strings" in the test suite by introducing
appropriate enums.
- Move some common setup code or parametrization into the tests
package.
- Update the tooling: update `ruff`, and use `pyrefly` in addition to
`mypy`.
[TWO_KINDS]: https://blog.nelhage.com/post/two-kinds-of-testing/ "Nelson Elhage: Two kinds of testing"
* economic-test-suite: (28 commits)
Restore the `test_hash_length_expansion`/`test_wrong_initial_hash_length` vault test
Fix some test coverage slipups
Define `use_stub_agent`/`use_stub_agent_with_address` in conftest
Add a heavy-duty test for Sequin internals
Implement missing agent system support via tests.data.SystemSupportAction
Move some setup "action" classes into tests.data
Turn some parametrized unit tests into nominal property-based tests
Rewrite the vault CLI tests for config management to use the stub agent
Fix tiny mistakes across the test suite
Update tooling (mypy/pyrefly, mkdocstrings overrides)
Run the vault utility `key_to_phrase` tests against the stub SSH agent
Add a pytest marker for external SSH agent use
Run vault CLI config management tests against the stub agent where possible
Use the stub agent for SSH agent client communications faking
Harmonize tests for missing SSH agent communication support
Reformat recent test changes for consistent style
Type generators explicitly as generators, not iterators
Refactor the (SSH agent) testing machinery tests for modularity
Re-align the stubbed SSH agent socket with "real world" behavior
Serialize the SSH agent protocol numbers as request/response codes
...
</pre>