https://git.schokokeks.org/derivepassphrase.git/tree/e191a498aad1688bb448bc56dfbfcc0263ea9c67Recent commits to derivepassphrase.git (e191a498aad1688bb448bc56dfbfcc0263ea9c67)2024-09-27T22:18:46+02:00tag:gitlist.org,2012:commit/e191a498aad1688bb448bc56dfbfcc0263ea9c67Fix outstanding formatting and linting issues2024-09-27T22:18:46+02:00Marco Riccisoftware@the13thletter.info
<pre></pre>
tag:gitlist.org,2012:commit/2f7af29d2ffc775bbfeab54e0d197d972a5ebe1dMerge topic branch 'remove-towncrier' into master2024-09-27T22:15:41+02:00Marco Riccisoftware@the13thletter.info
<pre>* t/remove-towncrier:
Switch from towncrier to scriv for changelog management
</pre>
tag:gitlist.org,2012:commit/a318351b05d94fa569bbaefcc793efa17832769cSwitch from towncrier to scriv for changelog management2024-09-27T21:35:32+02:00Marco Riccisoftware@the13thletter.info
<pre>I have found towncrier to be rather painful when used together with
Markdown entries: it feels very much like a reStructuredText-only tool
retrofitted with patchy Markdown support. In particular, towncrier
blindly concatenates all entries (assumed to be list items) into the
output (and adds the implied issue links afterwards), manually adjusted
for nicer indentation in an ad-hoc fashion. This fails horribly if the
changelog entry is anything except a single, paragraph-free list item;
it fails in particular for reference-style links and for multi-paragraph
entries.
So switch to scriv, by Ned Batchelder, which is a similar style to
towncrier. That too has its issues, such as the automatically
generated, non-configurable HTML4-style heading anchor, but it's
somewhat more tolerant/encouraging of manual editing of the changelog
entries and the changelog master file.
Since we're cleaning up the changelog, use this opportunity to fix the
formatting of the existing entries.
</pre>
tag:gitlist.org,2012:commit/586ce4b282ed1878a05db14efa99bc3d65fa7c34Merge topic branch 'hypothesis' into master2024-09-27T19:13:27+02:00Marco Riccisoftware@the13thletter.info
<pre>* t/hypothesis:
Add changelog entry for hypothesis use
Add hypothesis-based tests (and bugfix) for the vault derivation scheme
Set up the "hypothesis" testing library
</pre>
tag:gitlist.org,2012:commit/41424afd95e2324439828869194ce25dcd335c5aAdd changelog entry for hypothesis use2024-09-27T19:13:10+02:00Marco Riccisoftware@the13thletter.info
<pre></pre>
tag:gitlist.org,2012:commit/b685fdd3a683a781d48c35832818f9c4e0f6790aAdd hypothesis-based tests (and bugfix) for the vault derivation scheme2024-09-27T19:05:16+02:00Marco Riccisoftware@the13thletter.info
<pre>There are currently three such property-based tests: a test for general
adherence to constraints (with small numbers), and two tests
specifically for length and repeat constraints (with larger numbers).
Combining these into a single test caused the test runs to vary wildly
in execution time, which is undesirable from a configuration point of
view (and also causes hypothesis to complain).
The hypothesis tests actually uncovered a bug in the API specification
of the vault derivation scheme: during generation, we may run out of
possible characters for the next letter due to repeat constraints, but
only realize this now. This already generated a `ValueError`, but with
a confusing error message, and the documentation seemed to suggest that
all unsatisfiable constraints are already detected at construction time.
So now explicitly mention that constraint unsatisfiability may be
detected both in the `Vault` constructor and in `Vault.generate`, and
handle lower-lever `ValueError`s in `Vault.generate` explicitly too.
</pre>
tag:gitlist.org,2012:commit/bf906f3d8786229aba3513eef084814cd5b85b07Set up the "hypothesis" testing library2024-09-27T17:32:46+02:00Marco Riccisoftware@the13thletter.info
<pre>"hypothesis" is a Python library for property-based testing, i.e. for
asserting that the output of the tested code satisfies some property by
generating valid test inputs and testing these. For `derivepassphrase`
in particular, this means generating different passphrase constraint
settings and testing that the generated passphrases match these
constraints, no matter what constraints exactly are chosen (within
reason). The hypothesis library provides methods to generate test input
(test function parameter values, or custom walks for state machine-like
systems) and, for failing examples, shrink those to shorter/simpler ones
exhibiting the same error.
By its nature, hypothesis runs unit test functions multiple times with
different inputs, and so takes much longer than normal unit tests. (In
the default configuration, 200 examples per test are run.) It is
therefore sensible to set up alternate testing profiles with more or
less examples per test, and to include a mechanism in the test runner to
switch to these profiles. The hypothesis documentation provides an
explicit example for profile setup for pytest use, plus three sensible
configurations "ci", "dev" and "debug", which I copied. The pytest
command-line as called by `hatch test` is also straightforward to adapt:
add `--hypothesis-profile=...` to all pytest invocations. However, the
shape of the `hatch test` environment matrix no longer matches the
reality of scenarios we'd like to test (because we added a new
dimension: slow, thorough testing, or fast testing). So use this
opportunity to also clean up the matrix.
</pre>
tag:gitlist.org,2012:commit/ef6258d3cec6e30cda8968f822b223aaf0cb0f8aMerge topic branch 'issue12-ssh-agent-spawning' into master2024-09-22T19:23:07+02:00Marco Riccisoftware@the13thletter.info
<pre>* t/issue12-ssh-agent-spawning:
Remove debugging-only code and add missing docstring in pytest fixtures
</pre>
tag:gitlist.org,2012:commit/d01a4dc9631e6281c268228d281903643147e3f8Remove debugging-only code and add missing docstring in pytest fixtures2024-09-22T19:19:38+02:00Marco Riccisoftware@the13thletter.info
<pre></pre>
tag:gitlist.org,2012:commit/dd606b3a051f0ba3bc76d0ef6e14ba3fb5d87298Merge topic branch 'issue12-ssh-agent-spawning' into master2024-09-22T18:40:33+02:00Marco Riccisoftware@the13thletter.info
<pre>* t/issue12-ssh-agent-spawning:
Add Changelog entry for the test suite SSH agent spawner
Add test fixture for manually spawning known SSH agents
Retire non-repeatability check for unsuitable SSH keys in the tests
Add principal support for uploading SSH keys to the agent
Simplify some SSH agent key uploading tests
Support passing expected SSH agent response codes
GitHub: Closes #12.
</pre>