blob: 85d3a944305742910751bab4e4729094f83eed53 [file] [log] [blame]
# Copyright 2016 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.
import re
from recipe_engine import recipe_api
DEPS = [
'crrev',
'recipe_engine/properties',
'recipe_engine/step',
'recipe_engine/json',
]
def RunSteps(api):
if 'commit_position' in api.properties.keys():
cp = api.properties['commit_position']
try:
api.crrev.to_commit_hash(cp)
except ValueError:
raise recipe_api.StepFailure('Invalid commit position: %s' % cp)
if 'commit_hash' in api.properties.keys():
sha = api.properties['commit_hash']
try:
api.crrev.to_commit_position(sha)
except ValueError:
raise recipe_api.StepFailure('Invalid commit hash: %s' % sha)
def GenTests(api):
yield (
api.test('invalid_commit_position') +
api.properties(commit_position='foo'))
yield (
api.test('invalid_hash') +
api.properties(commit_hash='foo'))
yield (
api.test('valid_hash') +
api.properties(commit_hash='abcdeabcde0123456789abcdeabcde0123456789') +
api.step_data(
name='crrev get commit position for '
'abcdeabcde0123456789abcdeabcde0123456789',
stdout=api.json.output({
'numberings': [
{
'number': '111',
'numbering_identifier': 'refs/heads/master',
'numbering_type': 'COMMIT_POSITION',
}
]})))
yield (
api.test('valid_commit_position') +
api.properties(commit_position='refs/heads/master@{#111}') +
api.step_data(
name='crrev get commit hash for refs/heads/master@{#111}',
stdout=api.json.output({
'git_sha': 'abcdeabcde0123456789abcdeabcde0123456789'
})))
yield (
api.test('empty_commit_hash_output') +
api.properties(commit_position='refs/heads/master@{#111}') +
api.step_data(
name='crrev get commit hash for refs/heads/master@{#111}',
stdout=api.json.output({})))
yield (
api.test('empty_commit_position_output') +
api.properties(commit_hash='abcdeabcde0123456789abcdeabcde0123456789') +
api.step_data(
name='crrev get commit position for '
'abcdeabcde0123456789abcdeabcde0123456789',
stdout=api.json.output({})))
yield (
api.test('no_numberings') +
api.properties(commit_hash='abcdeabcde0123456789abcdeabcde0123456789') +
api.step_data(
name='crrev get commit position for '
'abcdeabcde0123456789abcdeabcde0123456789',
stdout=api.json.output({'numberings': []})))