69 lines
2.0 KiB
Python
69 lines
2.0 KiB
Python
import os
|
|
import unittest
|
|
import tempfile
|
|
|
|
from . import utils
|
|
|
|
import blkid
|
|
|
|
|
|
@unittest.skipUnless(os.geteuid() == 0, "requires root access")
|
|
class CacheTestCase(unittest.TestCase):
|
|
|
|
test_image = "test.img.xz"
|
|
loop_dev = None
|
|
cache_file = None
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
test_dir = os.path.abspath(os.path.dirname(__file__))
|
|
cls.loop_dev = utils.loop_setup(os.path.join(test_dir, cls.test_image))
|
|
|
|
_, cls.cache_file = tempfile.mkstemp()
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
if cls.loop_dev:
|
|
utils.loop_teardown(cls.loop_dev)
|
|
|
|
if cls.cache_file:
|
|
os.remove(cls.cache_file)
|
|
|
|
def test_cache(self):
|
|
cache = blkid.Cache(filename=self.cache_file)
|
|
cache.probe_all()
|
|
cache.probe_all(removable=True)
|
|
cache.gc()
|
|
|
|
device = cache.get_device(self.loop_dev)
|
|
self.assertIsNotNone(device)
|
|
self.assertEqual(device.devname, self.loop_dev)
|
|
|
|
device = cache.find_device("LABEL", "not-in-cache")
|
|
self.assertIsNone(device)
|
|
|
|
device = cache.find_device("LABEL", "test-ext3")
|
|
self.assertIsNotNone(device)
|
|
self.assertEqual(device.devname, self.loop_dev)
|
|
|
|
self.assertIsNotNone(device.tags)
|
|
self.assertIn("UUID", device.tags.keys())
|
|
self.assertEqual(device.tags["UUID"], "35f66dab-477e-4090-a872-95ee0e493ad6")
|
|
self.assertIn("LABEL", device.tags.keys())
|
|
self.assertEqual(device.tags["LABEL"], "test-ext3")
|
|
self.assertIn("TYPE", device.tags.keys())
|
|
self.assertEqual(device.tags["TYPE"], "ext3")
|
|
|
|
self.assertTrue(cache.devices)
|
|
self.assertIn(self.loop_dev, [d.devname for d in cache.devices])
|
|
|
|
device.verify()
|
|
self.assertIsNotNone(device)
|
|
self.assertEqual(device.devname, self.loop_dev)
|
|
|
|
# we don't have new devices, so just a sanity check
|
|
cache.probe_all(new_only=True)
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|