# Copyright © The Debusine Developers
# See the AUTHORS file at the top-level directory of this distribution
#
# This file is part of Debusine. It is subject to the license terms
# in the LICENSE file found in the top-level directory of this
# distribution. No part of Debusine, including this file, may be copied,
# modified, propagated, or distributed except according to the terms
# contained in the LICENSE file.

"""no operation task. Waits and returns. Used in the integration tests."""

from pathlib import Path
from typing import override

from debusine.artifacts.models import WorkRequestResults
from debusine.tasks import BaseExternalTask
from debusine.tasks.models import NoopData


class Noop(BaseExternalTask[NoopData]):
    """
    Task that returns a boolean (execute() depending on the result field).

    Used for integration testing.
    """

    TASK_VERSION = 1

    @override
    def get_subject(self) -> str | None:
        return None

    @override
    def run(self, execute_directory: Path) -> WorkRequestResults:  # noqa: U100
        """Return self.data.result (was sent by the client)."""
        return self.data.result
