diff --git a/tests/helpers.nim b/tests/helpers.nim index 3b8c90f2a..7264a2f30 100644 --- a/tests/helpers.nim +++ b/tests/helpers.nim @@ -14,8 +14,10 @@ import ../libp2p/protocols/secure/secure import ../libp2p/switch import ../libp2p/nameresolving/[nameresolver, mockresolver] -import "."/[asyncunit, errorhelpers] -export asyncunit, errorhelpers, mockresolver +import errorhelpers +import utils/async_tests + +export async_tests, errorhelpers, mockresolver const StreamTransportTrackerName = "stream.transport" diff --git a/tests/pubsub/testgossipsub.nim b/tests/pubsub/testgossipsub.nim index 1d7b2c79c..3577da1fe 100644 --- a/tests/pubsub/testgossipsub.nim +++ b/tests/pubsub/testgossipsub.nim @@ -34,7 +34,7 @@ import protocols/pubsub/rpc/messages, ] import ../../libp2p/protocols/pubsub/errors as pubsub_errors -import ../helpers, ../utils/[async, futures, async, tests] +import ../helpers, ../utils/[futures, async_tests, xtests] from ../../libp2p/protocols/pubsub/mcache import window diff --git a/tests/pubsub/testgossipsub2.nim b/tests/pubsub/testgossipsub2.nim index ffc5c24e4..13ccb140c 100644 --- a/tests/pubsub/testgossipsub2.nim +++ b/tests/pubsub/testgossipsub2.nim @@ -25,8 +25,9 @@ import protocols/pubsub/pubsubpeer, protocols/pubsub/peertable, protocols/pubsub/rpc/messages, - ] -import ../helpers + ], + ../utils/[futures, async_tests], + ../helpers template tryPublish( call: untyped, require: int, wait = 10.milliseconds, timeout = 10.seconds diff --git a/tests/testdiscovery.nim b/tests/testdiscovery.nim index 7d92c2f2c..09510a42f 100644 --- a/tests/testdiscovery.nim +++ b/tests/testdiscovery.nim @@ -18,7 +18,7 @@ import discovery/discoverymngr, discovery/rendezvousinterface, ] -import ./helpers, ./asyncunit, ./utils/[async, assertions, futures] +import ./helpers, ./utils/[futures, assertions, async_tests] proc createSwitch(rdv: RendezVous = RendezVous.new()): Switch = SwitchBuilder diff --git a/tests/utils/async.nim b/tests/utils/async.nim deleted file mode 100644 index b65fcb338..000000000 --- a/tests/utils/async.nim +++ /dev/null @@ -1,30 +0,0 @@ -import chronos/futures, stew/results, chronos -import ./futures - -proc toOk(future: Future[void]): Result[void, string] = - return results.ok() - -proc toOk[T](future: Future[T]): Result[T, string] = - return results.ok(future.read()) - -proc toResult*[T](future: Future[T]): Result[T, string] = - if future.cancelled(): - return results.err("Future cancelled/timed out.") - elif future.finished(): - if not future.failed(): - return future.toOk() - else: - return results.err("Future finished but failed.") - else: - return results.err("Future still not finished.") - -proc waitForResult*[T]( - future: Future[T], timeout = DURATION_TIMEOUT -): Future[Result[T, string]] {.async.} = - discard await future.withTimeout(timeout) - return future.toResult() - -proc reset*[T](future: Future[T]): void = - # Likely an incomplete reset, but good enough for testing purposes (for now) - future.internalError = nil - future.internalState = FutureState.Pending diff --git a/tests/asyncunit.nim b/tests/utils/async_tests.nim similarity index 100% rename from tests/asyncunit.nim rename to tests/utils/async_tests.nim diff --git a/tests/utils/futures.nim b/tests/utils/futures.nim index e98d6526e..516663817 100644 --- a/tests/utils/futures.nim +++ b/tests/utils/futures.nim @@ -1,5 +1,33 @@ -import chronos +import chronos/futures, stew/results, chronos const DURATION_TIMEOUT* = 1.seconds DURATION_TIMEOUT_EXTENDED* = 1500.milliseconds + +proc toOk(future: Future[void]): Result[void, string] = + return results.ok() + +proc toOk[T](future: Future[T]): Result[T, string] = + return results.ok(future.read()) + +proc toResult*[T](future: Future[T]): Result[T, string] = + if future.cancelled(): + return results.err("Future cancelled/timed out.") + elif future.finished(): + if not future.failed(): + return future.toOk() + else: + return results.err("Future finished but failed.") + else: + return results.err("Future still not finished.") + +proc waitForResult*[T]( + future: Future[T], timeout = DURATION_TIMEOUT +): Future[Result[T, string]] {.async.} = + discard await future.withTimeout(timeout) + return future.toResult() + +proc reset*[T](future: Future[T]): void = + # Likely an incomplete reset, but good enough for testing purposes (for now) + future.internalError = nil + future.internalState = FutureState.Pending diff --git a/tests/utils/tests.nim b/tests/utils/xtests.nim similarity index 100% rename from tests/utils/tests.nim rename to tests/utils/xtests.nim