# Copyright 2022 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

from recipe_engine import post_process

from PB.go.chromium.org.luci.swarming.proto.api_v2 import (
  swarming as swarming_pb,
)
from PB.recipe_modules.recipe_engine.led import properties as led_properties_pb


DEPS = [
  "tryserver",
  "recipe_engine/buildbucket",
  "recipe_engine/properties",
]


def RunSteps(api):
  api.tryserver.require_is_tryserver()


def GenTests(api):
  yield api.test(
    "tryjob",
    api.buildbucket.try_build(),
    api.post_check(post_process.StatusSuccess),
    api.post_process(post_process.DropExpectation),
  )

  yield api.test(
    "not-a-tryjob",
    api.post_check(post_process.StatusException),
    api.post_check(post_process.StepException, "not a tryjob"),
    api.post_process(post_process.DropExpectation),
    status="INFRA_FAILURE",
  )

  yield api.test(
    "not-a-tryjob-led",
    api.properties(
      **{
        "$recipe_engine/led": led_properties_pb.InputProperties(
          led_run_id="fake-run-id",
          rbe_cas_input=swarming_pb.CASReference(
            cas_instance=("projects/example/instances/default_instance"),
            digest=swarming_pb.Digest(
              hash="examplehash",
              size_bytes=71,
            ),
          ),
        ),
      }
    ),
    api.post_check(post_process.StatusFailure),
    api.post_check(post_process.StepFailure, "not a tryjob"),
    api.post_process(post_process.DropExpectation),
    status="FAILURE",
  )
