glx/tests: Fix leaks in the unit tests.

Needed for meson test with asan enabled.

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7936>
This commit is contained in:
Eric Anholt
2020-12-04 11:47:46 -08:00
committed by Marge Bot
parent a3a1a65c09
commit ba8ce62d3c
2 changed files with 60 additions and 39 deletions
+45 -36
View File
@@ -130,6 +130,7 @@ __glXSendError(Display * dpy, int_fast8_t errorCode, uint_fast32_t resourceID,
class glXCreateContextAttribARB_test : public ::testing::Test {
public:
virtual void SetUp();
virtual void TearDown();
/**
* Replace the existing screen with a direct-rendering screen
@@ -137,6 +138,7 @@ public:
void use_direct_rendering_screen();
mock_XDisplay *dpy;
GLXContext ctx;
struct glx_config fbc;
};
@@ -153,6 +155,19 @@ glXCreateContextAttribARB_test::SetUp()
memset(&this->fbc, 0, sizeof(this->fbc));
this->fbc.fbconfigID = 0xbeefcafe;
this->ctx = NULL;
}
void
glXCreateContextAttribARB_test::TearDown()
{
if (ctx)
delete (fake_glx_context *)ctx;
delete (fake_glx_screen *)psc;
delete this->dpy;
}
void
@@ -163,7 +178,7 @@ glXCreateContextAttribARB_test::use_direct_rendering_screen()
psc->scr,
psc->serverGLXexts);
delete psc;
delete (fake_glx_screen *)psc;
psc = direct_psc;
}
@@ -192,7 +207,7 @@ TEST_F(glXCreateContextAttribARB_test, NULL_fbconfig_returns_None)
TEST_F(glXCreateContextAttribARB_test, NULL_screen_returns_None)
{
delete psc;
delete (fake_glx_screen *)psc;
psc = NULL;
GLXContext ctx =
@@ -210,7 +225,7 @@ TEST_F(glXCreateContextAttribARB_test, NULL_screen_returns_None)
/*@{*/
TEST_F(glXCreateContextAttribARB_test, does_send_protocol)
{
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
False, NULL);
EXPECT_TRUE(CreateContextAttribsARB_was_sent);
@@ -218,15 +233,14 @@ TEST_F(glXCreateContextAttribARB_test, does_send_protocol)
TEST_F(glXCreateContextAttribARB_test, sent_correct_context)
{
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
False, NULL);
EXPECT_EQ(99u, req.context);
}
TEST_F(glXCreateContextAttribARB_test, sent_correct_fbconfig)
{
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
False, NULL);
EXPECT_EQ(0xbeefcafe, req.fbconfig);
@@ -240,16 +254,18 @@ TEST_F(glXCreateContextAttribARB_test, sent_correct_share_list)
ASSERT_NE((GLXContext) 0, share);
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, share,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, share,
False, NULL);
struct glx_context *glx_ctx = (struct glx_context *) share;
EXPECT_EQ(glx_ctx->xid, req.share_list);
delete (fake_glx_context *)share;
}
TEST_F(glXCreateContextAttribARB_test, sent_correct_is_direct_for_indirect_screen_and_direct_set_to_true)
{
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
True, NULL);
EXPECT_FALSE(req.is_direct);
@@ -257,7 +273,7 @@ TEST_F(glXCreateContextAttribARB_test, sent_correct_is_direct_for_indirect_scree
TEST_F(glXCreateContextAttribARB_test, sent_correct_is_direct_for_indirect_screen_and_direct_set_to_false)
{
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
False, NULL);
EXPECT_FALSE(req.is_direct);
@@ -267,7 +283,7 @@ TEST_F(glXCreateContextAttribARB_test, sent_correct_is_direct_for_direct_screen_
{
this->use_direct_rendering_screen();
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
True, NULL);
EXPECT_TRUE(req.is_direct);
@@ -277,7 +293,7 @@ TEST_F(glXCreateContextAttribARB_test, sent_correct_is_direct_for_direct_screen_
{
this->use_direct_rendering_screen();
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
False, NULL);
EXPECT_FALSE(req.is_direct);
@@ -288,7 +304,7 @@ TEST_F(glXCreateContextAttribARB_test, sent_correct_screen)
this->fbc.screen = 7;
psc->scr = 7;
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
False, NULL);
EXPECT_EQ(7u, req.screen);
@@ -311,7 +327,7 @@ TEST_F(glXCreateContextAttribARB_test, sent_correct_num_attribs)
0, 0
};
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
False, attribs);
EXPECT_EQ(4u, req.num_attribs);
@@ -323,7 +339,7 @@ TEST_F(glXCreateContextAttribARB_test, sent_correct_num_attribs_empty_list)
0,
};
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
False, attribs);
EXPECT_EQ(0u, req.num_attribs);
@@ -331,7 +347,7 @@ TEST_F(glXCreateContextAttribARB_test, sent_correct_num_attribs_empty_list)
TEST_F(glXCreateContextAttribARB_test, sent_correct_num_attribs_NULL_list_pointer)
{
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
False, NULL);
EXPECT_EQ(0u, req.num_attribs);
@@ -346,7 +362,7 @@ TEST_F(glXCreateContextAttribARB_test, sent_correct_attrib_list)
0
};
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
False, attribs);
for (unsigned i = 0; i < 6; i++) {
@@ -361,8 +377,7 @@ TEST_F(glXCreateContextAttribARB_test, sent_correct_attrib_list)
/*@{*/
TEST_F(glXCreateContextAttribARB_test, correct_context)
{
GLXContext ctx =
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
False, NULL);
/* Since the server did not return an error, the GLXContext should not be
@@ -377,8 +392,7 @@ TEST_F(glXCreateContextAttribARB_test, correct_context)
TEST_F(glXCreateContextAttribARB_test, correct_context_xid)
{
GLXContext ctx =
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
False, NULL);
/* Since the server did not return an error, the GLXContext should not be
@@ -407,12 +421,14 @@ TEST_F(glXCreateContextAttribARB_test, correct_context_share_xid)
struct glx_context *share = (struct glx_context *) first;
struct glx_context *ctx = (struct glx_context *) second;
EXPECT_EQ(share->xid, ctx->share_xid);
delete (fake_glx_context *)first;
delete (fake_glx_context *)second;
}
TEST_F(glXCreateContextAttribARB_test, correct_context_isDirect_for_indirect_screen_and_direct_set_to_true)
{
GLXContext ctx =
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
True, NULL);
ASSERT_NE((GLXContext) 0, ctx);
@@ -424,8 +440,7 @@ TEST_F(glXCreateContextAttribARB_test, correct_context_isDirect_for_indirect_scr
TEST_F(glXCreateContextAttribARB_test, correct_context_isDirect_for_indirect_screen_and_direct_set_to_false)
{
GLXContext ctx =
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
False, NULL);
ASSERT_NE((GLXContext) 0, ctx);
@@ -439,8 +454,7 @@ TEST_F(glXCreateContextAttribARB_test, correct_context_isDirect_for_direct_scree
{
this->use_direct_rendering_screen();
GLXContext ctx =
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
True, NULL);
ASSERT_NE((GLXContext) 0, ctx);
@@ -454,8 +468,7 @@ TEST_F(glXCreateContextAttribARB_test, correct_context_isDirect_for_direct_scree
{
this->use_direct_rendering_screen();
GLXContext ctx =
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
False, NULL);
ASSERT_NE((GLXContext) 0, ctx);
@@ -467,8 +480,7 @@ TEST_F(glXCreateContextAttribARB_test, correct_context_isDirect_for_direct_scree
TEST_F(glXCreateContextAttribARB_test, correct_indirect_context_client_state_private)
{
GLXContext ctx =
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
False, NULL);
ASSERT_NE((GLXContext) 0, ctx);
@@ -482,8 +494,7 @@ TEST_F(glXCreateContextAttribARB_test, correct_indirect_context_client_state_pri
TEST_F(glXCreateContextAttribARB_test, correct_indirect_context_config)
{
GLXContext ctx =
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
False, NULL);
ASSERT_NE((GLXContext) 0, ctx);
@@ -498,8 +509,7 @@ TEST_F(glXCreateContextAttribARB_test, correct_context_screen_number)
this->fbc.screen = 7;
psc->scr = 7;
GLXContext ctx =
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
False, NULL);
ASSERT_NE((GLXContext) 0, ctx);
@@ -511,8 +521,7 @@ TEST_F(glXCreateContextAttribARB_test, correct_context_screen_number)
TEST_F(glXCreateContextAttribARB_test, correct_context_screen_pointer)
{
GLXContext ctx =
glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
ctx = glXCreateContextAttribsARB(this->dpy, (GLXFBConfig) &this->fbc, 0,
False, NULL);
ASSERT_NE((GLXContext) 0, ctx);