enable lock for web service

This commit is contained in:
Evgenii Alekseev 2023-01-18 01:39:55 +02:00
parent e6888ba788
commit f4abd83568
4 changed files with 21 additions and 5 deletions

View File

@ -929,7 +929,8 @@ def _set_web_parser(root: SubParserAction) -> argparse.ArgumentParser:
argparse.ArgumentParser: created argument parser argparse.ArgumentParser: created argument parser
""" """
parser = root.add_parser("web", help="web server", description="start web server", formatter_class=_formatter) parser = root.add_parser("web", help="web server", description="start web server", formatter_class=_formatter)
parser.set_defaults(handler=handlers.Web, lock=None, report=False, parser=_parser) parser.set_defaults(handler=handlers.Web, lock=Path(tempfile.gettempdir()) / "ahriman-web.lock", report=False,
parser=_parser)
return parser return parser

View File

@ -21,7 +21,6 @@ from __future__ import annotations
import argparse import argparse
from pathlib import Path
from types import TracebackType from types import TracebackType
from typing import Literal, Optional, Type from typing import Literal, Optional, Type
@ -68,7 +67,8 @@ class Lock(LazyLogging):
architecture(str): repository architecture architecture(str): repository architecture
configuration(Configuration): configuration instance configuration(Configuration): configuration instance
""" """
self.path = Path(f"{args.lock}_{architecture}") if args.lock is not None else None self.path = args.lock.with_stem(f"{args.lock.stem}_{architecture}") if args.lock is not None else None
print(self.path)
self.force = args.force self.force = args.force
self.unsafe = args.unsafe self.unsafe = args.unsafe

View File

@ -754,11 +754,10 @@ def test_subparsers_user_remove_architecture(parser: argparse.ArgumentParser) ->
def test_subparsers_web(parser: argparse.ArgumentParser) -> None: def test_subparsers_web(parser: argparse.ArgumentParser) -> None:
""" """
web command must imply lock, report and parser web command must imply report and parser
""" """
args = parser.parse_args(["-a", "x86_64", "web"]) args = parser.parse_args(["-a", "x86_64", "web"])
assert args.architecture == ["x86_64"] assert args.architecture == ["x86_64"]
assert args.lock is None
assert not args.report assert not args.report
assert args.parser is not None and args.parser() assert args.parser is not None and args.parser()

View File

@ -1,3 +1,4 @@
import argparse
import pytest import pytest
import tempfile import tempfile
@ -7,11 +8,26 @@ from unittest.mock import call as MockCall
from ahriman import version from ahriman import version
from ahriman.application.lock import Lock from ahriman.application.lock import Lock
from ahriman.core.configuration import Configuration
from ahriman.core.exceptions import DuplicateRunError, UnsafeRunError from ahriman.core.exceptions import DuplicateRunError, UnsafeRunError
from ahriman.models.build_status import BuildStatus, BuildStatusEnum from ahriman.models.build_status import BuildStatus, BuildStatusEnum
from ahriman.models.internal_status import InternalStatus from ahriman.models.internal_status import InternalStatus
def test_path(args: argparse.Namespace, configuration: Configuration) -> None:
"""
must create path variable correctly
"""
assert Lock(args, "x86_64", configuration).path is None
args.lock = Path("/run/ahriman.lock")
assert Lock(args, "x86_64", configuration).path == Path("/run/ahriman_x86_64.lock")
with pytest.raises(ValueError):
args.lock = Path("/")
Lock(args, "x86_64", configuration).path # special case
def test_check_version(lock: Lock, mocker: MockerFixture) -> None: def test_check_version(lock: Lock, mocker: MockerFixture) -> None:
""" """
must check version correctly must check version correctly