[Piglit] [PATCH] framework/core: add fallback to PiglitConfig.safe_get

Dylan Baker baker.dylan.c at gmail.com
Tue Sep 22 13:04:46 PDT 2015

This is in keeping with the way that piglitconfig.get() works in python3
(although there are some corner case differences since in python3 it
uses keyword only arguments).

Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>

This would actually be pretty useful in a number of cases in piglit
currently, and a few patches on the mailing list.

 framework/core.py             | 6 +++---
 framework/tests/core_tests.py | 4 ++++
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/framework/core.py b/framework/core.py
index 63cb911..dbd6895 100644
--- a/framework/core.py
+++ b/framework/core.py
@@ -58,7 +58,7 @@ class PiglitConfig(ConfigParser.SafeConfigParser):
         ConfigParser.SafeConfigParser.readfp(self, fp, filename)
         self.filename = os.path.abspath(filename or fp.name)
-    def safe_get(self, *args, **kwargs):
+    def safe_get(self, section, option, fallback=None, **kwargs):
         """A version of self.get that doesn't raise NoSectionError or
@@ -67,9 +67,9 @@ class PiglitConfig(ConfigParser.SafeConfigParser):
-            return self.get(*args, **kwargs)
+            return self.get(section, option, **kwargs)
         except (ConfigParser.NoOptionError, ConfigParser.NoSectionError):
-            return None
+            return fallback
     def required_get(self, section, option, **kwargs):
         """A version fo self.get that raises PiglitFatalError.
diff --git a/framework/tests/core_tests.py b/framework/tests/core_tests.py
index af09339..9be9c57 100644
--- a/framework/tests/core_tests.py
+++ b/framework/tests/core_tests.py
@@ -267,3 +267,7 @@ class TestPiglitConfig(object):
         """core.PiglitConfig: required_get raises PiglitFatalError if the section is missing
         self.conf.required_get('invalid', 'invalid')
+    def test_safe_get_fallback(self):
+        """core.PiglitConfig: safe_get returns the value of fallback when the section or option is missing"""
+        nt.eq_(self.conf.safe_get('invalid', 'invalid', fallback='foo'), 'foo')

More information about the Piglit mailing list