You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
234 lines
3.5 KiB
234 lines
3.5 KiB
// Semantic patch for common patterns and their replacement by igt
|
|
// infrastructure and macros. Please run with
|
|
//
|
|
// spatch --sp-file lib/igt.cocci --in-place tests/*.c
|
|
//
|
|
// on your new testcase.
|
|
|
|
|
|
// Replace open-coded augmented igt_assert/skip/require with macro versions
|
|
@@
|
|
expression Ec;
|
|
expression list[n] Ep;
|
|
@@
|
|
- if (Ec) {
|
|
(
|
|
- igt_warn( Ep );
|
|
|
|
|
- igt_info( Ep );
|
|
|
|
|
- igt_debug( Ep );
|
|
)
|
|
- igt_fail(...);
|
|
- }
|
|
+ igt_fail_on_f(Ec, Ep);
|
|
@@
|
|
expression Ec;
|
|
@@
|
|
- if (Ec) {
|
|
- igt_fail(...);
|
|
- }
|
|
+ igt_fail_on(Ec);
|
|
@@
|
|
expression Ec;
|
|
expression list[n] Ep;
|
|
@@
|
|
- if (Ec) {
|
|
- igt_skip(Ep);
|
|
- }
|
|
+ igt_skip_on_f(Ec, Ep);
|
|
@@
|
|
expression Ec;
|
|
expression list[n] Ep;
|
|
@@
|
|
- if (Ec) {
|
|
- igt_warn(Ep);
|
|
- }
|
|
+ igt_warn_on_f(Ec, Ep);
|
|
|
|
// Enforce use of logging functions
|
|
@@
|
|
expression list[n] Ep;
|
|
@@
|
|
-fprintf(stderr, Ep);
|
|
+igt_warn(Ep);
|
|
@@
|
|
expression E;
|
|
@@
|
|
-perror(E);
|
|
+igt_warn(E);
|
|
@@
|
|
expression list[n] Ep;
|
|
@@
|
|
-fprintf(stdout, Ep);
|
|
+igt_info(Ep);
|
|
@@
|
|
expression list[n] Ep;
|
|
@@
|
|
-printf(Ep);
|
|
+igt_info(Ep);
|
|
|
|
// No abort for tests, really. Should only be used for internal library checks
|
|
// in lib/*
|
|
@@
|
|
@@
|
|
-abort();
|
|
+igt_fail(IGT_EXIT_FAILURE);
|
|
|
|
@@
|
|
iterator name for_each_pipe;
|
|
igt_display_t *display;
|
|
expression pipe;
|
|
@@
|
|
- for (pipe = 0; pipe < igt_display_get_n_pipes(display); pipe++) {
|
|
+ for_each_pipe (display, pipe) {
|
|
...
|
|
}
|
|
|
|
// Tests really shouldn't use plain assert!
|
|
@@
|
|
expression E;
|
|
@@
|
|
- assert(E);
|
|
+ igt_assert(E);
|
|
|
|
// Replace open-coded igt_swap()
|
|
@@
|
|
type T;
|
|
T a, b, tmp;
|
|
@@
|
|
- tmp = a;
|
|
- a = b;
|
|
- b = tmp;
|
|
+ igt_swap(a, b);
|
|
|
|
// Replace open-coded min()
|
|
@@
|
|
expression a;
|
|
expression b;
|
|
@@
|
|
(
|
|
- ((a) < (b) ? (a) : (b))
|
|
+ min(a, b)
|
|
|
|
|
- ((a) <= (b) ? (a) : (b))
|
|
+ min(a, b)
|
|
)
|
|
|
|
// Replace open-coded max()
|
|
@@
|
|
expression a;
|
|
expression b;
|
|
@@
|
|
(
|
|
- ((a) > (b) ? (a) : (b))
|
|
+ max(a, b)
|
|
|
|
|
- ((a) >= (b) ? (a) : (b))
|
|
+ max(a, b)
|
|
)
|
|
|
|
// drm_open_any always returns a valid file descriptor
|
|
@@
|
|
expression a;
|
|
@@
|
|
a = drm_open_any();
|
|
(
|
|
- igt_assert(a >= 0);
|
|
|
|
|
- if (a < 0) {
|
|
- ...
|
|
- return ...;
|
|
- }
|
|
)
|
|
|
|
// Use comparison macros instead of raw igt_assert when possible
|
|
@@
|
|
typedef uint32_t;
|
|
uint32_t E1, E2;
|
|
int E3, E4;
|
|
@@
|
|
(
|
|
- igt_assert(E1 == E2);
|
|
+ igt_assert_eq_u32(E1, E2);
|
|
|
|
|
- igt_assert(E1 != E2);
|
|
+ igt_assert_neq_u32(E1, E2);
|
|
|
|
|
- igt_assert(E1 <= E2);
|
|
+ igt_assert_lte_u32(E1, E2);
|
|
|
|
|
- igt_assert(E1 < E2);
|
|
+ igt_assert_lt_u32(E1, E2);
|
|
|
|
|
- igt_assert(E1 >= E2);
|
|
+ igt_assert_lte_u32(E2, E1);
|
|
|
|
|
- igt_assert(E1 > E2);
|
|
+ igt_assert_lt_u32(E2, E1);
|
|
|
|
|
- igt_assert(E3 == E4);
|
|
+ igt_assert_eq(E3, E4);
|
|
|
|
|
- igt_assert(E3 != E4);
|
|
+ igt_assert_neq(E3, E4);
|
|
|
|
|
- igt_assert(E3 <= E4);
|
|
+ igt_assert_lte(E3, E4);
|
|
|
|
|
- igt_assert(E3 < E4);
|
|
+ igt_assert_lt(E3, E4);
|
|
|
|
|
- igt_assert(E3 >= E4);
|
|
+ igt_assert_lte(E4, E3);
|
|
|
|
|
- igt_assert(E3 > E4);
|
|
+ igt_assert_lt(E4, E3);
|
|
)
|
|
|
|
// avoid unused-result warnings when compiling with _FORTIFY_SOURCE defined
|
|
@@
|
|
identifier func =~ "^(read|write)$";
|
|
expression list[2] E;
|
|
expression size;
|
|
@@
|
|
-func(E, size);
|
|
+igt_assert_eq(func(E, size), size);
|
|
|
|
@@
|
|
expression ptr, size, nmemb, stream;
|
|
@@
|
|
-fread(ptr, size, nmemb, stream);
|
|
+igt_assert_eq(fread(ptr, size, nmemb, stream), nmemb);
|
|
|
|
@@
|
|
expression list E;
|
|
@@
|
|
-fgets(E);
|
|
+igt_assert(fgets(E) != NULL);
|
|
|
|
@@
|
|
identifier func =~ "^v?asprintf$";
|
|
expression list E;
|
|
@@
|
|
-func(E);
|
|
+igt_assert_neq(func(E), -1);
|
|
|
|
// replace open-coded do_ioctl
|
|
@@
|
|
expression a, b, c, e;
|
|
@@
|
|
(
|
|
-do_or_die(drmIoctl(a, b, c));
|
|
+do_ioctl(a, b, c);
|
|
|
|
|
-igt_assert(drmIoctl(a, b, c) == 0);
|
|
+do_ioctl(a, b, c);
|
|
|
|
|
-igt_assert(drmIoctl(a, b, c) == -1 && errno == e);
|
|
+do_ioctl_err(a, b, c, e);
|
|
|
|
|
-igt_assert(drmIoctl(a, b, c) < 0 && errno == e);
|
|
+do_ioctl_err(a, b, c, e);
|
|
)
|