exit with correct status In particular, returning !build && !test means that we return 1 if both steps succeed and 0 otherwise, which is definitely wrong.
1 files changed, 1 insertions(+), 1 deletions(-) M build.c
M build.c => build.c +1 -1
@@ 247,7 247,7 @@ main(int argc, char *argv[], char *envp[]) { /* graph_print(&g, stdout); */ Buildconf bc; buildconf_init(&bc, argc, argv, envp); return !graph_build(&g, &bc) && !run_tests(&g, &bc); return graph_build(&g, &bc) || run_tests(&g, &bc); } /* Less interesting data structure manipulation and such down here: */