# Copyright 2019 The LUCI Authors. All rights reserved.
# Use of this source code is governed under the Apache License, Version 2.0
# that can be found in the LICENSE file.

from recipe_engine import post_process

DEPS = [
    'assertions',
    'properties',
    'step',
]

def RunSteps(api):
  if 'maxDiff' in api.properties:
    api.assertions.maxDiff = api.properties['maxDiff']
  try:
    api.assertions.assertEqual(list(range(100)), list(range(99)) + [0])
  except AssertionError as e:
    api.step('AssertionError', [])
    assert 'Set self.maxDiff to None to see it.' not in str(e), (
        'Did not expect self.maxDiff to appear in exception message:\n' +
        str(e))
    modified_message = 'Set assertions.maxDiff to None to see it.'
    if api.properties.get('diff_omitted', False):
      assert modified_message in str(e), (
          'Expected diff to be omitted. Exception message:\n' + str(e))
    else:
      assert modified_message not in str(e), (
          'Expected diff not to be omitted. Exception message:\n' + str(e))


def GenTests(api):
  yield api.test(
      'basic',
      api.properties(maxDiff=None),
      api.post_process(post_process.MustRun, 'AssertionError'),
      api.post_process(post_process.StatusSuccess),
      api.post_process(post_process.DropExpectation),
  )

  yield api.test(
      'diff-omitted',
      api.properties(diff_omitted=True),
      api.post_process(post_process.MustRun, 'AssertionError'),
      api.post_process(post_process.StatusSuccess),
      api.post_process(post_process.DropExpectation),
  )
