From 329330992587758776ae3a333ea4993333e6c373 Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Tue, 17 May 2011 22:15:34 -0700
Subject: [PATCH] glslparsertest: Hack it up to link successful shaders.

---
 tests/glslparsertest/glslparsertest.c |   34 +++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/tests/glslparsertest/glslparsertest.c b/tests/glslparsertest/glslparsertest.c
index 6a20a0d..faff4cb 100644
--- a/tests/glslparsertest/glslparsertest.c
+++ b/tests/glslparsertest/glslparsertest.c
@@ -63,6 +63,26 @@ get_shader_compile_status(GLuint shader)
 	return status;
 }
 
+static GLint
+get_shader_link_status(GLuint shader)
+{
+	GLint status;
+
+#if defined USE_OPENGL
+	if (gl_major_version >= 2) {
+		glGetProgramiv(shader, GL_LINK_STATUS, &status);
+	} else {
+		glGetObjectParameterivARB(shader, GL_OBJECT_LINK_STATUS_ARB, &status);
+	}
+#elif defined USE_OPENGL_ES2
+	glGetProgramiv(shader, GL_LINK_STATUS, &status);
+#else
+#	error
+#endif
+
+	return status;
+}
+
 static GLsizei
 get_shader_info_log_length(GLuint shader)
 {
@@ -97,6 +117,7 @@ test(void)
 	GLchar *info;
 	GLint size;
 	GLenum type;
+	bool link = true;
 
 	if (strcmp(filename + strlen(filename) - 4, "frag") == 0)
 		type = GL_FRAGMENT_SHADER;
@@ -173,6 +194,19 @@ test(void)
 		}
 	}
 
+	if (ok && link) {
+		GLuint shader_prog;
+
+		shader_prog = piglit_CreateProgram();
+		piglit_AttachShader(shader_prog, prog);
+
+		piglit_LinkProgram(shader_prog);
+
+		ok = get_shader_link_status(shader_prog);
+		if (!ok)
+			piglit_report_result(PIGLIT_FAIL);
+	}
+
 	if (size != 0)
 		free(info);
 	free(prog_string);
-- 
1.7.5.1

