Move scripts to pytest
This commit is contained in:
parent
33c545de7b
commit
075461246f
@ -1,48 +0,0 @@
|
||||
import platform
|
||||
import subprocess
|
||||
import wmi
|
||||
|
||||
# # Windows version
|
||||
# def get_gpus_windows():
|
||||
# w = wmi.WMI()
|
||||
# gpus = w.Win32_VideoController()
|
||||
# return [{'name': gpu.Name, 'driver': gpu.DriverVersion} for gpu in gpus]
|
||||
|
||||
# if platform.system() == 'Windows':
|
||||
# print(get_gpus_windows())
|
||||
|
||||
# def get_glxinfo_gpu():
|
||||
# try:
|
||||
# output = subprocess.check_output("glxinfo | grep -i 'device\|vendor'", shell=True).decode()
|
||||
# return output
|
||||
# except Exception as e:
|
||||
# return f"Error: {e}"
|
||||
|
||||
# if platform.system() == 'Linux':
|
||||
# print(get_glxinfo_gpu())
|
||||
|
||||
# # Install pyopencl with pip if not already installed: pip install pyopencl
|
||||
# import pyopencl as cl
|
||||
|
||||
# def get_opencl_gpus():
|
||||
# platforms = cl.get_platforms()
|
||||
# gpu_info = []
|
||||
# for platform in platforms:
|
||||
# devices = platform.get_devices(device_type=cl.device_type.GPU)
|
||||
# for device in devices:
|
||||
# gpu_info.append({
|
||||
# 'name': device.name,
|
||||
# 'vendor': device.vendor,
|
||||
# 'version': device.version,
|
||||
# 'global_mem_size': device.global_mem_size,
|
||||
# 'max_compute_units': device.max_compute_units
|
||||
# })
|
||||
# return gpu_info
|
||||
|
||||
# print(get_opencl_gpus())
|
||||
|
||||
from pyadl import *
|
||||
|
||||
devices = ADLManager.getInstance().getDevices()
|
||||
for device in devices:
|
||||
print("{0}. {1}".format(device.adapterIndex, device.adapterName))
|
@ -1,52 +0,0 @@
|
||||
import asyncio
|
||||
import logging
|
||||
import sys
|
||||
import os
|
||||
|
||||
# Configure logging
|
||||
logging.basicConfig(
|
||||
level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
||||
)
|
||||
log = logging.getLogger("test_pagination")
|
||||
|
||||
# Add the current directory to the path so we can import the cogs
|
||||
sys.path.append(os.getcwd())
|
||||
|
||||
from cogs.safebooru_cog import SafebooruCog
|
||||
from discord.ext import commands
|
||||
import discord
|
||||
|
||||
|
||||
async def test_pagination():
|
||||
# Create a mock bot with intents
|
||||
intents = discord.Intents.default()
|
||||
bot = commands.Bot(command_prefix="!", intents=intents)
|
||||
|
||||
# Initialize the cog
|
||||
cog = SafebooruCog(bot)
|
||||
|
||||
# Test the pagination for a specific tag
|
||||
tag = "kasane_teto"
|
||||
log.info(f"Testing pagination for tag: {tag}")
|
||||
|
||||
# Call the _fetch_posts_logic method
|
||||
results = await cog._fetch_posts_logic("test", tag)
|
||||
|
||||
# Check the results
|
||||
if isinstance(results, tuple):
|
||||
log.info(f"Found {len(results[1])} results")
|
||||
# Print the first few results
|
||||
for i, result in enumerate(results[1][:5]):
|
||||
log.info(f"Result {i+1}: {result.get('id')} - {result.get('file_url')}")
|
||||
else:
|
||||
log.error(f"Error: {results}")
|
||||
|
||||
# Clean up
|
||||
if hasattr(cog, "session") and cog.session and not cog.session.closed:
|
||||
await cog.session.close()
|
||||
log.info("Closed aiohttp session")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Run the test
|
||||
asyncio.run(test_pagination())
|
20
test_part.py
20
test_part.py
@ -1,20 +0,0 @@
|
||||
# Test script for Part constructor
|
||||
try:
|
||||
from gurt.api import types
|
||||
|
||||
print("Successfully imported types module")
|
||||
|
||||
# Test creating a Part with text
|
||||
part = types.Part(text="test")
|
||||
print(f"Successfully created Part with text: {part}")
|
||||
|
||||
# Test creating a Part with URI
|
||||
part_uri = types.Part(uri="https://example.com", mime_type="text/plain")
|
||||
print(f"Successfully created Part with URI: {part_uri}")
|
||||
|
||||
print("All tests passed!")
|
||||
except Exception as e:
|
||||
print(f"Error: {type(e).__name__}: {e}")
|
||||
import traceback
|
||||
|
||||
traceback.print_exc()
|
@ -1,61 +0,0 @@
|
||||
import asyncio
|
||||
import discord
|
||||
from discord.ext import commands
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
import logging
|
||||
import sys
|
||||
|
||||
# Add the parent directory to sys.path to allow imports
|
||||
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
# Import the starboard cog and settings manager
|
||||
from cogs.starboard_cog import StarboardCog
|
||||
import settings_manager as settings_manager
|
||||
|
||||
# Load environment variables
|
||||
load_dotenv()
|
||||
|
||||
# Configure logging
|
||||
logging.basicConfig(
|
||||
level=logging.INFO, format="%(asctime)s:%(levelname)s:%(name)s: %(message)s"
|
||||
)
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
# Set up intents
|
||||
intents = discord.Intents.default()
|
||||
intents.message_content = True
|
||||
intents.members = True
|
||||
|
||||
# Create bot instance
|
||||
bot = commands.Bot(command_prefix="!", intents=intents)
|
||||
|
||||
|
||||
@bot.event
|
||||
async def on_ready():
|
||||
log.info(f"{bot.user.name} has connected to Discord!")
|
||||
log.info(f"Bot ID: {bot.user.id}")
|
||||
|
||||
# Load the starboard cog
|
||||
try:
|
||||
await bot.add_cog(StarboardCog(bot))
|
||||
log.info("StarboardCog loaded successfully!")
|
||||
except Exception as e:
|
||||
log.error(f"Error loading StarboardCog: {e}")
|
||||
|
||||
|
||||
async def main():
|
||||
TOKEN = os.getenv("DISCORD_TOKEN")
|
||||
if not TOKEN:
|
||||
raise ValueError(
|
||||
"No token found. Make sure to set DISCORD_TOKEN in your .env file."
|
||||
)
|
||||
|
||||
try:
|
||||
await bot.start(TOKEN)
|
||||
except Exception as e:
|
||||
log.exception(f"Error starting bot: {e}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
@ -1,64 +0,0 @@
|
||||
import json
|
||||
import os
|
||||
|
||||
# Define the path for the JSON file to store timeout chance
|
||||
TIMEOUT_CONFIG_FILE = os.path.join("data", "timeout_config.json")
|
||||
|
||||
|
||||
def load_timeout_config():
|
||||
"""Load timeout configuration from JSON file"""
|
||||
timeout_chance = 0.005 # Default value
|
||||
if os.path.exists(TIMEOUT_CONFIG_FILE):
|
||||
try:
|
||||
with open(TIMEOUT_CONFIG_FILE, "r") as f:
|
||||
data = json.load(f)
|
||||
if "timeout_chance" in data:
|
||||
timeout_chance = data["timeout_chance"]
|
||||
print(f"Loaded timeout chance: {timeout_chance}")
|
||||
else:
|
||||
print("timeout_chance not found in config file")
|
||||
except Exception as e:
|
||||
print(f"Error loading timeout configuration: {e}")
|
||||
else:
|
||||
print(f"Config file does not exist: {TIMEOUT_CONFIG_FILE}")
|
||||
return timeout_chance
|
||||
|
||||
|
||||
def save_timeout_config(timeout_chance):
|
||||
"""Save timeout configuration to JSON file"""
|
||||
try:
|
||||
# Ensure data directory exists
|
||||
os.makedirs(os.path.dirname(TIMEOUT_CONFIG_FILE), exist_ok=True)
|
||||
|
||||
config_data = {
|
||||
"timeout_chance": timeout_chance,
|
||||
"target_user_id": 748405715520978965,
|
||||
"timeout_duration": 60,
|
||||
}
|
||||
with open(TIMEOUT_CONFIG_FILE, "w") as f:
|
||||
json.dump(config_data, f, indent=4)
|
||||
print(f"Saved timeout configuration with chance: {timeout_chance}")
|
||||
return True
|
||||
except Exception as e:
|
||||
print(f"Error saving timeout configuration: {e}")
|
||||
return False
|
||||
|
||||
|
||||
# Test the functionality
|
||||
if __name__ == "__main__":
|
||||
# Load the current config
|
||||
current_chance = load_timeout_config()
|
||||
print(f"Current timeout chance: {current_chance}")
|
||||
|
||||
# Update the timeout chance
|
||||
new_chance = 0.01 # 1%
|
||||
if save_timeout_config(new_chance):
|
||||
print(f"Successfully updated timeout chance to {new_chance}")
|
||||
|
||||
# Load the config again to verify it was saved
|
||||
updated_chance = load_timeout_config()
|
||||
print(f"Updated timeout chance: {updated_chance}")
|
||||
|
||||
# Restore the original value
|
||||
if save_timeout_config(current_chance):
|
||||
print(f"Restored timeout chance to original value: {current_chance}")
|
@ -1,41 +0,0 @@
|
||||
import re
|
||||
from typing import Optional, Tuple
|
||||
|
||||
|
||||
# Copy of the fixed parse_repo_url function
|
||||
def parse_repo_url(url: str) -> Tuple[Optional[str], Optional[str]]:
|
||||
"""Parses a Git repository URL to extract platform and a simplified repo identifier."""
|
||||
# Fixed regex pattern for GitHub URLs
|
||||
github_match = re.match(
|
||||
r"^(?:https?://)?(?:www\.)?github\.com/([\w.-]+/[\w.-]+)(?:\.git)?/?$", url
|
||||
)
|
||||
if github_match:
|
||||
return "github", github_match.group(1)
|
||||
|
||||
gitlab_match = re.match(
|
||||
r"^(?:https?://)?(?:www\.)?gitlab\.com/([\w.-]+(?:/[\w.-]+)+)(?:\.git)?/?$", url
|
||||
)
|
||||
if gitlab_match:
|
||||
return "gitlab", gitlab_match.group(1)
|
||||
return None, None
|
||||
|
||||
|
||||
# Test URLs
|
||||
test_urls = [
|
||||
"https://github.com/Slipstreamm/discordbot",
|
||||
"http://github.com/Slipstreamm/discordbot",
|
||||
"github.com/Slipstreamm/discordbot",
|
||||
"www.github.com/Slipstreamm/discordbot",
|
||||
"https://github.com/Slipstreamm/git",
|
||||
"https://gitlab.com/group/project",
|
||||
"https://gitlab.com/group/subgroup/project",
|
||||
"invalid-url",
|
||||
]
|
||||
|
||||
# Test each URL
|
||||
print("Testing URL parsing with fixed regex pattern:")
|
||||
print("-" * 50)
|
||||
for url in test_urls:
|
||||
platform, repo_id = parse_repo_url(url)
|
||||
result = f"Valid: {platform}, {repo_id}" if platform else "Invalid URL"
|
||||
print(f"{url} => {result}")
|
@ -1,121 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test script to verify usage counter functionality.
|
||||
This script demonstrates how to query the usage counters table.
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import asyncpg
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
|
||||
# Load environment variables
|
||||
load_dotenv()
|
||||
|
||||
|
||||
async def test_usage_counters():
|
||||
"""Test the usage counters functionality."""
|
||||
|
||||
# Create database connection
|
||||
try:
|
||||
conn_string = f"postgresql://{os.getenv('POSTGRES_USER')}:{os.getenv('POSTGRES_PASSWORD')}@{os.getenv('POSTGRES_HOST')}:{os.getenv('POSTGRES_PORT')}/{os.getenv('POSTGRES_SETTINGS_DB')}"
|
||||
conn = await asyncpg.connect(conn_string)
|
||||
print("✅ Connected to database successfully")
|
||||
except Exception as e:
|
||||
print(f"❌ Failed to connect to database: {e}")
|
||||
return
|
||||
|
||||
try:
|
||||
# Check if the table exists
|
||||
table_exists = await conn.fetchval(
|
||||
"""
|
||||
SELECT EXISTS (
|
||||
SELECT FROM information_schema.tables
|
||||
WHERE table_name = 'command_usage_counters'
|
||||
)
|
||||
"""
|
||||
)
|
||||
|
||||
if table_exists:
|
||||
print("✅ command_usage_counters table exists")
|
||||
|
||||
# Get some sample data
|
||||
records = await conn.fetch(
|
||||
"""
|
||||
SELECT user1_id, user2_id, command_name, usage_count
|
||||
FROM command_usage_counters
|
||||
ORDER BY usage_count DESC
|
||||
LIMIT 10
|
||||
"""
|
||||
)
|
||||
|
||||
if records:
|
||||
print("\n📊 Top 10 command usages:")
|
||||
print("User1 ID | User2 ID | Command | Count")
|
||||
print("-" * 45)
|
||||
for record in records:
|
||||
print(
|
||||
f"{record['user1_id']} | {record['user2_id']} | {record['command_name']} | {record['usage_count']}"
|
||||
)
|
||||
else:
|
||||
print("📝 No usage data found yet (table is empty)")
|
||||
|
||||
# Get total count
|
||||
total_count = await conn.fetchval(
|
||||
"SELECT COUNT(*) FROM command_usage_counters"
|
||||
)
|
||||
print(f"\n📈 Total unique user-command combinations: {total_count}")
|
||||
|
||||
else:
|
||||
print("⚠️ command_usage_counters table does not exist yet")
|
||||
print(" It will be created automatically when a command is first used")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Error querying database: {e}")
|
||||
finally:
|
||||
await conn.close()
|
||||
print("🔌 Database connection closed")
|
||||
|
||||
|
||||
async def get_usage_for_users(user1_id: int, user2_id: int):
|
||||
"""Get usage statistics for a specific pair of users."""
|
||||
|
||||
try:
|
||||
conn_string = f"postgresql://{os.getenv('POSTGRES_USER')}:{os.getenv('POSTGRES_PASSWORD')}@{os.getenv('POSTGRES_HOST')}:{os.getenv('POSTGRES_PORT')}/{os.getenv('POSTGRES_SETTINGS_DB')}"
|
||||
conn = await asyncpg.connect(conn_string)
|
||||
|
||||
records = await conn.fetch(
|
||||
"""
|
||||
SELECT command_name, usage_count
|
||||
FROM command_usage_counters
|
||||
WHERE user1_id = $1 AND user2_id = $2
|
||||
ORDER BY usage_count DESC
|
||||
""",
|
||||
user1_id,
|
||||
user2_id,
|
||||
)
|
||||
|
||||
if records:
|
||||
print(f"\n👥 Usage between users {user1_id} and {user2_id}:")
|
||||
print("Command | Count")
|
||||
print("-" * 20)
|
||||
for record in records:
|
||||
print(f"{record['command_name']} | {record['usage_count']}")
|
||||
else:
|
||||
print(f"📝 No usage data found between users {user1_id} and {user2_id}")
|
||||
|
||||
await conn.close()
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Error querying user data: {e}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("🧪 Testing Usage Counters Functionality")
|
||||
print("=" * 40)
|
||||
|
||||
# Test basic functionality
|
||||
asyncio.run(test_usage_counters())
|
||||
|
||||
# Example: Get usage for specific users (replace with actual user IDs)
|
||||
# asyncio.run(get_usage_for_users(123456789, 987654321))
|
26
tests/test_gputil.py
Normal file
26
tests/test_gputil.py
Normal file
@ -0,0 +1,26 @@
|
||||
import pytest
|
||||
|
||||
try:
|
||||
import pyadl
|
||||
except ImportError: # pragma: no cover - dependency optional
|
||||
pyadl = None
|
||||
|
||||
|
||||
class FakeDevice:
|
||||
def __init__(self, index: int, name: str):
|
||||
self.adapterIndex = index
|
||||
self.adapterName = name
|
||||
|
||||
|
||||
class FakeManager:
|
||||
def getDevices(self):
|
||||
return [FakeDevice(0, "GPU0"), FakeDevice(1, "GPU1")]
|
||||
|
||||
|
||||
@pytest.mark.skipif(pyadl is None, reason="pyadl not installed")
|
||||
def test_pyadl_devices(monkeypatch):
|
||||
monkeypatch.setattr(pyadl.ADLManager, "getInstance", lambda: FakeManager())
|
||||
|
||||
devices = pyadl.ADLManager.getInstance().getDevices()
|
||||
assert len(devices) == 2
|
||||
assert devices[0].adapterName == "GPU0"
|
49
tests/test_pagination.py
Normal file
49
tests/test_pagination.py
Normal file
@ -0,0 +1,49 @@
|
||||
import asyncio
|
||||
import pytest
|
||||
import discord
|
||||
from discord.ext import commands
|
||||
|
||||
from cogs.safebooru_cog import SafebooruCog
|
||||
|
||||
|
||||
class MockResponse:
|
||||
def __init__(self, status: int, data):
|
||||
self.status = status
|
||||
self._data = data
|
||||
|
||||
async def json(self):
|
||||
return self._data
|
||||
|
||||
async def __aenter__(self):
|
||||
return self
|
||||
|
||||
async def __aexit__(self, exc_type, exc, tb):
|
||||
return False
|
||||
|
||||
|
||||
class MockSession:
|
||||
def __init__(self, data):
|
||||
self.data = data
|
||||
self.closed = False
|
||||
|
||||
def get(self, *args, **kwargs):
|
||||
return MockResponse(200, self.data)
|
||||
|
||||
async def close(self):
|
||||
self.closed = True
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_fetch_posts_logic(monkeypatch):
|
||||
intents = discord.Intents.none()
|
||||
bot = commands.Bot(command_prefix="!", intents=intents)
|
||||
cog = SafebooruCog(bot)
|
||||
mock_data = [{"id": "1", "file_url": "http://example.com/image.jpg"}]
|
||||
monkeypatch.setattr(cog, "session", MockSession(mock_data))
|
||||
|
||||
results = await cog._fetch_posts_logic(
|
||||
"test", "tag", pid_override=0, limit_override=1
|
||||
)
|
||||
|
||||
assert isinstance(results, list)
|
||||
assert results[0]["id"] == "1"
|
18
tests/test_part.py
Normal file
18
tests/test_part.py
Normal file
@ -0,0 +1,18 @@
|
||||
import sys
|
||||
import pytest
|
||||
|
||||
|
||||
def test_part_constructors():
|
||||
try:
|
||||
import google.generativeai as generativeai
|
||||
|
||||
sys.modules.setdefault("google.genai", generativeai)
|
||||
from gurt.api import types
|
||||
except Exception as e: # pragma: no cover - skip if dependencies missing
|
||||
pytest.skip(f"gurt.api unavailable: {e}")
|
||||
|
||||
part = types.Part(text="test")
|
||||
assert part
|
||||
|
||||
uri_part = types.Part(uri="https://example.com", mime_type="text/plain")
|
||||
assert getattr(uri_part, "uri", None) == "https://example.com"
|
14
tests/test_starboard.py
Normal file
14
tests/test_starboard.py
Normal file
@ -0,0 +1,14 @@
|
||||
import pytest
|
||||
import discord
|
||||
from discord.ext import commands
|
||||
|
||||
from cogs.starboard_cog import StarboardCog
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_starboard_cog_load():
|
||||
intents = discord.Intents.none()
|
||||
bot = commands.Bot(command_prefix="!", intents=intents)
|
||||
cog = StarboardCog(bot)
|
||||
await bot.add_cog(cog)
|
||||
assert cog in bot.cogs.values()
|
29
tests/test_timeout_config.py
Normal file
29
tests/test_timeout_config.py
Normal file
@ -0,0 +1,29 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def load_timeout_config(path: Path) -> float:
|
||||
timeout_chance = 0.005
|
||||
if path.exists():
|
||||
with open(path, "r") as f:
|
||||
data = json.load(f)
|
||||
timeout_chance = data.get("timeout_chance", timeout_chance)
|
||||
return timeout_chance
|
||||
|
||||
|
||||
def save_timeout_config(path: Path, timeout_chance: float) -> None:
|
||||
path.parent.mkdir(parents=True, exist_ok=True)
|
||||
data = {
|
||||
"timeout_chance": timeout_chance,
|
||||
"target_user_id": 748405715520978965,
|
||||
"timeout_duration": 60,
|
||||
}
|
||||
with open(path, "w") as f:
|
||||
json.dump(data, f, indent=4)
|
||||
|
||||
|
||||
def test_timeout_config_roundtrip(tmp_path: Path):
|
||||
cfg = tmp_path / "timeout_config.json"
|
||||
save_timeout_config(cfg, 0.01)
|
||||
assert cfg.exists()
|
||||
assert load_timeout_config(cfg) == 0.01
|
47
tests/test_url_parser.py
Normal file
47
tests/test_url_parser.py
Normal file
@ -0,0 +1,47 @@
|
||||
import re
|
||||
from typing import Optional, Tuple
|
||||
import pytest
|
||||
|
||||
|
||||
def parse_repo_url(url: str) -> Tuple[Optional[str], Optional[str]]:
|
||||
"""Parses a Git repository URL and returns platform and repo id."""
|
||||
github_match = re.match(
|
||||
r"^(?:https?://)?(?:www\.)?github\.com/([\w.-]+/[\w.-]+)(?:\.git)?/?$",
|
||||
url,
|
||||
)
|
||||
if github_match:
|
||||
return "github", github_match.group(1)
|
||||
|
||||
gitlab_match = re.match(
|
||||
r"^(?:https?://)?(?:www\.)?gitlab\.com/([\w.-]+(?:/[\w.-]+)+)(?:\.git)?/?$",
|
||||
url,
|
||||
)
|
||||
if gitlab_match:
|
||||
return "gitlab", gitlab_match.group(1)
|
||||
return None, None
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"url,expected",
|
||||
[
|
||||
(
|
||||
"https://github.com/Slipstreamm/discordbot",
|
||||
("github", "Slipstreamm/discordbot"),
|
||||
),
|
||||
(
|
||||
"http://github.com/Slipstreamm/discordbot",
|
||||
("github", "Slipstreamm/discordbot"),
|
||||
),
|
||||
("github.com/Slipstreamm/discordbot", ("github", "Slipstreamm/discordbot")),
|
||||
("www.github.com/Slipstreamm/discordbot", ("github", "Slipstreamm/discordbot")),
|
||||
("https://github.com/Slipstreamm/git", ("github", "Slipstreamm/git")),
|
||||
("https://gitlab.com/group/project", ("gitlab", "group/project")),
|
||||
(
|
||||
"https://gitlab.com/group/subgroup/project",
|
||||
("gitlab", "group/subgroup/project"),
|
||||
),
|
||||
("invalid-url", (None, None)),
|
||||
],
|
||||
)
|
||||
def test_parse_repo_url(url: str, expected: Tuple[Optional[str], Optional[str]]):
|
||||
assert parse_repo_url(url) == expected
|
19
tests/test_usage_counters.py
Normal file
19
tests/test_usage_counters.py
Normal file
@ -0,0 +1,19 @@
|
||||
import os
|
||||
|
||||
|
||||
def build_conn_string() -> str:
|
||||
return (
|
||||
f"postgresql://{os.getenv('POSTGRES_USER')}:{os.getenv('POSTGRES_PASSWORD')}@"
|
||||
f"{os.getenv('POSTGRES_HOST')}:{os.getenv('POSTGRES_PORT')}/"
|
||||
f"{os.getenv('POSTGRES_SETTINGS_DB')}"
|
||||
)
|
||||
|
||||
|
||||
def test_connection_string(monkeypatch):
|
||||
monkeypatch.setenv("POSTGRES_USER", "user")
|
||||
monkeypatch.setenv("POSTGRES_PASSWORD", "pass")
|
||||
monkeypatch.setenv("POSTGRES_HOST", "localhost")
|
||||
monkeypatch.setenv("POSTGRES_PORT", "5432")
|
||||
monkeypatch.setenv("POSTGRES_SETTINGS_DB", "db")
|
||||
|
||||
assert build_conn_string() == "postgresql://user:pass@localhost:5432/db"
|
Loading…
x
Reference in New Issue
Block a user