tests: Add env var to exclude tests.

Signed-off-by: Georg Lehmann <dadschoorse@gmail.com>
This commit is contained in:
Georg Lehmann 2021-04-14 19:10:04 +02:00 committed by Hans-Kristian Arntzen
parent 48536b2222
commit 2c3988e6df
2 changed files with 10 additions and 0 deletions

View File

@ -167,6 +167,8 @@ commas or semicolons.
- `VKD3D_TEST_FILTER` - a filter string. Only the tests whose names matches the
filter string will be run, e.g. `VKD3D_TEST_FILTER=clear_render_target`.
Useful for debugging or developing new tests.
- `VKD3D_TEST_EXCLUDE` - excludes tests of which the name is included in the string,
e.g. `VKD3D_TEST_EXCLUDE=test_root_signature_priority,test_conservative_rasterization_dxil`.
- `VKD3D_TEST_PLATFORM` - can be set to "wine", "windows" or "other". The test
platform controls the behavior of todo(), todo_if(), bug_if() and broken()
conditions in tests.

View File

@ -20,6 +20,7 @@
#define __VKD3D_TEST_H
#include "vkd3d_common.h"
#include "vkd3d_debug.h"
#include <assert.h>
#include <inttypes.h>
#include <stdarg.h>
@ -119,6 +120,7 @@ static struct
bool bug_enabled;
const char *test_name_filter;
const char *test_exclude_list;
char context[1024];
} vkd3d_test_state;
@ -266,6 +268,7 @@ vkd3d_test_debug(const char *fmt, ...)
int main(int argc, char **argv)
{
const char *exclude_list = getenv("VKD3D_TEST_EXCLUDE");
const char *test_filter = getenv("VKD3D_TEST_FILTER");
const char *debug_level = getenv("VKD3D_TEST_DEBUG");
char *test_platform = getenv("VKD3D_TEST_PLATFORM");
@ -275,6 +278,7 @@ int main(int argc, char **argv)
vkd3d_test_state.debug_level = debug_level ? atoi(debug_level) : 1;
vkd3d_test_state.bug_enabled = bug ? atoi(bug) : true;
vkd3d_test_state.test_name_filter = test_filter;
vkd3d_test_state.test_exclude_list = exclude_list;
if (test_platform)
{
@ -359,6 +363,10 @@ static inline void vkd3d_run_test(const char *name, vkd3d_test_pfn test_pfn)
if (vkd3d_test_state.test_name_filter && !strstr(name, vkd3d_test_state.test_name_filter))
return;
if (vkd3d_test_state.test_exclude_list
&& vkd3d_debug_list_has_member(vkd3d_test_state.test_exclude_list, name))
return;
vkd3d_test_debug("%s", name);
test_pfn();
}