mirror of
https://github.com/samsonjs/vdirsyncer.git
synced 2026-03-25 08:55:50 +00:00
Tidy up test collection creation
- No need to empty collections, they're generated with a UUID and should always be empty (the code to empty them does not actually run in CI right now). - Move deletion code to _after_ the yield, since that's the order in which things happen. - Delete all collections asynchronously.
This commit is contained in:
parent
17f422c1b7
commit
71879045e4
1 changed files with 19 additions and 17 deletions
|
|
@ -1,7 +1,9 @@
|
|||
import asyncio
|
||||
import contextlib
|
||||
import subprocess
|
||||
import time
|
||||
import uuid
|
||||
from typing import Type
|
||||
|
||||
import aiostream
|
||||
import pytest
|
||||
|
|
@ -87,26 +89,26 @@ async def slow_create_collection(request, aio_connector):
|
|||
# storage limits.
|
||||
to_delete = []
|
||||
|
||||
async def delete_collections():
|
||||
for s in to_delete:
|
||||
await s.session.request("DELETE", "")
|
||||
async def inner(cls: Type, args: dict, collection_name: str) -> dict:
|
||||
"""Create a collection
|
||||
|
||||
async def inner(cls, args, collection):
|
||||
assert collection.startswith("test")
|
||||
collection += "-vdirsyncer-ci-" + str(uuid.uuid4())
|
||||
Returns args necessary to create a Storage instance pointing to it.
|
||||
"""
|
||||
assert collection_name.startswith("test")
|
||||
|
||||
args = await cls.create_collection(collection, **args)
|
||||
s = cls(**args)
|
||||
await _clear_collection(s)
|
||||
assert not await aiostream.stream.list(s.list())
|
||||
to_delete.append(s)
|
||||
# Make each name unique
|
||||
collection_name = f"{collection_name}-vdirsyncer-ci-{uuid.uuid4()}"
|
||||
|
||||
# Create the collection:
|
||||
args = await cls.create_collection(collection_name, **args)
|
||||
collection = cls(**args)
|
||||
|
||||
# Keep collection in a list to be deleted once tests end:
|
||||
to_delete.append(collection)
|
||||
|
||||
assert not await aiostream.stream.list(collection.list())
|
||||
return args
|
||||
|
||||
yield inner
|
||||
|
||||
await delete_collections()
|
||||
|
||||
|
||||
async def _clear_collection(s):
|
||||
async for href, etag in s.list():
|
||||
s.delete(href, etag)
|
||||
await asyncio.gather(*(c.session.request("DELETE", "") for c in to_delete))
|
||||
|
|
|
|||
Loading…
Reference in a new issue