xref: /aosp_15_r20/external/mesa3d/src/util/tests/xmlconfig.cpp (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Copyright © 2020 Google LLC
3*61046927SAndroid Build Coastguard Worker  *
4*61046927SAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a
5*61046927SAndroid Build Coastguard Worker  * copy of this software and associated documentation files (the "Software"),
6*61046927SAndroid Build Coastguard Worker  * to deal in the Software without restriction, including without limitation
7*61046927SAndroid Build Coastguard Worker  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8*61046927SAndroid Build Coastguard Worker  * and/or sell copies of the Software, and to permit persons to whom the
9*61046927SAndroid Build Coastguard Worker  * Software is furnished to do so, subject to the following conditions:
10*61046927SAndroid Build Coastguard Worker  *
11*61046927SAndroid Build Coastguard Worker  * The above copyright notice and this permission notice (including the next
12*61046927SAndroid Build Coastguard Worker  * paragraph) shall be included in all copies or substantial portions of the
13*61046927SAndroid Build Coastguard Worker  * Software.
14*61046927SAndroid Build Coastguard Worker  *
15*61046927SAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16*61046927SAndroid Build Coastguard Worker  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17*61046927SAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18*61046927SAndroid Build Coastguard Worker  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19*61046927SAndroid Build Coastguard Worker  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20*61046927SAndroid Build Coastguard Worker  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21*61046927SAndroid Build Coastguard Worker  * IN THE SOFTWARE.
22*61046927SAndroid Build Coastguard Worker  */
23*61046927SAndroid Build Coastguard Worker 
24*61046927SAndroid Build Coastguard Worker #include <gtest/gtest.h>
25*61046927SAndroid Build Coastguard Worker #include <driconf.h>
26*61046927SAndroid Build Coastguard Worker #include <xmlconfig.h>
27*61046927SAndroid Build Coastguard Worker 
28*61046927SAndroid Build Coastguard Worker class xmlconfig_test : public ::testing::Test {
29*61046927SAndroid Build Coastguard Worker protected:
30*61046927SAndroid Build Coastguard Worker    xmlconfig_test();
31*61046927SAndroid Build Coastguard Worker    ~xmlconfig_test();
32*61046927SAndroid Build Coastguard Worker 
33*61046927SAndroid Build Coastguard Worker    driOptionCache drirc_init(const char *driver, const char *drm,
34*61046927SAndroid Build Coastguard Worker                              const char *exec_name,
35*61046927SAndroid Build Coastguard Worker                              const char *app, int appver,
36*61046927SAndroid Build Coastguard Worker                              const char *engine, int enginever);
37*61046927SAndroid Build Coastguard Worker 
38*61046927SAndroid Build Coastguard Worker    driOptionCache options;
39*61046927SAndroid Build Coastguard Worker };
40*61046927SAndroid Build Coastguard Worker 
xmlconfig_test()41*61046927SAndroid Build Coastguard Worker xmlconfig_test::xmlconfig_test()
42*61046927SAndroid Build Coastguard Worker {
43*61046927SAndroid Build Coastguard Worker    /* Unset variables from the envrionment to prevent user settings from
44*61046927SAndroid Build Coastguard Worker     * impacting the tests.
45*61046927SAndroid Build Coastguard Worker     */
46*61046927SAndroid Build Coastguard Worker    unsetenv("glsl_zero_init");
47*61046927SAndroid Build Coastguard Worker    unsetenv("always_have_depth_buffer");
48*61046927SAndroid Build Coastguard Worker    unsetenv("opt");
49*61046927SAndroid Build Coastguard Worker    unsetenv("vblank_mode");
50*61046927SAndroid Build Coastguard Worker    unsetenv("not_present");
51*61046927SAndroid Build Coastguard Worker    unsetenv("mesa_b_option");
52*61046927SAndroid Build Coastguard Worker    unsetenv("mesa_s_option");
53*61046927SAndroid Build Coastguard Worker    unsetenv("mest_test_unknown_option");
54*61046927SAndroid Build Coastguard Worker    unsetenv("mest_drirc_option");
55*61046927SAndroid Build Coastguard Worker 
56*61046927SAndroid Build Coastguard Worker    options = {};
57*61046927SAndroid Build Coastguard Worker }
58*61046927SAndroid Build Coastguard Worker 
~xmlconfig_test()59*61046927SAndroid Build Coastguard Worker xmlconfig_test::~xmlconfig_test()
60*61046927SAndroid Build Coastguard Worker {
61*61046927SAndroid Build Coastguard Worker    driDestroyOptionInfo(&options);
62*61046927SAndroid Build Coastguard Worker }
63*61046927SAndroid Build Coastguard Worker 
64*61046927SAndroid Build Coastguard Worker /* wraps a DRI_CONF_OPT_* in the required xml bits */
65*61046927SAndroid Build Coastguard Worker #define DRI_CONF_TEST_OPT(x) x
66*61046927SAndroid Build Coastguard Worker 
TEST_F(xmlconfig_test,bools)67*61046927SAndroid Build Coastguard Worker TEST_F(xmlconfig_test, bools)
68*61046927SAndroid Build Coastguard Worker {
69*61046927SAndroid Build Coastguard Worker    driOptionDescription driconf[] = {
70*61046927SAndroid Build Coastguard Worker       DRI_CONF_SECTION_MISCELLANEOUS
71*61046927SAndroid Build Coastguard Worker       DRI_CONF_GLSL_ZERO_INIT(false)
72*61046927SAndroid Build Coastguard Worker       DRI_CONF_ALWAYS_HAVE_DEPTH_BUFFER(true)
73*61046927SAndroid Build Coastguard Worker    };
74*61046927SAndroid Build Coastguard Worker    driParseOptionInfo(&options, driconf, ARRAY_SIZE(driconf));
75*61046927SAndroid Build Coastguard Worker 
76*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driQueryOptionb(&options, "glsl_zero_init"), false);
77*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driQueryOptionb(&options, "always_have_depth_buffer"), true);
78*61046927SAndroid Build Coastguard Worker }
79*61046927SAndroid Build Coastguard Worker 
TEST_F(xmlconfig_test,ints)80*61046927SAndroid Build Coastguard Worker TEST_F(xmlconfig_test, ints)
81*61046927SAndroid Build Coastguard Worker {
82*61046927SAndroid Build Coastguard Worker    driOptionDescription driconf[] = {
83*61046927SAndroid Build Coastguard Worker       DRI_CONF_SECTION_MISCELLANEOUS
84*61046927SAndroid Build Coastguard Worker       DRI_CONF_OPT_I(opt, 2, 0, 999, "option")
85*61046927SAndroid Build Coastguard Worker    };
86*61046927SAndroid Build Coastguard Worker    driParseOptionInfo(&options, driconf, ARRAY_SIZE(driconf));
87*61046927SAndroid Build Coastguard Worker 
88*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driQueryOptioni(&options, "opt"), 2);
89*61046927SAndroid Build Coastguard Worker }
90*61046927SAndroid Build Coastguard Worker 
TEST_F(xmlconfig_test,floats)91*61046927SAndroid Build Coastguard Worker TEST_F(xmlconfig_test, floats)
92*61046927SAndroid Build Coastguard Worker {
93*61046927SAndroid Build Coastguard Worker    driOptionDescription driconf[] = {
94*61046927SAndroid Build Coastguard Worker       DRI_CONF_SECTION_MISCELLANEOUS
95*61046927SAndroid Build Coastguard Worker       DRI_CONF_OPT_F(opt, 2.0, 1.0, 2.0, "option")
96*61046927SAndroid Build Coastguard Worker    };
97*61046927SAndroid Build Coastguard Worker    driParseOptionInfo(&options, driconf, ARRAY_SIZE(driconf));
98*61046927SAndroid Build Coastguard Worker 
99*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driQueryOptionf(&options, "opt"), 2.0);
100*61046927SAndroid Build Coastguard Worker }
101*61046927SAndroid Build Coastguard Worker 
TEST_F(xmlconfig_test,enums)102*61046927SAndroid Build Coastguard Worker TEST_F(xmlconfig_test, enums)
103*61046927SAndroid Build Coastguard Worker {
104*61046927SAndroid Build Coastguard Worker    driOptionDescription driconf[] = {
105*61046927SAndroid Build Coastguard Worker       DRI_CONF_SECTION_MISCELLANEOUS
106*61046927SAndroid Build Coastguard Worker       DRI_CONF_VBLANK_MODE(DRI_CONF_VBLANK_DEF_INTERVAL_1)
107*61046927SAndroid Build Coastguard Worker    };
108*61046927SAndroid Build Coastguard Worker    driParseOptionInfo(&options, driconf, ARRAY_SIZE(driconf));
109*61046927SAndroid Build Coastguard Worker 
110*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driQueryOptioni(&options, "vblank_mode"), DRI_CONF_VBLANK_DEF_INTERVAL_1);
111*61046927SAndroid Build Coastguard Worker }
112*61046927SAndroid Build Coastguard Worker 
TEST_F(xmlconfig_test,enums_from_env)113*61046927SAndroid Build Coastguard Worker TEST_F(xmlconfig_test, enums_from_env)
114*61046927SAndroid Build Coastguard Worker {
115*61046927SAndroid Build Coastguard Worker    driOptionDescription driconf[] = {
116*61046927SAndroid Build Coastguard Worker       DRI_CONF_SECTION_MISCELLANEOUS
117*61046927SAndroid Build Coastguard Worker       DRI_CONF_VBLANK_MODE(DRI_CONF_VBLANK_DEF_INTERVAL_1)
118*61046927SAndroid Build Coastguard Worker    };
119*61046927SAndroid Build Coastguard Worker 
120*61046927SAndroid Build Coastguard Worker    setenv("vblank_mode", "0", 1);
121*61046927SAndroid Build Coastguard Worker    driParseOptionInfo(&options, driconf, ARRAY_SIZE(driconf));
122*61046927SAndroid Build Coastguard Worker 
123*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(0, driQueryOptioni(&options, "vblank_mode"));
124*61046927SAndroid Build Coastguard Worker }
125*61046927SAndroid Build Coastguard Worker 
TEST_F(xmlconfig_test,string)126*61046927SAndroid Build Coastguard Worker TEST_F(xmlconfig_test, string)
127*61046927SAndroid Build Coastguard Worker {
128*61046927SAndroid Build Coastguard Worker    driOptionDescription driconf[] = {
129*61046927SAndroid Build Coastguard Worker       DRI_CONF_SECTION_MISCELLANEOUS
130*61046927SAndroid Build Coastguard Worker       DRI_CONF_OPT_S(opt, value, "option")
131*61046927SAndroid Build Coastguard Worker    };
132*61046927SAndroid Build Coastguard Worker    driParseOptionInfo(&options, driconf, ARRAY_SIZE(driconf));
133*61046927SAndroid Build Coastguard Worker 
134*61046927SAndroid Build Coastguard Worker    EXPECT_STREQ(driQueryOptionstr(&options, "opt"), "value");
135*61046927SAndroid Build Coastguard Worker }
136*61046927SAndroid Build Coastguard Worker 
TEST_F(xmlconfig_test,check_option)137*61046927SAndroid Build Coastguard Worker TEST_F(xmlconfig_test, check_option)
138*61046927SAndroid Build Coastguard Worker {
139*61046927SAndroid Build Coastguard Worker    driOptionDescription driconf[] = {
140*61046927SAndroid Build Coastguard Worker       DRI_CONF_SECTION_MISCELLANEOUS
141*61046927SAndroid Build Coastguard Worker       DRI_CONF_GLSL_ZERO_INIT(true)
142*61046927SAndroid Build Coastguard Worker       DRI_CONF_ALWAYS_HAVE_DEPTH_BUFFER(true)
143*61046927SAndroid Build Coastguard Worker    };
144*61046927SAndroid Build Coastguard Worker    driParseOptionInfo(&options, driconf, ARRAY_SIZE(driconf));
145*61046927SAndroid Build Coastguard Worker 
146*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driCheckOption(&options, "glsl_zero_init", DRI_BOOL), true);
147*61046927SAndroid Build Coastguard Worker 
148*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driCheckOption(&options, "glsl_zero_init", DRI_ENUM), false);
149*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driCheckOption(&options, "glsl_zero_init", DRI_INT), false);
150*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driCheckOption(&options, "glsl_zero_init", DRI_FLOAT), false);
151*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driCheckOption(&options, "glsl_zero_init", DRI_STRING), false);
152*61046927SAndroid Build Coastguard Worker 
153*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driCheckOption(&options, "not_present", DRI_BOOL), false);
154*61046927SAndroid Build Coastguard Worker }
155*61046927SAndroid Build Coastguard Worker 
TEST_F(xmlconfig_test,copy_cache)156*61046927SAndroid Build Coastguard Worker TEST_F(xmlconfig_test, copy_cache)
157*61046927SAndroid Build Coastguard Worker {
158*61046927SAndroid Build Coastguard Worker    driOptionDescription driconf[] = {
159*61046927SAndroid Build Coastguard Worker       DRI_CONF_SECTION_MISCELLANEOUS
160*61046927SAndroid Build Coastguard Worker       DRI_CONF_OPT_B(mesa_b_option, true, "description")
161*61046927SAndroid Build Coastguard Worker       DRI_CONF_OPT_S(mesa_s_option, value, "description")
162*61046927SAndroid Build Coastguard Worker    };
163*61046927SAndroid Build Coastguard Worker    driParseOptionInfo(&options, driconf, ARRAY_SIZE(driconf));
164*61046927SAndroid Build Coastguard Worker 
165*61046927SAndroid Build Coastguard Worker    driOptionCache cache;
166*61046927SAndroid Build Coastguard Worker 
167*61046927SAndroid Build Coastguard Worker    /* This tries to parse user config files.  We've called our option
168*61046927SAndroid Build Coastguard Worker     * "mesa_test_option" so the test shouldn't end up with something from the
169*61046927SAndroid Build Coastguard Worker     * user's homedir/environment that would override us.
170*61046927SAndroid Build Coastguard Worker     */
171*61046927SAndroid Build Coastguard Worker    driParseConfigFiles(&cache, &options,
172*61046927SAndroid Build Coastguard Worker                        0, "driver", "drm", NULL,
173*61046927SAndroid Build Coastguard Worker                        NULL, 0,
174*61046927SAndroid Build Coastguard Worker                        NULL, 0);
175*61046927SAndroid Build Coastguard Worker 
176*61046927SAndroid Build Coastguard Worker    /* Can we inspect the cache? */
177*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driCheckOption(&cache, "mesa_b_option", DRI_BOOL), true);
178*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driCheckOption(&cache, "mesa_s_option", DRI_STRING), true);
179*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driCheckOption(&cache, "mesa_test_unknown_option", DRI_BOOL), false);
180*61046927SAndroid Build Coastguard Worker 
181*61046927SAndroid Build Coastguard Worker    /* Did the value get copied? */
182*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driQueryOptionb(&cache, "mesa_b_option"), true);
183*61046927SAndroid Build Coastguard Worker    EXPECT_STREQ(driQueryOptionstr(&cache, "mesa_s_option"), "value");
184*61046927SAndroid Build Coastguard Worker 
185*61046927SAndroid Build Coastguard Worker    driDestroyOptionCache(&cache);
186*61046927SAndroid Build Coastguard Worker }
187*61046927SAndroid Build Coastguard Worker 
188*61046927SAndroid Build Coastguard Worker driOptionCache
drirc_init(const char * driver,const char * drm,const char * exec_name,const char * app,int appver,const char * engine,int enginever)189*61046927SAndroid Build Coastguard Worker xmlconfig_test::drirc_init(const char *driver, const char *drm,
190*61046927SAndroid Build Coastguard Worker                            const char *exec_name,
191*61046927SAndroid Build Coastguard Worker                            const char *app, int appver,
192*61046927SAndroid Build Coastguard Worker                            const char *engine, int enginever)
193*61046927SAndroid Build Coastguard Worker {
194*61046927SAndroid Build Coastguard Worker    driInjectExecName(exec_name);
195*61046927SAndroid Build Coastguard Worker 
196*61046927SAndroid Build Coastguard Worker    driOptionDescription driconf[] = {
197*61046927SAndroid Build Coastguard Worker       DRI_CONF_SECTION_MISCELLANEOUS
198*61046927SAndroid Build Coastguard Worker       DRI_CONF_OPT_I(mesa_drirc_option, 0, 0, 200, "description")
199*61046927SAndroid Build Coastguard Worker    };
200*61046927SAndroid Build Coastguard Worker    driParseOptionInfo(&options, driconf, ARRAY_SIZE(driconf));
201*61046927SAndroid Build Coastguard Worker 
202*61046927SAndroid Build Coastguard Worker    driOptionCache cache;
203*61046927SAndroid Build Coastguard Worker 
204*61046927SAndroid Build Coastguard Worker    /* This should parse the "user" drirc files under ./tests/drirc_test/,
205*61046927SAndroid Build Coastguard Worker     * based on the setting of $HOME by meson.build.
206*61046927SAndroid Build Coastguard Worker     */
207*61046927SAndroid Build Coastguard Worker    driParseConfigFiles(&cache, &options,
208*61046927SAndroid Build Coastguard Worker                        0, driver, drm, NULL,
209*61046927SAndroid Build Coastguard Worker                        app, appver,
210*61046927SAndroid Build Coastguard Worker                        engine, enginever);
211*61046927SAndroid Build Coastguard Worker 
212*61046927SAndroid Build Coastguard Worker    return cache;
213*61046927SAndroid Build Coastguard Worker }
214*61046927SAndroid Build Coastguard Worker 
TEST_F(xmlconfig_test,drirc_app)215*61046927SAndroid Build Coastguard Worker TEST_F(xmlconfig_test, drirc_app)
216*61046927SAndroid Build Coastguard Worker {
217*61046927SAndroid Build Coastguard Worker    driOptionCache cache = drirc_init("driver", "drm",
218*61046927SAndroid Build Coastguard Worker                                      "app1",
219*61046927SAndroid Build Coastguard Worker                                      NULL, 0,
220*61046927SAndroid Build Coastguard Worker                                      NULL, 0);
221*61046927SAndroid Build Coastguard Worker #if WITH_XMLCONFIG
222*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driQueryOptioni(&cache, "mesa_drirc_option"), 1);
223*61046927SAndroid Build Coastguard Worker #else
224*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driQueryOptioni(&cache, "mesa_drirc_option"), 0);
225*61046927SAndroid Build Coastguard Worker #endif
226*61046927SAndroid Build Coastguard Worker    driDestroyOptionCache(&cache);
227*61046927SAndroid Build Coastguard Worker }
228*61046927SAndroid Build Coastguard Worker 
TEST_F(xmlconfig_test,drirc_user_app)229*61046927SAndroid Build Coastguard Worker TEST_F(xmlconfig_test, drirc_user_app)
230*61046927SAndroid Build Coastguard Worker {
231*61046927SAndroid Build Coastguard Worker    driOptionCache cache = drirc_init("driver", "drm",
232*61046927SAndroid Build Coastguard Worker                                      "app3",
233*61046927SAndroid Build Coastguard Worker                                      NULL, 0,
234*61046927SAndroid Build Coastguard Worker                                      NULL, 0);
235*61046927SAndroid Build Coastguard Worker #if WITH_XMLCONFIG
236*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driQueryOptioni(&cache, "mesa_drirc_option"), 10);
237*61046927SAndroid Build Coastguard Worker #else
238*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driQueryOptioni(&cache, "mesa_drirc_option"), 0);
239*61046927SAndroid Build Coastguard Worker #endif
240*61046927SAndroid Build Coastguard Worker    driDestroyOptionCache(&cache);
241*61046927SAndroid Build Coastguard Worker }
242*61046927SAndroid Build Coastguard Worker 
TEST_F(xmlconfig_test,drirc_env_override)243*61046927SAndroid Build Coastguard Worker TEST_F(xmlconfig_test, drirc_env_override)
244*61046927SAndroid Build Coastguard Worker {
245*61046927SAndroid Build Coastguard Worker    setenv("mesa_drirc_option", "7", 1);
246*61046927SAndroid Build Coastguard Worker    driOptionCache cache = drirc_init("driver", "drm",
247*61046927SAndroid Build Coastguard Worker                                      "app1",
248*61046927SAndroid Build Coastguard Worker                                      NULL, 0,
249*61046927SAndroid Build Coastguard Worker                                      NULL, 0);
250*61046927SAndroid Build Coastguard Worker    /* env var takes precedence over config files */
251*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driQueryOptioni(&cache, "mesa_drirc_option"), 7);
252*61046927SAndroid Build Coastguard Worker    unsetenv("mesa_drirc_option");
253*61046927SAndroid Build Coastguard Worker    driDestroyOptionCache(&cache);
254*61046927SAndroid Build Coastguard Worker }
255*61046927SAndroid Build Coastguard Worker 
256*61046927SAndroid Build Coastguard Worker #if WITH_XMLCONFIG
TEST_F(xmlconfig_test,drirc_app_versioned)257*61046927SAndroid Build Coastguard Worker TEST_F(xmlconfig_test, drirc_app_versioned)
258*61046927SAndroid Build Coastguard Worker {
259*61046927SAndroid Build Coastguard Worker    driOptionCache cache = drirc_init("driver", "drm",
260*61046927SAndroid Build Coastguard Worker                                      NULL,
261*61046927SAndroid Build Coastguard Worker                                      "Versioned App Name", 1,
262*61046927SAndroid Build Coastguard Worker                                      NULL, 0);
263*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driQueryOptioni(&cache, "mesa_drirc_option"), 3);
264*61046927SAndroid Build Coastguard Worker    driDestroyOptionCache(&cache);
265*61046927SAndroid Build Coastguard Worker }
266*61046927SAndroid Build Coastguard Worker 
TEST_F(xmlconfig_test,drirc_engine_versioned)267*61046927SAndroid Build Coastguard Worker TEST_F(xmlconfig_test, drirc_engine_versioned)
268*61046927SAndroid Build Coastguard Worker {
269*61046927SAndroid Build Coastguard Worker    driOptionCache cache = drirc_init("driver", "drm",
270*61046927SAndroid Build Coastguard Worker                                      NULL,
271*61046927SAndroid Build Coastguard Worker                                      "unknownapp", 0,
272*61046927SAndroid Build Coastguard Worker                                      "Versioned Engine Name", 1);
273*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driQueryOptioni(&cache, "mesa_drirc_option"), 5);
274*61046927SAndroid Build Coastguard Worker    driDestroyOptionCache(&cache);
275*61046927SAndroid Build Coastguard Worker }
276*61046927SAndroid Build Coastguard Worker 
TEST_F(xmlconfig_test,drirc_exec_regexp)277*61046927SAndroid Build Coastguard Worker TEST_F(xmlconfig_test, drirc_exec_regexp)
278*61046927SAndroid Build Coastguard Worker {
279*61046927SAndroid Build Coastguard Worker    driOptionCache cache = drirc_init("driver", "drm",
280*61046927SAndroid Build Coastguard Worker                                      "app2v4",
281*61046927SAndroid Build Coastguard Worker                                      NULL, 0,
282*61046927SAndroid Build Coastguard Worker                                      NULL, 0);
283*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driQueryOptioni(&cache, "mesa_drirc_option"), 7);
284*61046927SAndroid Build Coastguard Worker    driDestroyOptionCache(&cache);
285*61046927SAndroid Build Coastguard Worker }
286*61046927SAndroid Build Coastguard Worker 
TEST_F(xmlconfig_test,drirc_exec_override)287*61046927SAndroid Build Coastguard Worker TEST_F(xmlconfig_test, drirc_exec_override)
288*61046927SAndroid Build Coastguard Worker {
289*61046927SAndroid Build Coastguard Worker    putenv("MESA_DRICONF_EXECUTABLE_OVERRIDE=app1");
290*61046927SAndroid Build Coastguard Worker    driOptionCache cache = drirc_init("driver", "drm",
291*61046927SAndroid Build Coastguard Worker                                      NULL,
292*61046927SAndroid Build Coastguard Worker                                      NULL, 0,
293*61046927SAndroid Build Coastguard Worker                                      NULL, 0);
294*61046927SAndroid Build Coastguard Worker    EXPECT_EQ(driQueryOptioni(&cache, "mesa_drirc_option"), 1);
295*61046927SAndroid Build Coastguard Worker    driDestroyOptionCache(&cache);
296*61046927SAndroid Build Coastguard Worker }
297*61046927SAndroid Build Coastguard Worker #endif
298