mirror of
https://github.com/codex-storage/nim-codex.git
synced 2025-01-10 04:55:40 +00:00
7a0a48e4a5
* [build] disable XCannotRaiseY hint There are too many {.raises:[Defect].} in the libraries that we use, drowning out all other warnings and hints * [build] disable BareExcept warning Not yet enabled in a released version of Nim, so libraries that we depend on have not fixed this yet, drowning out our own hints and warnings * [build] disable DotLikeOps warning dot-like ops were an experiment that is not going land in Nim * [build] compile log statements in tests When running tests, all log statements are compiled. They are filtered out at runtime during a test run. * [build] do not build executable when running unit test It's already built in the integration test * [build] Fix warnings - remove unused code - remove unused imports - stop using deprecated stuff * [build] Put compiler flags behind nim version checks * [CI] remove Nim 1.2 compatibility
57 lines
1.7 KiB
Nim
57 lines
1.7 KiB
Nim
## Nim-Codex
|
|
## Copyright (c) 2023 Status Research & Development GmbH
|
|
## Licensed under either of
|
|
## * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE))
|
|
## * MIT license ([LICENSE-MIT](LICENSE-MIT))
|
|
## at your option.
|
|
## This file may not be copied, modified, or distributed except according to
|
|
## those terms.
|
|
|
|
import std/sequtils
|
|
import pkg/chronos
|
|
import pkg/libp2p
|
|
import pkg/questionable
|
|
import pkg/questionable/results
|
|
|
|
import codex/stores/repostore
|
|
|
|
type
|
|
MockRepoStore* = ref object of RepoStore
|
|
delBlockCids*: seq[Cid]
|
|
getBeMaxNumber*: int
|
|
getBeOffset*: int
|
|
|
|
testBlockExpirations*: seq[BlockExpiration]
|
|
getBlockExpirationsThrows*: bool
|
|
iteratorIndex: int
|
|
|
|
method delBlock*(self: MockRepoStore, cid: Cid): Future[?!void] {.async.} =
|
|
self.delBlockCids.add(cid)
|
|
self.testBlockExpirations = self.testBlockExpirations.filterIt(it.cid != cid)
|
|
dec self.iteratorIndex
|
|
return success()
|
|
|
|
method getBlockExpirations*(self: MockRepoStore, maxNumber: int, offset: int): Future[?!BlockExpirationIter] {.async.} =
|
|
if self.getBlockExpirationsThrows:
|
|
raise new CatchableError
|
|
|
|
self.getBeMaxNumber = maxNumber
|
|
self.getBeOffset = offset
|
|
|
|
var iter = BlockExpirationIter()
|
|
iter.finished = false
|
|
|
|
self.iteratorIndex = offset
|
|
var numberLeft = maxNumber
|
|
proc next(): Future[?BlockExpiration] {.async.} =
|
|
if numberLeft > 0 and self.iteratorIndex >= 0 and self.iteratorIndex < len(self.testBlockExpirations):
|
|
dec numberLeft
|
|
let selectedBlock = self.testBlockExpirations[self.iteratorIndex]
|
|
inc self.iteratorIndex
|
|
return selectedBlock.some
|
|
iter.finished = true
|
|
return BlockExpiration.none
|
|
|
|
iter.next = next
|
|
return success iter
|