[Piglit] [PATCH 4/7] framework/grouptools: fix join to handle empty elements correctly

Dylan Baker baker.dylan.c at gmail.com
Wed Sep 2 14:18:23 PDT 2015


Currently join doesn't handle empty values correctly, as it will add an
extra {SEPARATOR} for each of them.

Passing in this value: ['', 'foo', 'bar', '']
will result in this: '@foo at bar@'

This obviously isn't what we want, we really want 'foo at bar', and this
patch corrects the behavior to do that.

Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
---
 framework/grouptools.py             | 9 +++++++++
 framework/tests/grouptools_tests.py | 7 +++++++
 2 files changed, 16 insertions(+)

diff --git a/framework/grouptools.py b/framework/grouptools.py
index d6749d6..b223bf4 100644
--- a/framework/grouptools.py
+++ b/framework/grouptools.py
@@ -109,6 +109,15 @@ def join(first, *args):
     conincedently very similar to the way posixpath.join is implemented.
 
     """
+    # If first happens to be a non-existant value, walk through args until we
+    # find a real value and use that.
+    args = (a for a in args)
+    if not first:
+        for group in args:
+            if group:
+                first = group
+                break
+
     for group in args:
         # Only append things if the group is not empty, otherwise we'll get
         # extra SEPARATORs where we don't want them
diff --git a/framework/tests/grouptools_tests.py b/framework/tests/grouptools_tests.py
index e3b4ee0..f36e350 100644
--- a/framework/tests/grouptools_tests.py
+++ b/framework/tests/grouptools_tests.py
@@ -107,3 +107,10 @@ def test_commonprefix_empty():
     value = grouptools.commonprefix((grouptools.join('foo', 'bar'), ''))
 
     nt.eq_(expected, value)
+
+
+def test_join_empty():
+    """grouptools.join: empty values are not joined"""
+    expected = 'spec'
+    test = grouptools.join('', 'spec')
+    nt.eq_(expected, test)
-- 
2.5.1



More information about the Piglit mailing list