[blivet:rhel7/master 01/16] Have writeLabel throw a more informative exception (#1038590)

mulhern amulhern at redhat.com
Thu Jan 16 16:10:02 UTC 2014


Related: rhbz#1038590

If the format of the label is one the application can not write,
have it throw an exception. Previously the system call have thrown an exception,
but that one would have been much less informative.

Signed-off-by: mulhern <amulhern at redhat.com>
---
 blivet/formats/fs.py            |  3 +++
 tests/formats_test/misc_test.py | 22 ++++++++++++++++++++++
 2 files changed, 25 insertions(+)

diff --git a/blivet/formats/fs.py b/blivet/formats/fs.py
index f62d904..d0c45e1 100644
--- a/blivet/formats/fs.py
+++ b/blivet/formats/fs.py
@@ -649,6 +649,9 @@ class FS(DeviceFormat):
         if not self._labelfs:
             raise FSError("no application to set label for filesystem %s" % self.type)
 
+        if self.label and not self.labelFormatOK(self.label):
+            raise FSError("bad label format for labelling application %s" % self._labelfs.name)
+
         if not self.label and not self._labelfs.unsetsLabel:
             raise FSError("application %s can not unset a filesystem label." % self._labelfs.name)
 
diff --git a/tests/formats_test/misc_test.py b/tests/formats_test/misc_test.py
index 6593f67..b35a783 100755
--- a/tests/formats_test/misc_test.py
+++ b/tests/formats_test/misc_test.py
@@ -98,6 +98,11 @@ class LabelingAsRootTestCase(baseclass.DevicelibsTestCase):
             an_fs.writeLabel)
         self.assertEqual(an_fs.readLabel(), "temeraire")
 
+        an_fs.label = "root___filesystem"
+        self.assertRaisesRegexp(fs.FSError,
+           "bad label format",
+           an_fs.writeLabel)
+
     @unittest.skipUnless(os.geteuid() == 0, "requires root privileges")
     def testLabelingFATFS(self):
         _LOOP_DEV0 = self._loopMap[self._LOOP_DEVICES[0]]
@@ -113,6 +118,10 @@ class LabelingAsRootTestCase(baseclass.DevicelibsTestCase):
         self.assertIsNone(an_fs.writeLabel())
         self.assertEqual(an_fs.readLabel(), an_fs.label)
 
+        an_fs.label = "root___filesystem"
+        self.assertRaisesRegexp(fs.FSError,
+           "bad label format",
+           an_fs.writeLabel)
 
     @unittest.skipUnless(os.geteuid() == 0, "requires root privileges")
     def testLabelingExt2FS(self):
@@ -129,6 +138,10 @@ class LabelingAsRootTestCase(baseclass.DevicelibsTestCase):
         self.assertIsNone(an_fs.writeLabel())
         self.assertEqual(an_fs.readLabel(), an_fs.label)
 
+        an_fs.label = "root___filesystem"
+        self.assertRaisesRegexp(fs.FSError,
+           "bad label format",
+           an_fs.writeLabel)
 
     @unittest.skipUnless(os.geteuid() == 0, "requires root privileges")
     def testLabelingJFS(self):
@@ -147,6 +160,10 @@ class LabelingAsRootTestCase(baseclass.DevicelibsTestCase):
         an_fs.label = None
         self.assertIsNone(an_fs.writeLabel())
 
+        an_fs.label = "root___filesystem"
+        self.assertRaisesRegexp(fs.FSError,
+           "bad label format",
+           an_fs.writeLabel)
 
     @unittest.skipUnless(os.geteuid() == 0, "requires root privileges")
     def testLabelingReiserFS(self):
@@ -165,6 +182,11 @@ class LabelingAsRootTestCase(baseclass.DevicelibsTestCase):
         an_fs.label = None
         self.assertIsNone(an_fs.writeLabel())
 
+        an_fs.label = "root___filesystem"
+        self.assertRaisesRegexp(fs.FSError,
+           "bad label format",
+           an_fs.writeLabel)
+
     @unittest.skipUnless(os.geteuid() == 0, "requires root privileges")
     def testLabelingSwapSpace(self):
         _LOOP_DEV0 = self._loopMap[self._LOOP_DEVICES[0]]
-- 
1.8.3.1



More information about the anaconda-patches mailing list