lib/drmtest: igt_skip when drm_get_card fails

Also add printf support to igt_skip to make sure there's always a
reason why we fail a testcase.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
Daniel Vetter 2013-08-19 11:09:25 +02:00
parent 9ad062d0b3
commit 8dbd1fb9d4
5 changed files with 22 additions and 21 deletions

View File

@ -181,23 +181,24 @@ int drm_get_card(void)
int ret; int ret;
ret = asprintf(&name, "/dev/dri/card%u", i); ret = asprintf(&name, "/dev/dri/card%u", i);
if (ret == -1) igt_assert(ret != -1);
return -1;
fd = open(name, O_RDWR); fd = open(name, O_RDWR);
free(name); free(name);
if (fd == -1) if (fd == -1)
continue; continue;
if (is_intel(fd)) { if (!is_intel(fd))
close(fd); continue;
break;
}
close(fd); close(fd);
}
return i; return i;
}
igt_skip("No intel gpu found\n");
return -1;
} }
/** Open the first DRM device we can find, searching up to 16 device nodes */ /** Open the first DRM device we can find, searching up to 16 device nodes */
@ -756,10 +757,17 @@ static void exit_subtest(const char *result)
longjmp(igt_subtest_jmpbuf, 1); longjmp(igt_subtest_jmpbuf, 1);
} }
void igt_skip(void) void igt_skip(const char *f, ...)
{ {
va_list args;
skipped_one = true; skipped_one = true;
if (!igt_only_list_subtests()) {
va_start(args, f);
vprintf(f, args);
va_end(args);
}
if (in_subtest) { if (in_subtest) {
exit_subtest("SKIP"); exit_subtest("SKIP");
} else if (test_with_subtests) { } else if (test_with_subtests) {
@ -774,12 +782,9 @@ void igt_skip(void)
void __igt_skip_check(const char *file, const int line, void __igt_skip_check(const char *file, const int line,
const char *func, const char *check) const char *func, const char *check)
{ {
if (!igt_only_list_subtests()) { igt_skip("Test requirement not met in function %s, file %s:%i:\n"
printf("Test requirement not met in function %s, file %s:%i:\n"
"Test requirement: (%s)\n", "Test requirement: (%s)\n",
func, file, line, check); func, file, line, check);
}
igt_skip();
} }
void igt_success(void) void igt_success(void)

View File

@ -132,7 +132,7 @@ const char *igt_subtest_name(void);
* *
* For normal tests without subtest it will directly exit. * For normal tests without subtest it will directly exit.
*/ */
void igt_skip(void); __attribute__((format(printf, 1, 2))) void igt_skip(const char *f, ...);
void __igt_skip_check(const char *file, const int line, void __igt_skip_check(const char *file, const int line,
const char *func, const char *check); const char *func, const char *check);
/** /**

View File

@ -51,9 +51,8 @@ int main(int argc, char *argv[])
ret = drmIoctl(fd, CONTEXT_CREATE_IOCTL, &create); ret = drmIoctl(fd, CONTEXT_CREATE_IOCTL, &create);
if (ret != 0 && (errno == ENODEV || errno == EINVAL)) { if (ret != 0 && (errno == ENODEV || errno == EINVAL)) {
printf("Kernel is too old, or contexts not supported: %s\n", igt_skip("Kernel is too old, or contexts not supported: %s\n",
strerror(errno)); strerror(errno));
igt_skip();
} else if (ret != 0) { } else if (ret != 0) {
fprintf(stderr, "%s\n", strerror(errno)); fprintf(stderr, "%s\n", strerror(errno));
igt_fail(1); igt_fail(1);

View File

@ -644,7 +644,6 @@ int main(int argc, char **argv)
parse_options(argc, argv); parse_options(argc, argv);
card_index = drm_get_card(); card_index = drm_get_card();
igt_assert(card_index != -1);
srandom(time(NULL)); srandom(time(NULL));

View File

@ -628,8 +628,6 @@ static void hang_gpu(struct test_output *o)
int fd; int fd;
ssize_t r; ssize_t r;
igt_assert(card_index != -1);
snprintf(fname, FILENAME_MAX, "%s/%i/%s", snprintf(fname, FILENAME_MAX, "%s/%i/%s",
dfs_base, card_index, dfs_entry); dfs_base, card_index, dfs_entry);