v1.6.2
A test suite that can be trusted
Nothing on sigit.si works differently after this release. It carries a single fix, to our own test suite rather than to the product, and it ships on its own because a suite that fails at random is the one thing that makes every later release harder to trust.
A test run that could poison itself
Git runs a maintenance pass in the background after a fetch, which creates and then deletes a lock file inside the repository it just updated. Our tests build throwaway repositories in a temporary directory and delete the directory when the example finishes, so the two were occasionally walking the same tree at the same time: the cleanup would reach for a file that git had already removed and raise.
That alone would be a harmless, if annoying, flake. The damage came from where it was raised. Cleanup runs after the test body but before the database is rolled back, so an error there skipped the rollback entirely and left that test's rows behind. Every later test that expected a clean database then failed on data it never created, in files that had nothing to do with the one that lost the race.
The result was a run where thirteen tests failed across two unrelated areas, on code identical to a run that had passed half an hour earlier. The fix turns git's background maintenance off for the duration of the suite, and makes the cleanup step incapable of failing a test on its way out.
Why it has a version of its own
This is the first release we have cut for a fix that users cannot see. It is here rather than bundled into the next feature release because the fix belongs on our release branch now, and the work queued behind it is not ready to ship.