diff --git a/chainsyncer/store/fs.py b/chainsyncer/store/fs.py index 9ebe20c..c70889c 100644 --- a/chainsyncer/store/fs.py +++ b/chainsyncer/store/fs.py @@ -83,6 +83,7 @@ class SyncFsItem: block_number += 1 tx_index = 0 if self.target >= 0 and block_number > self.target: + self.sync_state.move(self.state_key, self.sync_state.DONE) raise SyncDone(self.target) else: tx_index += 1 @@ -186,7 +187,7 @@ class SyncFsStore: factory = SimpleFileStoreFactory(base_filter_path, binary=True) filter_state_backend = PersistedState(factory.add, 0, check_alias=False) self.filter_state = SyncState(filter_state_backend) - self.filters = [] + self.filters = [] # used by SyncSession def register(self, fltr): diff --git a/tests/test_fs.py b/tests/test_fs.py index 70f0559..7415913 100644 --- a/tests/test_fs.py +++ b/tests/test_fs.py @@ -216,6 +216,29 @@ class TestFs(unittest.TestCase): store = SyncFsStore(self.path, session_id='foo') store.start() o = store.get(0) + self.assertEqual(o.cursor, 2) + self.assertEqual(o.target, 13) + o.next(advance_block=True) + o.next(advance_block=True) + + session.stop(o) + store = SyncFsStore(self.path, session_id='foo') + store.start() + self.assertEqual(o.cursor, 4) + self.assertEqual(o.target, 13) + + + def test_sync_history_complete(self): + store = SyncFsStore(self.path, session_id='foo') + session = SyncSession(store) + + session.start(target=3) + o = session.get(0) + o.next(advance_block=True) + o.next(advance_block=True) + o.next(advance_block=True) + with self.assertRaises(SyncDone): + o.next(advance_block=True) if __name__ == '__main__':