[Piglit] [PATCH] framework: fix duplicated TEST_BIN_DIR for cygwin

Brian Paul brianp at vmware.com
Wed Jul 16 09:58:08 PDT 2014

The GLSLParserTest and ShaderTest subclasses of the PiglitTest class
were prepending the TEST_BIN_DIR variable onto the executable name
(such as "glslparsertest" and "shader_runner").  But the PiglitTest
class itself also does that so we were prepending TEST_BIN_DIR twice.

With unix paths, os.path.join("/abs/path1", "/abs/path2") returns

But with cygwin, os.path.join("C:\\abspath1", "C:\\abspath2") returns
"C:\\abspath1/C:\\abspath2" which clearly causes trouble.

The solution is to only prepend the TEST_BIN_DIR path in the PiglitTest

This issue was only encountered when the PIGLIT_BUILD_DIR env var was set,
which I just recently tried for the first time.

v2: don't change GleanTest, it's a subclass of Test, not PiglitTest.
 framework/glsl_parser_test.py |    4 ++--
 framework/shader_test.py      |    8 ++++----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/framework/glsl_parser_test.py b/framework/glsl_parser_test.py
index 27fd2ca..202ea5b 100644
--- a/framework/glsl_parser_test.py
+++ b/framework/glsl_parser_test.py
@@ -27,7 +27,7 @@ import os.path as path
 import re
 from cStringIO import StringIO
-from .exectest import PiglitTest, TEST_BIN_DIR
+from .exectest import PiglitTest
 def add_glsl_parser_test(group, filepath, test_name):
@@ -146,7 +146,7 @@ class GLSLParserTest(PiglitTest):
                                               "from config".format(opt))
             # Create the command and pass it into a PiglitTest()
-            command = [path.join(TEST_BIN_DIR, 'glslparsertest'),
+            command = ['glslparsertest',
                        config.get('config', 'expect_result'),
                        config.get('config', 'glsl_version')]
diff --git a/framework/shader_test.py b/framework/shader_test.py
index 0083072..6cfd86a 100644
--- a/framework/shader_test.py
+++ b/framework/shader_test.py
@@ -27,7 +27,7 @@ import os
 import os.path as path
 import re
-from .exectest import PiglitTest, TEST_BIN_DIR
+from .exectest import PiglitTest
 __all__ = ['add_shader_test', 'add_shader_test_dir']
@@ -65,9 +65,9 @@ class ShaderTest(PiglitTest):
                 line = line.strip()
                 if line.startswith('GL ES'):
                     if line.endswith('3.0'):
-                        prog = path.join(TEST_BIN_DIR, 'shader_runner_gles3')
+                        prog = 'shader_runner_gles3'
                     elif line.endswith('2.0'):
-                        prog = path.join(TEST_BIN_DIR, 'shader_runner_gles2')
+                        prog = 'shader_runner_gles2'
                     # If we don't set gles2 or gles3 continue the loop,
                     # probably htting the exception in the for/else
@@ -77,7 +77,7 @@ class ShaderTest(PiglitTest):
                     # In the event that we reach the end of the config black
                     # and an API hasn't been found, it's an old test and uses
                     # "GL"
-                    prog = path.join(TEST_BIN_DIR, 'shader_runner')
+                    prog = 'shader_runner'
                 raise ShaderTestParserException("No GL version set")

More information about the Piglit mailing list