# Copyright 2020 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Recipe that does nothing.

Useful for soft-deleting builders but leaving their builder history pages
visible.
"""

from PB.recipe_engine import result as result_pb2
from PB.go.chromium.org.luci.buildbucket.proto import common as common_pb2

from PB.recipes.fuchsia.no_op import InputProperties

DEPS = [
    "recipe_engine/properties",
]

PROPERTIES = InputProperties


def RunSteps(api, props):
    del api
    return result_pb2.RawResult(
        summary_markdown=props.summary_markdown, status=common_pb2.SUCCESS
    )


def GenTests(api):
    yield (
        api.test("basic")
        + api.properties(InputProperties(summary_markdown="This is a no-op"))
    )
