blob: 19e69e622c4cbcfb2e1c43de650593873b3e849b [file] [log] [blame]
# Copyright 2019 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.
"""Tests error checking around multiple placeholders in a single step."""
from recipe_engine.post_process import DropExpectation
DEPS = [
'assertions',
'json',
'step',
]
def RunSteps(api):
# illegal; multiple unnamed placeholders of the same kind "json.output".
with api.assertions.assertRaisesRegexp(
ValueError, r'conflicting .*: \[\'json\.output unnamed\'\]'):
api.step('step 1', ['cmd', api.json.output(), api.json.output()])
# illegal; multiple named placeholders with the same name
with api.assertions.assertRaisesRegexp(
ValueError, r'conflicting .*: \["json\.output named \'bob\'"\]'):
api.step('step 2', [
'cmd',
api.json.output(name='bob'),
api.json.output(name='bob'),
])
# legal; multiple named placeholders with unique names
result = api.step('step 3', [
'cmd',
api.json.output(name='bob'),
api.json.output(name='charlie'),
])
api.assertions.assertEqual(result.json.outputs['bob'], 1)
api.assertions.assertEqual(result.json.outputs['charlie'], 2)
# legal; multiple of the same input placeholders
result = api.step('step 4', [
'cmd',
api.json.input('bob'),
api.json.input('charlie'),
])
def GenTests(api):
yield (
api.test('basic')
+ api.step_data(
'step 3',
api.json.output(1, name='bob'),
api.json.output(2, name='charlie'),
)
+ api.post_process(DropExpectation)
)