Начальная версия rack_coverage
This commit is contained in:
80
net/xeaf/rack/management/commands/rack_coverage2.py
Normal file
80
net/xeaf/rack/management/commands/rack_coverage2.py
Normal file
@@ -0,0 +1,80 @@
|
||||
# DRF Rack
|
||||
# Библиотека классов расширений для Django REST Framework
|
||||
#
|
||||
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
|
||||
# Все права защищены. Лицензия: MIT
|
||||
|
||||
"""
|
||||
Описание класса для команды rack_coverage
|
||||
"""
|
||||
|
||||
import ast
|
||||
import configparser
|
||||
from pathlib import Path
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.management.base import no_translations
|
||||
|
||||
from net.xeaf.rack.core import CoreCommand
|
||||
|
||||
|
||||
class Command(CoreCommand):
|
||||
"""
|
||||
Осуществляет проверку покрытия тестами
|
||||
"""
|
||||
|
||||
# noinspection SpellCheckingInspection
|
||||
CONFIG_FILE = '.rackcoveragerc'
|
||||
""" Имя файла конфигурации """
|
||||
|
||||
CONFIG_SECTION = "rack-coverage"
|
||||
""" Имя секции в файле конфигурации """
|
||||
|
||||
@no_translations
|
||||
def handle(self, *args, **options):
|
||||
"""
|
||||
Проверяет соблюдение принципа один метод - один файл тестов
|
||||
|
||||
:params args: Позиционные аргументы
|
||||
:params options: Дополнительные параметры
|
||||
"""
|
||||
|
||||
config = self._load_config()
|
||||
|
||||
self.stdout.write(self.style.HTTP_INFO(f"Loading configuration file: {config}"))
|
||||
|
||||
pass
|
||||
|
||||
def _load_config(self) -> dict[str, list[str]]:
|
||||
"""
|
||||
Читает файл конфигурации
|
||||
|
||||
:return: Словарь с настройками
|
||||
"""
|
||||
|
||||
rc_path = Path(settings.BASE_DIR) / self.CONFIG_FILE
|
||||
if not rc_path.exists():
|
||||
return {}
|
||||
|
||||
config = configparser.ConfigParser()
|
||||
try:
|
||||
config.read(rc_path, encoding="utf-8")
|
||||
if not config.has_section(self.CONFIG_SECTION):
|
||||
return {}
|
||||
|
||||
# Парсим строки, очищая их от пробелов и переносов
|
||||
raw_apps = config.get(self.CONFIG_SECTION, "apps", fallback="")
|
||||
raw_ignore = config.get(self.CONFIG_SECTION, "ignore", fallback="")
|
||||
|
||||
apps_list = [a.strip() for a in raw_apps.splitlines() if a.strip()]
|
||||
ignore_list = [i.strip() for i in raw_ignore.splitlines() if i.strip()]
|
||||
|
||||
return {
|
||||
"apps": apps_list,
|
||||
"ignore": ignore_list
|
||||
}
|
||||
|
||||
except configparser.Error as err:
|
||||
self.stdout.write(self.style.ERROR(f"Error reading configuration file {self.CONFIG_FILE}: {err}"))
|
||||
return {}
|
||||
|
||||
Reference in New Issue
Block a user