[blivet:rhel7 2/6] Fix failing udev_test (#1065431)

mulhern amulhern at redhat.com
Mon Feb 17 22:08:21 UTC 2014


Resolves: rhbz#1065431

Cherry-picked from commit 01c6949ee336e3bb3861a9e94280f5ec1dcc62b4 (udev_test.py) part.

Signed-off-by: mulhern <amulhern at redhat.com>
---
 tests/udev_test.py | 65 +++++++++++++++++++++++++++++++-----------------------
 1 file changed, 37 insertions(+), 28 deletions(-)

diff --git a/tests/udev_test.py b/tests/udev_test.py
index 9217aeb..feaca45 100644
--- a/tests/udev_test.py
+++ b/tests/udev_test.py
@@ -1,23 +1,17 @@
 #!/usr/bin/python
 
+import unittest
 import mock
 import os
 
-class UdevTest(mock.TestCase):
+class UdevTest(unittest.TestCase):
 
     def setUp(self):
-        self.setupModules(["_isys", "block", "ConfigParser"])
-        self.fs = mock.DiskIO()
-
         import blivet.udev
         blivet.udev.os = mock.Mock()
         blivet.udev.log = mock.Mock()
-        blivet.udev.open = self.fs.open
-
-    def tearDown(self):
-        self.tearDownModules()
 
-    def udev_enumerate_devices_test(self):
+    def test_udev_enumerate_devices(self):
         import blivet.udev
         ENUMERATE_LIST = [
             '/sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda',
@@ -27,7 +21,6 @@ class UdevTest(mock.TestCase):
             '/sys/devices/virtual/block/ram1',
             '/sys/devices/virtual/block/dm-0',
         ]
-
         blivet.udev.global_udev.enumerate_devices = mock.Mock(return_value=ENUMERATE_LIST)
         ret = blivet.udev.udev_enumerate_devices()
         self.assertEqual(set(ret),
@@ -37,7 +30,7 @@ class UdevTest(mock.TestCase):
             '/devices/virtual/block/dm-0'])
         )
 
-    def udev_get_device_1_test(self):
+    def test_udev_get_device_1(self):
         import blivet.udev
 
         class Device(object):
@@ -66,6 +59,8 @@ class UdevTest(mock.TestCase):
         dev = Device()
         blivet.udev.global_udev = mock.Mock()
         blivet.udev.global_udev.create_device.return_value = dev
+
+        saved = blivet.udev.udev_parse_uevent_file
         blivet.udev.udev_parse_uevent_file = mock.Mock(return_value=dev)
 
         ret = blivet.udev.udev_get_device(DEV_PATH)
@@ -74,13 +69,15 @@ class UdevTest(mock.TestCase):
         self.assertEqual(ret['sysfs_path'], DEV_PATH)
         self.assertTrue(blivet.udev.udev_parse_uevent_file.called)
 
-    def udev_get_device_2_test(self):
+        blivet.udev.udev_parse_uevent_file = saved
+
+    def test_udev_get_device_2(self):
         import blivet.udev
         blivet.udev.os.path.exists.return_value = False
         ret = blivet.udev.udev_get_device('')
         self.assertEqual(ret, None)
 
-    def udev_get_device_3_test(self):
+    def test_udev_get_device_3(self):
         import blivet.udev
         blivet.udev.os.path.exists.return_value = True
         blivet.udev.global_udev = mock.Mock()
@@ -88,8 +85,9 @@ class UdevTest(mock.TestCase):
         ret = blivet.udev.udev_get_device('')
         self.assertEqual(ret, None)
 
-    def udev_get_devices_test(self):
+    def test_udev_get_devices(self):
         import blivet.udev
+        saved = blivet.udev.udev_settle
         blivet.udev.udev_settle = mock.Mock()
         DEVS = \
             ['/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda',
@@ -100,24 +98,31 @@ class UdevTest(mock.TestCase):
         blivet.udev.udev_get_device = lambda x: x
         ret = blivet.udev.udev_get_devices()
         self.assertEqual(ret, DEVS)
+        blivet.udev.udev_settle = saved
 
-    def udev_parse_uevent_file_1_test(self):
+    def test_udev_parse_uevent_file_1(self):
         import blivet.udev
-        blivet.udev.os.path.normpath = os.path.normpath
-        blivet.udev.os.access.return_value = True
+        # For this one we're accessing the real uevent file (twice).
+        path = '/devices/virtual/block/loop1'
+        info = {'sysfs_path': path}
+        for line in open('/sys' + path + '/uevent').readlines():
+            (name, equals, value) = line.strip().partition("=")
+            if not equals:
+                continue
 
-        FILE_CONTENT = "MAJOR=7\nMINOR=1\nDEVNAME=loop1\nDEVTYPE=disk\n"
-        self.fs.open('/sys/devices/virtual/block/loop1/uevent', 'w').write(FILE_CONTENT)
-        dev = {'sysfs_path': '/devices/virtual/block/loop1'}
+            info[name] = value
+
+        dev = {'sysfs_path': path}
+        blivet.udev.os.path.normpath = os.path.normpath
+        blivet.udev.os.access = os.access
+        blivet.udev.os.R_OK = os.R_OK
         ret = blivet.udev.udev_parse_uevent_file(dev)
-        self.assertEqual(ret,
-            {'sysfs_path': '/devices/virtual/block/loop1',
-            'DEVNAME': 'loop1',
-            'DEVTYPE': 'disk',
-            'MAJOR': '7',
-            'MINOR': '1'})
-
-    def udev_parse_uevent_file_2_test(self):
+        self.assertEqual(ret, info)
+        blivet.udev.os.path.normpath = mock.Mock()
+        blivet.udev.os.access = mock.Mock()
+        blivet.udev.os.R_OK = mock.Mock()
+
+    def test_udev_parse_uevent_file_2(self):
         import blivet.udev
         blivet.udev.os.path.normpath = os.path.normpath
         blivet.udev.os.access.return_value = False
@@ -137,3 +142,7 @@ class UdevTest(mock.TestCase):
         blivet.udev.util = mock.Mock()
         blivet.udev.udev_trigger()
         self.assertTrue(blivet.udev.util.run_program.called)
+
+
+if __name__ == "__main__":
+    unittest.main()
-- 
1.8.3.1



More information about the anaconda-patches mailing list