assert(wl_display_flush(display) >= 0);
}
-#define USEC_TO_NSEC(n) (1000 * (n))
-
-/* since we are using alarm() and SIGABRT, we can not
- * use usleep function (see 'man usleep') */
-static void
-test_usleep(useconds_t usec)
-{
- struct timespec ts = {
- .tv_sec = 0,
- .tv_nsec = USEC_TO_NSEC(usec)
- };
-
- assert(nanosleep(&ts, NULL) == 0);
-}
-
/* create thread that will call prepare+read so that
* it will block */
static pthread_t
#include <dirent.h>
#include <stdio.h>
#include <unistd.h>
+#include <time.h>
#include "test-runner.h"
execl(exe, exe, number, (char *)NULL);
assert(0 && "execing fd leak checker failed");
}
+
+#define USEC_TO_NSEC(n) (1000 * (n))
+
+/* our implementation of usleep and sleep functions that are safe to use with
+ * timeouts (timeouts are implemented using alarm(), so it is not safe use
+ * usleep and sleep. See man pages of these functions)
+ */
+void
+test_usleep(useconds_t usec)
+{
+ struct timespec ts = {
+ .tv_sec = 0,
+ .tv_nsec = USEC_TO_NSEC(usec)
+ };
+
+ assert(nanosleep(&ts, NULL) == 0);
+}
+
+/* we must write the whole function instead of
+ * wrapping test_usleep, because useconds_t may not
+ * be able to contain such a big number of microseconds */
+void
+test_sleep(unsigned int sec)
+{
+ struct timespec ts = {
+ .tv_sec = sec,
+ .tv_nsec = 0
+ };
+
+ assert(nanosleep(&ts, NULL) == 0);
+}
#error "Tests must not be built with NDEBUG defined, they rely on assert()."
#endif
+#include <unistd.h>
+
struct test {
const char *name;
void (*run)(void);
void
test_set_timeout(unsigned int);
+/* test-runner uses alarm() and SIGALRM, so we can not
+ * use usleep and sleep functions in tests (see 'man usleep'
+ * or 'man sleep', respectively). Following functions are safe
+ * to use in tests */
+void
+test_usleep(useconds_t);
+
+void
+test_sleep(unsigned int);
+
#endif