Recent commits to derivepassphrase.git (1cefab9b2c4c51366b0daa1eb06f1652ef6e53fd) https://git.schokokeks.org/derivepassphrase.git/tree/1cefab9b2c4c51366b0daa1eb06f1652ef6e53fd Recent commits feed provided by GitList. Merge topic branch 'concurrency-testing' into master * 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. https://git.schokokeks.org/derivepassphrase.git/commit/1cefab9b2c4c51366b0daa1eb06f1652ef6e53fd software@the13thletter.info (Marco Ricci) Tue, 20 May 2025 20:12:39 +0200 1cefab9b2c4c51366b0daa1eb06f1652ef6e53fd Document the new concurrency testing setup in the changelog https://git.schokokeks.org/derivepassphrase.git/commit/e2a78697e37719107c025ae6a8a9dce25dfb3943 software@the13thletter.info (Marco Ricci) Mon, 19 May 2025 21:45:21 +0200 e2a78697e37719107c025ae6a8a9dce25dfb3943 Add tests for the configuration mutex 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). https://git.schokokeks.org/derivepassphrase.git/commit/47376f4dcf2a2cc121df9b44b94b4036bf1bdb3b software@the13thletter.info (Marco Ricci) Sun, 18 May 2025 23:08:44 +0200 47376f4dcf2a2cc121df9b44b94b4036bf1bdb3b Convert the configuration mutex to an explicit class The class form is easier to monkeypatch than the generator form. https://git.schokokeks.org/derivepassphrase.git/commit/48d3973ca29372cdaff248fcb742c61c8bcf3430 software@the13thletter.info (Marco Ricci) Sat, 12 Apr 2025 20:01:40 +0200 48d3973ca29372cdaff248fcb742c61c8bcf3430 Merge topic branch 'documentation-fixes' into master * documentation-fixes: Reintroduce explicit type annotations for vault CLI arguments https://git.schokokeks.org/derivepassphrase.git/commit/314f65ee96a03034e2d19eed2399fc14d9623b09 software@the13thletter.info (Marco Ricci) Wed, 09 Apr 2025 21:58:45 +0200 314f65ee96a03034e2d19eed2399fc14d9623b09 Reintroduce explicit type annotations for vault CLI arguments The command-line function for the "vault" subcommand is now implemented by accepting wildcard keyword arguments, so `mkdocstrings-python` no longer has explicit type information for the known list of keyword arguments to fall back on. So, explicitly (re-)annotate that list with type information. https://git.schokokeks.org/derivepassphrase.git/commit/4076d407e367536615cd63029a167c8710a2a17c software@the13thletter.info (Marco Ricci) Wed, 09 Apr 2025 21:53:48 +0200 4076d407e367536615cd63029a167c8710a2a17c Merge topic branch 'click-820-expected-incompatibilities' into master * click-820-expected-incompatibilities: Fix expected incompatibilities in the CLI machinery with click 8.2.0 https://git.schokokeks.org/derivepassphrase.git/commit/fcf724d2e617a7480c8ff1d380fcb378c4e50c33 software@the13thletter.info (Marco Ricci) Wed, 09 Apr 2025 19:47:01 +0200 fcf724d2e617a7480c8ff1d380fcb378c4e50c33 Fix expected incompatibilities in the CLI machinery with click 8.2.0 click 8.2.0 is currently in pre-release, though a release candidate has already been tagged as such. This candidate deprecated some internals, which we access. Thus fix what we can reasonably assume will otherwise be broken by click 8.2.0. https://git.schokokeks.org/derivepassphrase.git/commit/bbac630952e16e4ba0e9f7eef3c7538b4edbe646 software@the13thletter.info (Marco Ricci) Wed, 09 Apr 2025 19:43:39 +0200 bbac630952e16e4ba0e9f7eef3c7538b4edbe646 Merge topic branch 'cleanup-lockfiles-in-test-harness' into master * cleanup-lockfiles-in-test-harness: Clean up configuration write lock files in the test suite https://git.schokokeks.org/derivepassphrase.git/commit/d539649e3f89b92ff3123ebd8a2dddce40f24719 software@the13thletter.info (Marco Ricci) Wed, 09 Apr 2025 19:29:34 +0200 d539649e3f89b92ff3123ebd8a2dddce40f24719 Clean up configuration write lock files in the test suite When using a temporary, isolated `derivepassphrase` configuration directory in the test suite, also clean up the matching configuration write lock file, which is not located in the configuration directory. https://git.schokokeks.org/derivepassphrase.git/commit/34c4a591bc6fdd3f5856f169f645dc07f0560bcc software@the13thletter.info (Marco Ricci) Wed, 09 Apr 2025 19:27:50 +0200 34c4a591bc6fdd3f5856f169f645dc07f0560bcc