""" Unit tests for the disk utilities. """ # Authors: Gael Varoquaux # Lars Buitinck # Copyright (c) 2010 Gael Varoquaux # License: BSD Style, 3 clauses. from __future__ import with_statement import os import shutil import array from tempfile import mkdtemp import nose from ..disk import disk_used, memstr_to_kbytes, mkdirp ############################################################################### def test_disk_used(): cachedir = mkdtemp() try: if os.path.exists(cachedir): shutil.rmtree(cachedir) os.mkdir(cachedir) # 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) nose.tools.assert_true(disk_used(cachedir) >= target_size) nose.tools.assert_true(disk_used(cachedir) < target_size + 12) finally: shutil.rmtree(cachedir) def test_memstr_to_kbytes(): for text, value in zip(('80G', '1.4M', '120M', '53K'), (80 * 1024 ** 2, int(1.4 * 1024), 120 * 1024, 53)): yield nose.tools.assert_equal, memstr_to_kbytes(text), value nose.tools.assert_raises(ValueError, memstr_to_kbytes, 'foobar') def test_mkdirp(): try: tmp = mkdtemp() mkdirp(os.path.join(tmp, "ham")) mkdirp(os.path.join(tmp, "ham")) mkdirp(os.path.join(tmp, "spam", "spam")) # Not all OSErrors are ignored nose.tools.assert_raises(OSError, mkdirp, "") finally: shutil.rmtree(tmp)