aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorLukas Fleischer <calcurse@cryptocrack.de>2013-04-13 23:31:06 +0200
committerLukas Fleischer <calcurse@cryptocrack.de>2013-04-14 00:19:01 +0200
commit694d28eb78dfad98e2e7ea670d93a153d8efd368 (patch)
tree485dc11d3644d9dadb5fd4d67c5ef8103be79623 /test
parent9907069f442c56c90b67accb2d8fbd046dfce6db (diff)
downloadcalcurse-694d28eb78dfad98e2e7ea670d93a153d8efd368.tar.gz
calcurse-694d28eb78dfad98e2e7ea670d93a153d8efd368.zip
Use tabs instead of spaces for indentation
This completes our switch to the Linux kernel coding style. Note that we still use deeply nested constructs at some places which need to be fixed up later. Converted using the `Lindent` script from the Linux kernel code base, along with some manual fixes. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
Diffstat (limited to 'test')
-rw-r--r--test/run-test.c301
1 files changed, 152 insertions, 149 deletions
diff --git a/test/run-test.c b/test/run-test.c
index 7084189..78fb7d1 100644
--- a/test/run-test.c
+++ b/test/run-test.c
@@ -52,181 +52,184 @@
static int
fork_exec(int *pfdin, int *pfdout, const char *path, char *const *arg)
{
- int pin[2], pout[2];
- int pid;
-
- if (pfdin && (pipe(pin) == -1))
- return 0;
- if (pfdout && (pipe(pout) == -1))
- return 0;
-
- if ((pid = fork()) == 0) {
- if (pfdout) {
- if (dup2(pout[0], STDIN_FILENO) < 0)
- _exit(127);
- close(pout[0]);
- close(pout[1]);
- }
-
- if (pfdin) {
- if (dup2(pin[1], STDOUT_FILENO) < 0)
- _exit(127);
- close(pin[0]);
- close(pin[1]);
- }
-
- execvp(path, arg);
- _exit(127);
- } else {
- if (pfdin)
- close(pin[1]);
- if (pfdout)
- close(pout[0]);
-
- if (pid > 0) {
- if (pfdin) {
- fcntl(pin[0], F_SETFD, FD_CLOEXEC);
- *pfdin = pin[0];
- }
- if (pfdout) {
- fcntl(pout[1], F_SETFD, FD_CLOEXEC);
- *pfdout = pout[1];
- }
- } else {
- if (pfdin)
- close(pin[0]);
- if (pfdout)
- close(pout[1]);
- return 0;
- }
- }
- return pid;
+ int pin[2], pout[2];
+ int pid;
+
+ if (pfdin && (pipe(pin) == -1))
+ return 0;
+ if (pfdout && (pipe(pout) == -1))
+ return 0;
+
+ if ((pid = fork()) == 0) {
+ if (pfdout) {
+ if (dup2(pout[0], STDIN_FILENO) < 0)
+ _exit(127);
+ close(pout[0]);
+ close(pout[1]);
+ }
+
+ if (pfdin) {
+ if (dup2(pin[1], STDOUT_FILENO) < 0)
+ _exit(127);
+ close(pin[0]);
+ close(pin[1]);
+ }
+
+ execvp(path, arg);
+ _exit(127);
+ } else {
+ if (pfdin)
+ close(pin[1]);
+ if (pfdout)
+ close(pout[0]);
+
+ if (pid > 0) {
+ if (pfdin) {
+ fcntl(pin[0], F_SETFD, FD_CLOEXEC);
+ *pfdin = pin[0];
+ }
+ if (pfdout) {
+ fcntl(pout[1], F_SETFD, FD_CLOEXEC);
+ *pfdout = pout[1];
+ }
+ } else {
+ if (pfdin)
+ close(pin[0]);
+ if (pfdout)
+ close(pout[1]);
+ return 0;
+ }
+ }
+ return pid;
}
/* Wait for a child process to terminate. */
static int child_wait(int *pfdin, int *pfdout, int pid)
{
- int stat;
+ int stat;
- if (pfdin)
- close(*pfdin);
- if (pfdout)
- close(*pfdout);
+ if (pfdin)
+ close(*pfdin);
+ if (pfdout)
+ close(*pfdout);
- waitpid(pid, &stat, 0);
- return stat;
+ waitpid(pid, &stat, 0);
+ return stat;
}
/* Print error message and bail out. */
static void die(const char *format, ...)
{
- va_list arg;
+ va_list arg;
- va_start(arg, format);
- fprintf(stderr, "error: ");
- vfprintf(stderr, format, arg);
- va_end(arg);
+ va_start(arg, format);
+ fprintf(stderr, "error: ");
+ vfprintf(stderr, format, arg);
+ va_end(arg);
- exit(1);
+ exit(1);
}
/* Print usage message. */
static void usage(void)
{
- printf("usage: run-test [-h|--help] <test>...\n");
+ printf("usage: run-test [-h|--help] <test>...\n");
}
/* Run test with a specific name. */
static int run_test(const char *name, int expect_failure)
{
- char filename[BUFSIZ];
- char *arg1[3], *arg2[3];
- int pid1 = -1, pin1, pid2 = -1, pin2;
- FILE *fpin1 = NULL, *fpin2 = NULL;
- char buf1[BUFSIZ], buf2[BUFSIZ];
- int ret = 1;
-
- if (snprintf(filename, BUFSIZ, "./%s", name) >= BUFSIZ)
- die("file name too long\n");
-
- if (access(filename, F_OK) != 0) {
- if (snprintf(filename, BUFSIZ, "./%s.sh", name) >= BUFSIZ)
- die("file name too long\n");
-
- if (access(filename, F_OK) != 0)
- die("test not found: %s\n", name);
- }
-
- if (access(filename, X_OK) != 0)
- die("script is not executable: %s\n", filename);
-
- arg1[0] = arg2[0] = filename;
- arg1[1] = "expected";
- arg2[1] = "actual";
- arg1[2] = arg2[2] = NULL;
-
- printf("Running %s...", name);
-
- if ((pid1 = fork_exec(&pin1, NULL, *arg1, arg1)) < 0)
- die("failed to execute %s: %s\n", filename, strerror(errno));
-
- if ((pid2 = fork_exec(&pin2, NULL, *arg2, arg2)) < 0)
- die("failed to execute %s: %s\n", filename, strerror(errno));
-
- fpin1 = fdopen(pin1, "r");
- fpin2 = fdopen(pin2, "r");
-
- while (fgets(buf1, BUFSIZ, fpin1)) {
- if (!fgets(buf2, BUFSIZ, fpin2) || strcmp(buf1, buf2) != 0) {
- ret = 0;
- break;
- }
- }
-
- if (fgets(buf2, BUFSIZ, fpin2))
- ret = 0;
-
- if (fpin1)
- fclose(fpin1);
- if (fpin2)
- fclose(fpin2);
-
- if (child_wait(&pin1, NULL, pid1) != 0)
- ret = 0;
- if (child_wait(&pin2, NULL, pid2) != 0)
- ret = 0;
-
- if (expect_failure)
- ret = 1 - ret;
-
- if (ret == 1)
- printf(" ok\n");
- else
- printf(" FAIL\n");
-
- return ret;
+ char filename[BUFSIZ];
+ char *arg1[3], *arg2[3];
+ int pid1 = -1, pin1, pid2 = -1, pin2;
+ FILE *fpin1 = NULL, *fpin2 = NULL;
+ char buf1[BUFSIZ], buf2[BUFSIZ];
+ int ret = 1;
+
+ if (snprintf(filename, BUFSIZ, "./%s", name) >= BUFSIZ)
+ die("file name too long\n");
+
+ if (access(filename, F_OK) != 0) {
+ if (snprintf(filename, BUFSIZ, "./%s.sh", name) >= BUFSIZ)
+ die("file name too long\n");
+
+ if (access(filename, F_OK) != 0)
+ die("test not found: %s\n", name);
+ }
+
+ if (access(filename, X_OK) != 0)
+ die("script is not executable: %s\n", filename);
+
+ arg1[0] = arg2[0] = filename;
+ arg1[1] = "expected";
+ arg2[1] = "actual";
+ arg1[2] = arg2[2] = NULL;
+
+ printf("Running %s...", name);
+
+ if ((pid1 = fork_exec(&pin1, NULL, *arg1, arg1)) < 0)
+ die("failed to execute %s: %s\n", filename,
+ strerror(errno));
+
+ if ((pid2 = fork_exec(&pin2, NULL, *arg2, arg2)) < 0)
+ die("failed to execute %s: %s\n", filename,
+ strerror(errno));
+
+ fpin1 = fdopen(pin1, "r");
+ fpin2 = fdopen(pin2, "r");
+
+ while (fgets(buf1, BUFSIZ, fpin1)) {
+ if (!fgets(buf2, BUFSIZ, fpin2) || strcmp(buf1, buf2) != 0) {
+ ret = 0;
+ break;
+ }
+ }
+
+ if (fgets(buf2, BUFSIZ, fpin2))
+ ret = 0;
+
+ if (fpin1)
+ fclose(fpin1);
+ if (fpin2)
+ fclose(fpin2);
+
+ if (child_wait(&pin1, NULL, pid1) != 0)
+ ret = 0;
+ if (child_wait(&pin2, NULL, pid2) != 0)
+ ret = 0;
+
+ if (expect_failure)
+ ret = 1 - ret;
+
+ if (ret == 1)
+ printf(" ok\n");
+ else
+ printf(" FAIL\n");
+
+ return ret;
}
int main(int argc, char **argv)
{
- int i;
-
- if (!argv[1])
- die("no tests specified, bailing out\n");
- else if (strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "--help") == 0) {
- usage();
- return 0;
- }
-
- for (i = 1; i < argc; i++) {
- if (*argv[i] == '!') {
- if (!run_test(argv[i] + 1, 1))
- return 1;
- } else {
- if (!run_test(argv[i], 0))
- return 1;
- }
- }
-
- return 0;
+ int i;
+
+ if (!argv[1])
+ die("no tests specified, bailing out\n");
+ else if (strcmp(argv[1], "-h") == 0
+ || strcmp(argv[1], "--help") == 0) {
+ usage();
+ return 0;
+ }
+
+ for (i = 1; i < argc; i++) {
+ if (*argv[i] == '!') {
+ if (!run_test(argv[i] + 1, 1))
+ return 1;
+ } else {
+ if (!run_test(argv[i], 0))
+ return 1;
+ }
+ }
+
+ return 0;
}