https://git.schokokeks.org/derivepassphrase.git/tree/07524c7fe9000d747e6c28b3a6dd1dd8dbd21e7c Recent commits to derivepassphrase.git (07524c7fe9000d747e6c28b3a6dd1dd8dbd21e7c) 2025-06-01T23:05:23+02:00 tag:gitlist.org,2012:commit/07524c7fe9000d747e6c28b3a6dd1dd8dbd21e7c Embed our "wishlist" branch in the documentation 2025-06-01T23:05:23+02:00 Marco Ricci software@the13thletter.info <pre>The contents of `docs/wishlist/` now host a checkout of the `wishlist` branch, providing our own bug and wish listing. The navigation includes a new section "Wishlist", and the section includes custom CSS styling. The "actions" partial template is also updated so that it generates correct links to the raw file on GitHub, i.e., on the "wishlist" branch instead of on the "master" branch. &lt;/pre&gt; tag:gitlist.org,2012:commit/01cc80bfa5585ce8cff561e341852e3d522a30be Merge topic branch 'click-821-prompt-testing' into master 2025-05-29T23:04:56+02:00 Marco Ricci software@the13thletter.info <pre>* click-821-prompt-testing: Mitigate testing discrepancies from click 8.2.0 and below &lt;/pre&gt; tag:gitlist.org,2012:commit/62c0d2918d5a152b18510e781a1f29ea0584f638 Mitigate testing discrepancies from click 8.2.0 and below 2025-05-29T23:02:50+02:00 Marco Ricci software@the13thletter.info <pre>A discrepancy exists between the documentation of `click.prompt` and the actual behavior of `click.prompt` when mocked with `click.testing.CliRunner` on click 8.2.0 and below ([`pallets/click#2934`][BUG2934]): when prompting for input and if at end-of-file, the `CliRunner` may return an empty string instead of raising `click.Abort`. This usually translates to extra line breaks in the "mixed" and "echoed" runner output at the last prompt(s). We mitigate this discrepancy from both sides. On the code side, we wrap each call to `click.prompt` to treat aborts and empty responses the same, which is appropriate behavior for the types of prompts we issue. On the test side, we amend our existing tests to use empty-line input instead of no input, and explicitly test the "no input" scenario separately, accepting both the 8.2.0-or-lower or the 8.2.1-or-higher output. Because the behavior depends on the `click` version, which is beyond our control, we also adjust coverage measurement. [BUG2934]: https://github.com/pallets/click/issues/2934 &lt;/pre&gt; tag:gitlist.org,2012:commit/7ecfed1ef6bbc4cbe56546efec19a5f14376f373 Merge topic branch 'the-annoying-os' into master 2025-05-23T00:03:24+02:00 Marco Ricci software@the13thletter.info <pre>* the-annoying-os: Exclude unused test function xfail_on_the_annoying_os from coverage Document the changes due to The Annoying OS in the changelog Add changes necessary to appease The Annoying OS &lt;/pre&gt; tag:gitlist.org,2012:commit/e893fee9e8ae9dbb0636f951a1d5eb6147a2256d Exclude unused test function xfail_on_the_annoying_os from coverage 2025-05-23T00:01:28+02:00 Marco Ricci software@the13thletter.info <pre>&lt;/pre&gt; tag:gitlist.org,2012:commit/b6ffcb5bca3ed6f90992774ee5c0dbd9e600750d Document the changes due to The Annoying OS in the changelog 2025-05-22T23:16:25+02:00 Marco Ricci software@the13thletter.info <pre>&lt;/pre&gt; tag:gitlist.org,2012:commit/4d95672a9d6faa5531bf9be9f180b864c93a4053 Add changes necessary to appease The Annoying OS 2025-05-22T23:14:58+02:00 Marco Ricci software@the13thletter.info <pre>Add the changes that are necessary to appease The Annoying Operating System, a.k.a. Microsoft Windows. Some of these changes are OS-specific and (mostly) sensible, such as error codes being slightly different, or some functionality not being available. Some of these changes are coincidental, such as linting or type checking errors because unavailable symbols aren't even defined for the type checker's benefit. Finally, some changes are outright stupid, such as Python's documentation on `tempfile.gettempdir` being incomplete. In the end, most changes boil down to checking for a range of error codes instead of a specific one, or adding missing fixture calls, or silencing type checker warnings that aren't encountered in practice, or ruling out bad degenerate hypothesis test cases that aren't degenerate or aren't functional at all on The Annoying OS. &lt;/pre&gt; tag:gitlist.org,2012:commit/1cefab9b2c4c51366b0daa1eb06f1652ef6e53fd Merge topic branch 'concurrency-testing' into master 2025-05-20T20:12:39+02:00 Marco Ricci software@the13thletter.info <pre>* concurrency-testing: Document the new concurrency testing setup in the changelog Add tests for the configuration mutex Convert the configuration mutex to an explicit class GitHub: Closes #23. &lt;/pre&gt; tag:gitlist.org,2012:commit/e2a78697e37719107c025ae6a8a9dce25dfb3943 Document the new concurrency testing setup in the changelog 2025-05-19T21:45:21+02:00 Marco Ricci software@the13thletter.info <pre>&lt;/pre&gt; tag:gitlist.org,2012:commit/47376f4dcf2a2cc121df9b44b94b4036bf1bdb3b Add tests for the configuration mutex 2025-05-18T23:08:44+02:00 Marco Ricci software@the13thletter.info <pre>Conceptually, we need two types of tests for the configuration mutex: the first type asserts that the program logic works for *any* kind of (potentially fake) configuration mutex, and the second type asserts that the configuration mutex works for *any* set of (potentially fake) operations. In both cases, the fake parts usually impose a specific order of locking or running, controllable from the outside. We modify the `ConfigurationMutex` class to shift the management of the lock file descriptor into the lock and unlock functions themselves, instead of cramming them into `__enter__` and `__exit__`. (This means that subclasses need not deal with the lock file, or in fact, with any of the platform-specific locking machinery.) A custom subclass in the `tests` namespace provides a faked mutex that imposes a specific locking order, controllable from the outside via message passing. This subclass is then used with a state machine to test various sets of operations together with the faked mutex, i.e. to provide tests of the first type. (The standard tests, executed with the actual mutex implementation, already provide tests of the second type.) Regrettably, this set of tests requires concurrency support. Specifically, because the click testing machinery needs to reset process-wide properties for each concurrent unit, and because the tests require this to be done in a time-overlapped manner, the tests specifically require multiprocessing support. Care must also be taken to ensure that coverage management works: that it is enabled in the subprocesses whenever it is enabled in the parent (which is a straightforward configuration issue), and that the parent process does not accidentally remove these coverage measurements as junk files in case the subprocesses are spawned in specifically prepared and automatically cleaned up temporary directories (which is a manual labor issue). &lt;/pre&gt;