Mocking out glob() in test so it doesn't hit the filesystem, and simplifying comprehension.

This commit is contained in:
Dan Helfman 2016-02-13 16:41:17 -08:00
parent f149fa4b4b
commit 0c97dba5f1
2 changed files with 37 additions and 4 deletions

View file

@ -68,7 +68,7 @@ def create_archive(
attic archive. attic archive.
''' '''
sources = re.split('\s+', source_directories) sources = re.split('\s+', source_directories)
sources = tuple(chain.from_iterable([glob(x) if glob(x) else [x] for x in sources])) sources = tuple(chain.from_iterable(glob(x) or [x] for x in sources))
exclude_flags = ('--exclude-from', excludes_filename) if excludes_filename else () exclude_flags = ('--exclude-from', excludes_filename) if excludes_filename else ()
compression = storage_config.get('compression', None) compression = storage_config.get('compression', None)
compression_flags = ('--compression', compression) if compression else () compression_flags = ('--compression', compression) if compression else ()

View file

@ -177,16 +177,49 @@ def test_create_archive_with_umask_should_call_attic_with_umask_parameters():
) )
def test_create_archive_with_globs(): def test_create_archive_with_source_directories_glob_expands():
insert_subprocess_mock(('attic', 'create', 'repo::host-now', 'setup.py', 'setup.cfg')) insert_subprocess_mock(('attic', 'create', 'repo::host-now', 'foo', 'food'))
insert_platform_mock() insert_platform_mock()
insert_datetime_mock() insert_datetime_mock()
flexmock(module).should_receive('glob').with_args('foo*').and_return(['foo', 'food'])
module.create_archive( module.create_archive(
excludes_filename=None, excludes_filename=None,
verbosity=None, verbosity=None,
storage_config={}, storage_config={},
source_directories='setup*', source_directories='foo*',
repository='repo',
command='attic',
)
def test_create_archive_with_non_matching_source_directories_glob_passes_through():
insert_subprocess_mock(('attic', 'create', 'repo::host-now', 'foo*'))
insert_platform_mock()
insert_datetime_mock()
flexmock(module).should_receive('glob').with_args('foo*').and_return([])
module.create_archive(
excludes_filename=None,
verbosity=None,
storage_config={},
source_directories='foo*',
repository='repo',
command='attic',
)
def test_create_archive_with_glob_should_call_attic_with_expanded_directories():
insert_subprocess_mock(('attic', 'create', 'repo::host-now', 'foo', 'food'))
insert_platform_mock()
insert_datetime_mock()
flexmock(module).should_receive('glob').with_args('foo*').and_return(['foo', 'food'])
module.create_archive(
excludes_filename=None,
verbosity=None,
storage_config={},
source_directories='foo*',
repository='repo', repository='repo',
command='attic', command='attic',
) )