Guard module-level creation of Config objects (#2449)

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
This commit is contained in:
Toby Harradine 2019-02-14 15:36:48 +11:00 committed by GitHub
parent ac8b1fc108
commit b1066ad58f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 31 additions and 28 deletions

View File

@ -13,7 +13,7 @@ from redbot.core.events import init_events
from redbot.core.cli import interactive_config, confirm, parse_cli_flags from redbot.core.cli import interactive_config, confirm, parse_cli_flags
from redbot.core.core_commands import Core from redbot.core.core_commands import Core
from redbot.core.dev_commands import Dev from redbot.core.dev_commands import Dev
from redbot.core import __version__ from redbot.core import modlog, bank
from signal import SIGTERM from signal import SIGTERM
import asyncio import asyncio
import logging.handlers import logging.handlers
@ -139,6 +139,10 @@ def main():
red.add_cog(CogManagerUI()) red.add_cog(CogManagerUI())
if cli_flags.dev: if cli_flags.dev:
red.add_cog(Dev()) red.add_cog(Dev())
# noinspection PyProtectedMember
modlog._init()
# noinspection PyProtectedMember
bank._init()
loop = asyncio.get_event_loop() loop = asyncio.get_event_loop()
if os.name == "posix": if os.name == "posix":
loop.add_signal_handler(SIGTERM, lambda: asyncio.ensure_future(sigterm_handler(red, log))) loop.add_signal_handler(SIGTERM, lambda: asyncio.ensure_future(sigterm_handler(red, log)))

View File

@ -1,5 +1,4 @@
import datetime import datetime
import os
from typing import Union, List, Optional from typing import Union, List, Optional
import discord import discord
@ -42,6 +41,17 @@ _DEFAULT_MEMBER = {"name": "", "balance": 0, "created_at": 0}
_DEFAULT_USER = _DEFAULT_MEMBER _DEFAULT_USER = _DEFAULT_MEMBER
_conf: Config = None
def _init():
global _conf
_conf = Config.get_conf(None, 384734293238749, cog_name="Bank", force_registration=True)
_conf.register_global(**_DEFAULT_GLOBAL)
_conf.register_guild(**_DEFAULT_GUILD)
_conf.register_member(**_DEFAULT_MEMBER)
_conf.register_user(**_DEFAULT_USER)
class Account: class Account:
"""A single account. """A single account.
@ -54,18 +64,6 @@ class Account:
self.created_at = created_at self.created_at = created_at
def _register_defaults():
_conf.register_global(**_DEFAULT_GLOBAL)
_conf.register_guild(**_DEFAULT_GUILD)
_conf.register_member(**_DEFAULT_MEMBER)
_conf.register_user(**_DEFAULT_USER)
if not os.environ.get("BUILDING_DOCS"):
_conf = Config.get_conf(None, 384734293238749, cog_name="Bank", force_registration=True)
_register_defaults()
def _encoded_current_time() -> int: def _encoded_current_time() -> int:
"""Get the current UTC time as a timestamp. """Get the current UTC time as a timestamp.

View File

@ -1,4 +1,3 @@
import os
from datetime import datetime from datetime import datetime
from typing import List, Union from typing import List, Union
@ -29,17 +28,16 @@ _DEFAULT_GLOBAL = {"casetypes": {}}
_DEFAULT_GUILD = {"mod_log": None, "cases": {}, "casetypes": {}} _DEFAULT_GUILD = {"mod_log": None, "cases": {}, "casetypes": {}}
_conf: Config = None
def _register_defaults():
def _init():
global _conf
_conf = Config.get_conf(None, 1354799444, cog_name="ModLog")
_conf.register_global(**_DEFAULT_GLOBAL) _conf.register_global(**_DEFAULT_GLOBAL)
_conf.register_guild(**_DEFAULT_GUILD) _conf.register_guild(**_DEFAULT_GUILD)
if not os.environ.get("BUILDING_DOCS"):
_conf = Config.get_conf(None, 1354799444, cog_name="ModLog")
_register_defaults()
class Case: class Case:
"""A single mod log case""" """A single mod log case"""

View File

@ -1,4 +1,5 @@
import pytest import pytest
from redbot.core import bank as bank_module
__all__ = ["bank"] __all__ = ["bank"]
@ -9,7 +10,6 @@ def bank(config, monkeypatch):
with monkeypatch.context() as m: with monkeypatch.context() as m:
m.setattr(Config, "get_conf", lambda *args, **kwargs: config) m.setattr(Config, "get_conf", lambda *args, **kwargs: config)
from redbot.core import bank # noinspection PyProtectedMember
bank_module._init()
bank._register_defaults() return bank_module
return bank

View File

@ -1,4 +1,5 @@
import pytest import pytest
from redbot.core import modlog
__all__ = ["mod"] __all__ = ["mod"]
@ -9,7 +10,6 @@ def mod(config, monkeypatch):
with monkeypatch.context() as m: with monkeypatch.context() as m:
m.setattr(Config, "get_conf", lambda *args, **kwargs: config) m.setattr(Config, "get_conf", lambda *args, **kwargs: config)
from redbot.core import modlog
modlog._register_defaults() modlog._init()
return modlog return modlog

View File

@ -4,7 +4,7 @@ from redbot.pytest.mod import *
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_modlog_register_casetype(mod, ctx): async def test_modlog_register_casetype(mod):
ct = { ct = {
"name": "ban", "name": "ban",
"default_setting": True, "default_setting": True,
@ -20,6 +20,9 @@ async def test_modlog_register_casetype(mod, ctx):
async def test_modlog_case_create(mod, ctx, member_factory): async def test_modlog_case_create(mod, ctx, member_factory):
from datetime import datetime as dt from datetime import datetime as dt
# Run casetype register test to register casetype in this test too
await test_modlog_register_casetype(mod)
usr = member_factory.get() usr = member_factory.get()
guild = ctx.guild guild = ctx.guild
bot = ctx.bot bot = ctx.bot