blob: b6f00eabfb5ea99fa5ee83cd2dd86ec2a5421ca6 [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.
# TODO(borenet): This module belongs in the recipe engine. Remove it from this
# repo once it has been moved.
from recipe_engine.types import freeze
DEPS = [
'depot_tools/infra_paths',
'file',
'recipe_engine/path',
'recipe_engine/raw_io',
'recipe_engine/step',
]
TEST_CONTENTS = freeze({
'simple': 'abcde',
'spaces': 'abcde fgh',
'symbols': '! ~&&',
'multiline': '''ab
cd
efg
''',
})
def RunSteps(api):
# listdir demo.
result = api.file.listdir('fake dir', '/fake/dir')
for element in result:
api.step('manipulate %s' % str(element), ['some', 'command'])
result = api.file.listdir('other', '/faker/dir')
for element in result:
api.step('manipulate %s' % str(element), ['some', 'command'])
# mkdtemp demo.
for prefix in ('prefix_a', 'prefix_b'):
# Create temp dir.
temp_dir = api.path.mkdtemp(prefix)
assert api.path.exists(temp_dir)
# Make |temp_dir| surface in expectation files.
api.step('print %s' % prefix, ['echo', temp_dir])
# move demo
api.file.move(
'move',
api.path['start_dir'].join('source'),
api.path['start_dir'].join('destination'))
# remove demo
api.file.remove('remove', api.path['start_dir'].join('some_file'))
# rmcontents demo
api.file.rmcontents('rmcontents', api.path['start_dir'].join('some_dir'))
# rmwildcard demo
api.file.rmwildcard('*.o', api.path['start_dir'])
for name, content in TEST_CONTENTS.iteritems():
api.file.write('write_%s' % name, 'tmp_file.txt', content)
actual_content = api.file.read(
'read_%s' % name, 'tmp_file.txt',
test_data=content
)
msg = 'expected %s but got %s' % (content, actual_content)
assert actual_content == content, msg
try:
# copytree
content = 'some file content'
tmp_dir = api.path['start_dir'].join('copytree_example_tmp')
api.file.makedirs('makedirs', tmp_dir)
path = tmp_dir.join('dummy_file')
api.file.write('write %s' % path, path, content)
new_tmp = api.path['start_dir'].join('copytree_example_tmp2')
new_path = new_tmp.join('dummy_file')
api.file.copytree('copytree', tmp_dir, new_tmp)
actual_content = api.file.read('read %s' % new_path, new_path,
test_data=content)
assert actual_content == content
# glob.
files = api.file.glob(
'glob', tmp_dir.join('*'),
test_data=[tmp_dir.join('dummy_file')])
assert files == [tmp_dir.join('dummy_file')], files
finally:
api.file.rmtree('cleanup', tmp_dir)
api.file.rmtree('cleanup2', new_tmp)
def GenTests(api):
yield api.test('file_io') + api.file.listdir('other', ['aaa'])