| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- """
- Unit tests for the disk utilities.
- """
- # Authors: Gael Varoquaux <gael dot varoquaux at normalesup dot org>
- # Lars Buitinck
- # Copyright (c) 2010 Gael Varoquaux
- # License: BSD Style, 3 clauses.
- from __future__ import with_statement
- import array
- import os
- from joblib.disk import disk_used, memstr_to_bytes, mkdirp, rm_subdirs
- from joblib.testing import parametrize, raises
- ###############################################################################
- def test_disk_used(tmpdir):
- cachedir = tmpdir.strpath
- # Not write a file that is 1M big in this directory, and check the
- # size. The reason we use such a big file is that it makes us robust
- # to errors due to block allocation.
- a = array.array('i')
- sizeof_i = a.itemsize
- target_size = 1024
- n = int(target_size * 1024 / sizeof_i)
- a = array.array('i', n * (1,))
- with open(os.path.join(cachedir, 'test'), 'wb') as output:
- a.tofile(output)
- assert disk_used(cachedir) >= target_size
- assert disk_used(cachedir) < target_size + 12
- @parametrize('text,value',
- [('80G', 80 * 1024 ** 3),
- ('1.4M', int(1.4 * 1024 ** 2)),
- ('120M', 120 * 1024 ** 2),
- ('53K', 53 * 1024)])
- def test_memstr_to_bytes(text, value):
- assert memstr_to_bytes(text) == value
- @parametrize('text,exception,regex',
- [('fooG', ValueError, r'Invalid literal for size.*fooG.*'),
- ('1.4N', ValueError, r'Invalid literal for size.*1.4N.*')])
- def test_memstr_to_bytes_exception(text, exception, regex):
- with raises(exception) as excinfo:
- memstr_to_bytes(text)
- assert excinfo.match(regex)
- def test_mkdirp(tmpdir):
- mkdirp(os.path.join(tmpdir.strpath, 'ham'))
- mkdirp(os.path.join(tmpdir.strpath, 'ham'))
- mkdirp(os.path.join(tmpdir.strpath, 'spam', 'spam'))
- # Not all OSErrors are ignored
- with raises(OSError):
- mkdirp('')
- def test_rm_subdirs(tmpdir):
- sub_path = os.path.join(tmpdir.strpath, "am", "stram")
- full_path = os.path.join(sub_path, "gram")
- mkdirp(os.path.join(full_path))
- rm_subdirs(sub_path)
- assert os.path.exists(sub_path)
- assert not os.path.exists(full_path)
|