99 lines
3.2 KiB
Python
99 lines
3.2 KiB
Python
import os
|
|
import unittest
|
|
|
|
from . import utils
|
|
|
|
import blkid
|
|
|
|
|
|
class BlkidTestCase(unittest.TestCase):
|
|
|
|
test_image = "test.img.xz"
|
|
loop_dev = 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))
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
if cls.loop_dev:
|
|
utils.loop_teardown(cls.loop_dev)
|
|
|
|
def test_blkid(self):
|
|
self.assertTrue(blkid.known_fstype("ext4"))
|
|
self.assertFalse(blkid.known_fstype("not-a-filesystem"))
|
|
|
|
self.assertTrue(blkid.known_pttype("dos"))
|
|
self.assertFalse(blkid.known_fstype("not-a-partition-table"))
|
|
|
|
self.assertEqual(blkid.parse_version_string("2.16.0"), 2160)
|
|
|
|
code, version, date = blkid.get_library_version()
|
|
self.assertGreater(code, 0)
|
|
self.assertIsNotNone(version)
|
|
self.assertIsNotNone(date)
|
|
|
|
ttype, tvalue = blkid.parse_tag_string("NAME=test")
|
|
self.assertEqual(ttype, "NAME")
|
|
self.assertEqual(tvalue, "test")
|
|
|
|
size = blkid.get_dev_size(self.loop_dev)
|
|
self.assertEqual(size, 2097152) # test.img is 2 MiB
|
|
|
|
# dos should be always supported so we can use it here to test
|
|
if hasattr(blkid, "partition_types"):
|
|
types = blkid.partition_types()
|
|
self.assertIn("dos", types)
|
|
|
|
# ext4 should be always supported so we can use it here to test
|
|
supers = blkid.superblocks()
|
|
self.assertIn("ext4", supers)
|
|
|
|
def test_uevent(self):
|
|
with self.assertRaises(RuntimeError):
|
|
blkid.send_uevent("not-a-device", "change")
|
|
|
|
blkid.send_uevent(self.loop_dev, "change")
|
|
|
|
def test_devname(self):
|
|
sysfs_path = "/sys/block/%s/dev" % os.path.basename(self.loop_dev)
|
|
major_minor = utils.read_file(sysfs_path).strip()
|
|
major, minor = major_minor.split(":")
|
|
devno = os.makedev(int(major), int(minor))
|
|
|
|
devpath = blkid.devno_to_devname(devno)
|
|
self.assertEqual(devpath, self.loop_dev)
|
|
|
|
# we don't have a partition so let's just ask for the disk name and devno
|
|
(dname, ddevno) = blkid.devno_to_wholedisk(devno)
|
|
self.assertEqual(dname, os.path.basename(self.loop_dev))
|
|
self.assertEqual(ddevno, devno)
|
|
|
|
def test_safe_encode_string(self):
|
|
string = "aaaaaa"
|
|
safe_string = blkid.safe_string(string)
|
|
encoded_string = blkid.encode_string(string)
|
|
self.assertEqual(string, safe_string)
|
|
self.assertEqual(string, encoded_string)
|
|
|
|
string = "aa aaa"
|
|
safe_string = blkid.safe_string(string)
|
|
encoded_string = blkid.encode_string(string)
|
|
self.assertEqual(safe_string, "aa_aaa")
|
|
self.assertEqual(encoded_string, "aa\\x20aaa")
|
|
|
|
def test_tags(self):
|
|
device = blkid.evaluate_tag("LABEL", "test-ext3")
|
|
self.assertEqual(device, self.loop_dev)
|
|
|
|
device = blkid.evaluate_tag("LABEL", "definitely-not-a-valid-label")
|
|
self.assertIsNone(device)
|
|
|
|
device = blkid.evaluate_spec("LABEL=test-ext3")
|
|
self.assertEqual(device, self.loop_dev)
|
|
|
|
device = blkid.evaluate_spec("LABEL=definitely-not-a-valid-label")
|
|
self.assertIsNone(device)
|