1 #include <ccan/err/err.c>
2 #include <ccan/tap/tap.h>
11 #define BUFFER_MAX 1024
13 int main(int argc, char *argv[])
21 err_set_progname(argv[0]);
23 /* In case it only prints out the basename of argv[0]. */
24 base = strrchr(argv[0], '/');
30 /* Test err() in child */
35 char buffer[BUFFER_MAX+1];
41 for (i = 0; i < BUFFER_MAX; i++) {
42 if (read(pfd[0], buffer + i, 1) == 0) {
44 ok1(strstr(buffer, "running err:"));
45 ok1(strstr(buffer, strerror(ENOENT)));
46 ok1(strstr(buffer, base));
47 ok1(buffer[i-1] == '\n');
52 ok1(wait(&status) != -1);
53 ok1(WIFEXITED(status));
54 ok1(WEXITSTATUS(status) == 17);
57 dup2(pfd[1], STDERR_FILENO);
59 err(17, "running %s", "err");
63 /* Test errx() in child */
68 char buffer[BUFFER_MAX+1];
74 for (i = 0; i < BUFFER_MAX; i++) {
75 if (read(pfd[0], buffer + i, 1) == 0) {
77 ok1(strstr(buffer, "running errx\n"));
78 ok1(strstr(buffer, base));
83 ok1(wait(&status) != -1);
84 ok1(WIFEXITED(status));
85 ok1(WEXITSTATUS(status) == 17);
88 dup2(pfd[1], STDERR_FILENO);
89 errx(17, "running %s", "errx");
94 /* Test warn() in child */
99 char buffer[BUFFER_MAX+1];
105 for (i = 0; i < BUFFER_MAX; i++) {
106 if (read(pfd[0], buffer + i, 1) == 0) {
108 ok1(strstr(buffer, "running warn:"));
109 ok1(strstr(buffer, strerror(ENOENT)));
110 ok1(strstr(buffer, base));
111 ok1(buffer[i-1] == '\n');
116 ok1(wait(&status) != -1);
117 ok1(WIFEXITED(status));
118 ok1(WEXITSTATUS(status) == 17);
121 dup2(pfd[1], STDERR_FILENO);
123 warn("running %s", "warn");
127 /* Test warnx() in child */
132 char buffer[BUFFER_MAX+1];
138 for (i = 0; i < BUFFER_MAX; i++) {
139 if (read(pfd[0], buffer + i, 1) == 0) {
141 ok1(strstr(buffer, "running warnx\n"));
142 ok1(strstr(buffer, base));
147 ok1(wait(&status) != -1);
148 ok1(WIFEXITED(status));
149 ok1(WEXITSTATUS(status) == 17);
152 dup2(pfd[1], STDERR_FILENO);
153 warnx("running %s", "warnx");
156 return exit_status();