1 #include <ccan/err/err.c>
2 #include <ccan/tap/tap.h>
11 #define BUFFER_MAX 1024
13 int main(int argc, char *argv[])
20 err_set_progname(argv[0]);
22 /* In case it only prints out the basename of argv[0]. */
23 base = strrchr(argv[0], '/');
29 /* Test err() in child */
34 char buffer[BUFFER_MAX+1];
40 for (i = 0; i < BUFFER_MAX; i++) {
41 if (read(pfd[0], buffer + i, 1) == 0) {
43 ok1(strstr(buffer, "running err:"));
44 ok1(strstr(buffer, strerror(ENOENT)));
45 ok1(strstr(buffer, base));
46 ok1(buffer[i-1] == '\n');
51 ok1(wait(&status) != -1);
52 ok1(WIFEXITED(status));
53 ok1(WEXITSTATUS(status) == 17);
56 dup2(pfd[1], STDERR_FILENO);
58 err(17, "running %s", "err");
62 /* Test errx() in child */
67 char buffer[BUFFER_MAX+1];
73 for (i = 0; i < BUFFER_MAX; i++) {
74 if (read(pfd[0], buffer + i, 1) == 0) {
76 ok1(strstr(buffer, "running errx\n"));
77 ok1(strstr(buffer, base));
82 ok1(wait(&status) != -1);
83 ok1(WIFEXITED(status));
84 ok1(WEXITSTATUS(status) == 17);
87 dup2(pfd[1], STDERR_FILENO);
88 errx(17, "running %s", "errx");
93 /* Test warn() in child */
98 char buffer[BUFFER_MAX+1];
104 for (i = 0; i < BUFFER_MAX; i++) {
105 if (read(pfd[0], buffer + i, 1) == 0) {
107 ok1(strstr(buffer, "running warn:"));
108 ok1(strstr(buffer, strerror(ENOENT)));
109 ok1(strstr(buffer, base));
110 ok1(buffer[i-1] == '\n');
115 ok1(wait(&status) != -1);
116 ok1(WIFEXITED(status));
117 ok1(WEXITSTATUS(status) == 17);
120 dup2(pfd[1], STDERR_FILENO);
122 warn("running %s", "warn");
126 /* Test warnx() in child */
131 char buffer[BUFFER_MAX+1];
137 for (i = 0; i < BUFFER_MAX; i++) {
138 if (read(pfd[0], buffer + i, 1) == 0) {
140 ok1(strstr(buffer, "running warnx\n"));
141 ok1(strstr(buffer, base));
146 ok1(wait(&status) != -1);
147 ok1(WIFEXITED(status));
148 ok1(WEXITSTATUS(status) == 17);
151 dup2(pfd[1], STDERR_FILENO);
152 warnx("running %s", "warnx");
155 return exit_status();