On 11/20/2013 05:10 PM, Dylan Baker wrote:
The commit 0618aa38d4a8a7c82994fb28a41576da9a2cc414 introduces a
regression when using the -t/--include-filter or -x/--exclude-filter
options. This is caused by the __iter__ magic method in the
core.Environment class returning self.__dict__.iteritems(), which
returns compiled regex objects. This will cause the json encoder to
choke.

This patch corrects the __iter__ method in core.Environment to yield
regex items as regex.pattern, and attribute storing the original string
used to create the pattern.

cc: [email protected]
cc: [email protected]
Signed-off-by: Dylan Baker <[email protected]>
---
  framework/core.py | 9 ++++++++-
  1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/framework/core.py b/framework/core.py
index 91969dd..5a9e8b0 100644
--- a/framework/core.py
+++ b/framework/core.py
@@ -417,7 +417,14 @@ class Environment:
              self.exclude_filter.append(re.compile(each))

      def __iter__(self):
-        return self.__dict__.iteritems()
+        for key, values in self.__dict__.iteritems():
+            # If the values are regex compiled then yield their pattern
+            # attribute, which is the original plaintext they were compiled
+            # from, otherwise yield them normally.
+            if key in ['filter', 'exclude_filter']:
+                yield (key, [x.pattern for x in values])
+            else:
+                yield (key, values)

      def run(self, command):
          try:


Tested-by: Brian Paul <[email protected]>

Thanks, Dylan!

-Brian

_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to