tests: Only run buffer-count test if we have at least mesa 10

https://bugs.freedesktop.org/show_bug.cgi?id=72835
diff --git a/tests/buffer-count-test.c b/tests/buffer-count-test.c
index ad2bcee..3b66e31 100644
--- a/tests/buffer-count-test.c
+++ b/tests/buffer-count-test.c
@@ -45,6 +45,7 @@
 {
 	struct wl_egl_window *native_window;
 	struct surface *surface = test_data->client->surface;
+	const char *str, *mesa;
 
 	static const EGLint context_attribs[] = {
 		EGL_CONTEXT_CLIENT_VERSION, 2,
@@ -95,6 +96,18 @@
 	ret = eglMakeCurrent(test_data->egl_dpy, test_data->egl_surface,
 			     test_data->egl_surface, test_data->egl_ctx);
 	assert(ret == EGL_TRUE);
+
+	/* This test is specific to mesa 10.0 and later, which is the
+	 * first release that doesn't accidentally triple-buffer. */
+	str = (const char *) glGetString(GL_VERSION);
+	mesa = strstr(str, "Mesa ");
+	if (mesa == NULL)
+		skip("unknown EGL implementation (%s)\n", str);
+	if (sscanf(mesa + 5, "%d.%d", &major, &minor) != 2)
+		skip("unrecognized mesa version (%s)\n", str);
+	if (major < 10)
+		skip("mesa version too old (%s)\n", str);
+
 }
 
 TEST(test_buffer_count)
diff --git a/tests/weston-test-client-helper.c b/tests/weston-test-client-helper.c
index fd265f2..399aa44 100644
--- a/tests/weston-test-client-helper.c
+++ b/tests/weston-test-client-helper.c
@@ -496,6 +496,20 @@
 	handle_global
 };
 
+void
+skip(const char *fmt, ...)
+{
+	va_list argp;
+
+	va_start(argp, fmt);
+	vfprintf(stderr, fmt, argp);
+	va_end(argp);
+
+	/* automake tests uses exit code 77, but we don't have a good
+	 * way to make weston exit with that from here. */
+	exit(0);
+}
+
 static void
 log_handler(const char *fmt, va_list args)
 {
diff --git a/tests/weston-test-client-helper.h b/tests/weston-test-client-helper.h
index c78fc28..6670ab3 100644
--- a/tests/weston-test-client-helper.h
+++ b/tests/weston-test-client-helper.h
@@ -124,4 +124,7 @@
 int
 get_n_egl_buffers(struct client *client);
 
+void
+skip(const char *fmt, ...);
+
 #endif