mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-06 11:18:54 -05:00
* Move all fixtures to pytest plugin folder * Add core dunder all * Update other dunder all's * Black reformat
104 lines
2.3 KiB
Python
104 lines
2.3 KiB
Python
from collections import namedtuple
|
|
from pathlib import Path
|
|
import json
|
|
|
|
import pytest
|
|
|
|
from redbot.cogs.downloader.repo_manager import RepoManager, Repo
|
|
from redbot.cogs.downloader.installable import Installable
|
|
|
|
__all__ = [
|
|
"patch_relative_to",
|
|
"repo_manager",
|
|
"repo",
|
|
"repo_norun",
|
|
"bot_repo",
|
|
"INFO_JSON",
|
|
"installable",
|
|
"fake_run_noprint",
|
|
]
|
|
|
|
|
|
async def fake_run(*args, **kwargs):
|
|
fake_result_tuple = namedtuple("fake_result", "returncode result")
|
|
res = fake_result_tuple(0, (args, kwargs))
|
|
print(args[0])
|
|
return res
|
|
|
|
|
|
async def fake_run_noprint(*args, **kwargs):
|
|
fake_result_tuple = namedtuple("fake_result", "returncode result")
|
|
res = fake_result_tuple(0, (args, kwargs))
|
|
return res
|
|
|
|
|
|
@pytest.fixture(scope="module", autouse=True)
|
|
def patch_relative_to(monkeysession):
|
|
def fake_relative_to(self, some_path: Path):
|
|
return self
|
|
|
|
monkeysession.setattr("pathlib.Path.relative_to", fake_relative_to)
|
|
|
|
|
|
@pytest.fixture
|
|
def repo_manager(tmpdir_factory):
|
|
rm = RepoManager()
|
|
# rm.repos_folder = Path(str(tmpdir_factory.getbasetemp())) / 'repos'
|
|
return rm
|
|
|
|
|
|
@pytest.fixture
|
|
def repo(tmpdir):
|
|
repo_folder = Path(str(tmpdir)) / "repos" / "squid"
|
|
repo_folder.mkdir(parents=True, exist_ok=True)
|
|
|
|
return Repo(
|
|
url="https://github.com/tekulvw/Squid-Plugins",
|
|
name="squid",
|
|
branch="rewrite_cogs",
|
|
folder_path=repo_folder,
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def repo_norun(repo):
|
|
repo._run = fake_run
|
|
return repo
|
|
|
|
|
|
@pytest.fixture
|
|
def bot_repo(event_loop):
|
|
cwd = Path.cwd()
|
|
return Repo(
|
|
name="Red-DiscordBot",
|
|
branch="WRONG",
|
|
url="https://empty.com/something.git",
|
|
folder_path=cwd,
|
|
loop=event_loop,
|
|
)
|
|
|
|
|
|
# Installable
|
|
INFO_JSON = {
|
|
"author": ("tekulvw",),
|
|
"bot_version": (3, 0, 0),
|
|
"description": "A long description",
|
|
"hidden": False,
|
|
"install_msg": "A post-installation message",
|
|
"required_cogs": {},
|
|
"requirements": ("tabulate"),
|
|
"short": "A short description",
|
|
"tags": ("tag1", "tag2"),
|
|
"type": "COG",
|
|
}
|
|
|
|
|
|
@pytest.fixture
|
|
def installable(tmpdir):
|
|
cog_path = tmpdir.mkdir("test_repo").mkdir("test_cog")
|
|
info_path = cog_path.join("info.json")
|
|
info_path.write_text(json.dumps(INFO_JSON), "utf-8")
|
|
|
|
cog_info = Installable(Path(str(cog_path)))
|
|
return cog_info
|