blob: a80ee053c0daef98294f3d09004701ce9c3fc4e5 [file] [log] [blame]
# Copyright 2017 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.
DEPS = [
'bot_update',
'gclient',
'recipe_engine/context',
'recipe_engine/file',
'recipe_engine/path',
'recipe_engine/python',
'recipe_engine/step',
]
def RunSteps(api):
# Create a test depot_tools checkout, possibly applying user patches.
api.gclient.set_config('depot_tools')
api.bot_update.ensure_checkout()
# List fetch configs available in the test depot_tools checkout.
fetch_configs = set(
api.path.basename(f)[:-3] for f in api.file.listdir(
'listdir fetch_configs', api.path['checkout'].join('fetch_configs'))
if str(f).endswith('.py'))
# config_util is a helper library, not a config.
fetch_configs.discard('config_util')
# Try to run "fetch" for each of the configs. It's important to use
# the checkout under test.
with api.context(
env={'DEPOT_TOOLS_UPDATE': '0', 'CHROME_HEADLESS': '1'},
env_prefixes={'PATH': [api.path['checkout']]}):
with api.step.defer_results():
for config_name in sorted(fetch_configs):
# Create a dedicated temp directory. We want to test checking out
# from scratch.
temp_dir = api.path.mkdtemp('fetch_end_to_end_test_%s' % config_name)
try:
with api.context(cwd=temp_dir):
api.python(
'fetch %s' % config_name,
api.path['checkout'].join('fetch.py'),
[config_name])
finally:
api.file.rmtree('cleanup', temp_dir)
def GenTests(api):
yield (
api.test('basic') +
api.step_data('listdir fetch_configs', api.file.listdir(
['depot_tools.py', 'infra.py']))
)