e9b19f387367e64a5d615bbe5cd3de4aded5a7d9
[miniexpect.git] / tests.h
1 /* miniexpect test suite
2  * Copyright (C) 2014 Red Hat Inc.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18
19 #ifndef TESTS_H_
20 #define TESTS_H_
21
22 #include <stdio.h>
23 #include <sys/wait.h>
24
25 static inline int
26 test_is_sighup (int status)
27 {
28   return WIFSIGNALED (status) && WTERMSIG (status) == SIGHUP;
29 }
30
31 static inline void
32 test_diagnose (int status)
33 {
34   if (WIFEXITED (status))
35     fprintf (stderr, "exited with code %d", WEXITSTATUS (status));
36   else if (WIFSIGNALED (status))
37     fprintf (stderr, "terminated by signal %d", WTERMSIG (status));
38   else if (WIFSTOPPED (status))
39     fprintf (stderr, "stopped by signal %d", WSTOPSIG (status));
40 }
41
42 static pcre *
43 test_compile_re (const char *rex)
44 {
45   const char *errptr;
46   int erroffset;
47   pcre *ret;
48
49   ret = pcre_compile (rex, 0, &errptr, &erroffset, NULL);
50   if (ret == NULL) {
51     fprintf (stderr, "error: failed to compile regular expression '%s': %s at offset %d\n",
52              rex, errptr, erroffset);
53     exit (EXIT_FAILURE);
54   }
55   return ret;
56 }
57
58 #endif /* TESTS_H_ */