blob: ef11ba7f93b12c66b0ad09f91c26305bf7dabfdb [file] [log] [blame]
# Copyright 2014 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 recipe_api
DEPS = [
'commit_position',
'recipe_engine/path',
'recipe_engine/properties',
'recipe_engine/raw_io',
'recipe_engine/step',
]
VALID_CP = 'refs/heads/master@{#12345}'
INVALID_CP_BAD_FORMAT = 'foo/var@{missing-hash}'
INVALID_CP_NON_NUMERIC = 'refs/heads/master@{#foo}'
def RunSteps(api):
fake_checkout_path = api.path.mkdtemp('fake_checkout')
api.path['checkout'] = fake_checkout_path
# Try to resolve a commit position to a hash
if 'revision_to_resolve' in api.properties.keys():
api.commit_position.chromium_hash_from_commit_position(
api.properties['revision_to_resolve'])
# Try to resolve a hash to a commit_position
if 'hash_to_resolve' in api.properties.keys():
api.commit_position.chromium_commit_position_from_hash(
api.properties['hash_to_resolve'])
cp = api.properties['cp']
# Parse a valid commit position (branch).
try:
branch = api.commit_position.parse_branch(cp)
except ValueError:
raise recipe_api.StepFailure("Failed to parse branch from: %s" % (cp,))
api.step('test branch parse', ['/bin/echo', branch])
# Parse a valid commit position (revision).
revision = api.commit_position.parse_revision(cp)
api.step('test revision parse', ['/bin/echo', revision])
# Construct a commit position.
value = api.commit_position.construct(branch, revision)
api.step('test construction', ['/bin/echo', value])
assert value == cp, "Construction failed: %s" % (value,)
def GenTests(api):
valid_hash = '01234567890abcdef01234567890abcdef01234567'
yield (
api.test('valid') +
api.properties(
cp=VALID_CP,
hash_to_resolve=valid_hash) +
api.step_data('resolving hash ' + valid_hash,
stdout=api.raw_io.output_text(VALID_CP)))
yield (
api.test('invalid_bad_format') +
api.properties(
cp=INVALID_CP_BAD_FORMAT))
yield (
api.test('invalid_non_numeric') +
api.properties(
cp=INVALID_CP_NON_NUMERIC))
yield (
api.test('invalid_commit_position') +
api.properties(
revision_to_resolve='foo'))
yield (
api.test('invalid_hash') +
api.properties(
hash_to_resolve='foo'))