Skip to content

Add tests for manually manipulated DB #410

@djmitche

Description

@djmitche

In GothenburgBitFactory/taskwarrior#3530 @snaka224 mentioned they edited the DB. They probably aren't the first or only person to do so!

The result is a "corrupted" DB in the sense that an invariant is invalidated: the cumulative effects of the ops in the operations table are not the same as the tasks table.

Let's add some tests for that circumstance to ensure that at least the "blast radius" of this corruption is limited.

  • TC does not panic or crash
  • Sync continues to run successfully
  • Only the modified task is affected locally
  • After sync, only the modified task is different between replicas

This would be a good first task since it just requires writing some tests. If bugs are found, we can file and fix those separately. The resulting tests are probably a mix of unit-style tests (such as for apply when an Update operation is applied to a task that has been deleted) and integration tests (for things that involve running sync). There are already some example integration tests in taskchampion/tests.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Ready

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions