def test_ExtractedArchive(path): archive = op.join(path, fn_archive_obscure_ext) earchive = ExtractedArchive(archive) assert_false(op.exists(earchive.path)) # no longer the case -- just using hash for now # assert_in(os.path.basename(archive), earchive.path) fpath = op.join(fn_archive_obscure, # lead directory fn_in_archive_obscure) extracted = earchive.get_extracted_filename(fpath) eq_(extracted, op.join(earchive.path, fpath)) assert_false(op.exists(extracted)) # not yet extracted_ = earchive.get_extracted_file(fpath) eq_(extracted, extracted_) assert_true(op.exists(extracted)) # now it should extracted_files = earchive.get_extracted_files() ok_generator(extracted_files) eq_(sorted(extracted_files), sorted([ # ['bbc/3.txt', 'bbc/abc'] op.join(fn_archive_obscure, fn_in_archive_obscure), op.join(fn_archive_obscure, '3.txt') ])) earchive.clean() if not os.environ.get('DATALAD_TESTS_TEMP_KEEP'): assert_false(op.exists(earchive.path))
def test_get_leading_directory(): ea = ExtractedArchive('/some/bogus', '/some/bogus') yield _test_get_leading_directory, ea, [], None yield _test_get_leading_directory, ea, ['file.txt'], None yield _test_get_leading_directory, ea, ['file.txt', op.join('d', 'f')], None yield _test_get_leading_directory, ea, [op.join('d', 'f'), op.join('d', 'f2')], 'd' yield _test_get_leading_directory, ea, [op.join('d', 'f'), op.join('d', 'f2')], 'd', {'consider': 'd'} yield _test_get_leading_directory, ea, [op.join('d', 'f'), op.join('d', 'f2')], None, {'consider': 'dd'} yield _test_get_leading_directory, ea, [op.join('d', 'f'), op.join('d2', 'f2')], None yield _test_get_leading_directory, ea, [op.join('d', 'd2', 'f'), op.join('d', 'd2', 'f2')], op.join('d', 'd2') yield _test_get_leading_directory, ea, [op.join('d', 'd2', 'f'), op.join('d', 'd2', 'f2')], 'd', {'depth': 1} # with some parasitic files yield _test_get_leading_directory, ea, [op.join('d', 'f'), op.join('._d')], 'd', {'exclude': ['\._.*']} yield _test_get_leading_directory, ea, [op.join('d', 'd1', 'f'), op.join('d', '._d'), '._x'], op.join('d', 'd1'), {'exclude': ['\._.*']}
def test_get_leading_directory(return_value, target_value, kwargs): ea = ExtractedArchive('/some/bogus', '/some/bogus') with patch.object(ExtractedArchive, 'get_extracted_files', return_value=return_value): eq_(ea.get_leading_directory(**kwargs), target_value)