intermittent failure in _zkapauthorizer.tests.test_recover.StatefulRecoverTests.test_recover
[FAIL]
Traceback (most recent call last):
Failure: testtools.testresult.real._StringException: Traceback (most recent call last):
File "C:\hostedtoolcache\windows\Python\3.9.10\x64\lib\site-packages\_zkapauthorizer\tests\test_recover.py", line 150, in test_recover
run_state_machine_as_test(
File "C:\hostedtoolcache\windows\Python\3.9.10\x64\lib\site-packages\hypothesis\stateful.py", line 222, in run_state_machine_as_test
run_state_machine(state_machine_factory)
File "C:\hostedtoolcache\windows\Python\3.9.10\x64\lib\site-packages\hypothesis\stateful.py", line 107, in run_state_machine
@given(st.data())
File "C:\hostedtoolcache\windows\Python\3.9.10\x64\lib\site-packages\hypothesis\core.py", line 1190, in wrapped_test
raise the_error_hypothesis_found
File "C:\hostedtoolcache\windows\Python\3.9.10\x64\lib\site-packages\_zkapauthorizer\tests\test_recover.py", line 90, in snapshot_equals_database
self.case.assertThat(
File "C:\hostedtoolcache\windows\Python\3.9.10\x64\lib\site-packages\testtools\testcase.py", line 480, in assertThat
raise mismatch_error
testtools.matchers._impl.MismatchError: !=:
reference = ['BEGIN TRANSACTION;',
'CREATE TABLE [0] ([0] REAL);',
'INSERT INTO "0" VALUES(1.12589990684262408748e+15);',
'CREATE TABLE [1] ([0] INT);',
'COMMIT;']
actual = ['BEGIN TRANSACTION;',
'CREATE TABLE [0] ([0] REAL);',
'INSERT INTO "0" VALUES(1.12589990684262430953e+15);',
'CREATE TABLE [1] ([0] INT);',
'COMMIT;']
: after <function <lambda>> on <sqlite3.Connection object at 0x0000019744DC7E40>: source (reference) database iterdump does not equal sink (actual) database iterdump
_zkapauthorizer.tests.test_recover.StatefulRecoverTests.test_recover
This would be deterministic if CI had a Hypothesis database. Since it doesn't, it's down to luck whether Hypothesis finds a floating point value that doesn't round-trip or not.
We don't really care about floating point round-tripping right now because there are no REALs in ZKAPAuthorizer's schema anywhere. However, it would be nice if it just worked right so we don't have to be careful to stay within some arbitrarily constrained version of SQL to be sure the replica/recovery system will work.