> python -m unittest -v

test_database_reference_mismatch (test_restore.RecoveryTests.test_database_reference_mismatch) ... ok
test_duplicate_manifest_name (test_restore.RecoveryTests.test_duplicate_manifest_name) ... ok
test_expected_count_mismatch (test_restore.RecoveryTests.test_expected_count_mismatch) ... ok
test_good_restore_and_readonly_probes (test_restore.RecoveryTests.test_good_restore_and_readonly_probes) ... ok
test_hardlink_rejected (test_restore.RecoveryTests.test_hardlink_rejected) ... ok
test_interruption_cleanup_each_stage (test_restore.RecoveryTests.test_interruption_cleanup_each_stage) ... ok
test_missing_file (test_restore.RecoveryTests.test_missing_file) ... ok
test_observer_failure_cleans_only_owned_restore (test_restore.RecoveryTests.test_observer_failure_cleans_only_owned_restore) ... ok
test_path_traversal (test_restore.RecoveryTests.test_path_traversal) ... ok
test_snapshot_mismatch_with_valid_hashes (test_restore.RecoveryTests.test_snapshot_mismatch_with_valid_hashes) ... ok
test_symlink_rejected (test_restore.RecoveryTests.test_symlink_rejected) ... ok
test_truncated_database_even_with_updated_hash (test_restore.RecoveryTests.test_truncated_database_even_with_updated_hash) ... ok
test_truncated_database_hash (test_restore.RecoveryTests.test_truncated_database_hash) ... ok

----------------------------------------------------------------------
Ran 13 tests in 0.116s

OK

> python operations.py
{"checks": 11, "matched": 11, "passed": true, "report": "operations-report.html"}


