# Copyright 2022 The Chromium Authors. All rights reserved.
# 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 import swarming as swarming_pb
from PB.recipe_modules.recipe_engine.led import properties as led_properties_pb

PYTHON_VERSION_COMPATIBILITY = 'PY3'

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")