diff --git a/lightningd/test/run-param.c b/lightningd/test/run-param.c index e0b8696af..e78916477 100644 --- a/lightningd/test/run-param.c +++ b/lightningd/test/run-param.c @@ -10,13 +10,17 @@ #include #include -char *fail_msg; +char *fail_msg = NULL; bool failed = false; static bool check_fail(void) { if (!failed) return false; failed = false; + if (taken(fail_msg)) { + tal_free(fail_msg); + fail_msg = NULL; + } return true; } @@ -248,115 +252,61 @@ static void null_params(void) } #if DEVELOPER -#if 0 -jmp_buf jump; -static void handle_abort(int sig) -{ - longjmp(jump, 1); -} - -static int set_assert(void) -{ - struct sigaction act; - int old_stderr; - memset(&act, '\0', sizeof(act)); - act.sa_handler = &handle_abort; - if (sigaction(SIGABRT, &act, NULL) < 0) - err(1, "set_assert"); - - /* Don't spam with assert messages. */ - old_stderr = dup(STDERR_FILENO); - close(STDERR_FILENO); - return old_stderr; -} - -static void restore_assert(int old_stderr) -{ - struct sigaction act; - - dup2(old_stderr, STDERR_FILENO); - close(old_stderr); - memset(&act, '\0', sizeof(act)); - act.sa_handler = SIG_DFL; - if (sigaction(SIGABRT, &act, NULL) < 0) - err(1, "restore_assert"); - -} -#endif - /* * Check to make sure there are no programming mistakes. */ static void bad_programmer(void) { -#if 0 u64 ival; u64 ival2; double dval; struct json *j = json_parse(cmd, "[ '25', '546', '26' ]"); - int old_stderr = set_assert(); /* check for repeated names */ - if (setjmp(jump) == 0) { - param(cmd, j->buffer, j->toks, + assert(!param(cmd, j->buffer, j->toks, p_req("repeat", json_tok_u64, &ival), p_req("double", json_tok_double, &dval), - p_req("repeat", json_tok_u64, &ival2), NULL); - /* shouldn't get here */ - restore_assert(old_stderr); - assert(false); - } + p_req("repeat", json_tok_u64, &ival2), NULL)); + assert(check_fail()); + assert(strstr(fail_msg, "programmer error")); - if (setjmp(jump) == 0) { - param(cmd, j->buffer, j->toks, + assert(!param(cmd, j->buffer, j->toks, p_req("repeat", json_tok_u64, &ival), p_req("double", json_tok_double, &dval), - p_req("repeat", json_tok_u64, &ival), NULL); - restore_assert(old_stderr); - assert(false); - } + p_req("repeat", json_tok_u64, &ival), NULL)); + assert(check_fail()); + assert(strstr(fail_msg, "programmer error")); - if (setjmp(jump) == 0) { - param(cmd, j->buffer, j->toks, + assert(!param(cmd, j->buffer, j->toks, p_req("u64", json_tok_u64, &ival), p_req("repeat", json_tok_double, &dval), - p_req("repeat", json_tok_double, &dval), NULL); - restore_assert(old_stderr); - assert(false); - } + p_req("repeat", json_tok_double, &dval), NULL)); + assert(check_fail()); + assert(strstr(fail_msg, "programmer error")); /* check for repeated arguments */ - if (setjmp(jump) == 0) { - param(cmd, j->buffer, j->toks, + assert(!param(cmd, j->buffer, j->toks, p_req("u64", json_tok_u64, &ival), - p_req("repeated-arg", json_tok_u64, &ival), NULL); - restore_assert(old_stderr); - assert(false); - } + p_req("repeated-arg", json_tok_u64, &ival), NULL)); + assert(check_fail()); + assert(strstr(fail_msg, "programmer error")); - if (setjmp(jump) == 0) { - param(cmd, j->buffer, j->toks, - p_req("u64", (param_cb) NULL, &ival), NULL); - restore_assert(old_stderr); - assert(false); - } - - if (setjmp(jump) == 0) { - /* Add required param after optional */ - struct json *j = - json_parse(cmd, "[ '25', '546', '26', '1.1' ]"); - unsigned int msatoshi; - double riskfactor; - param(cmd, j->buffer, j->toks, + assert(!param(cmd, j->buffer, j->toks, + p_req("u64", (param_cb) NULL, &ival), NULL)); + assert(check_fail()); + assert(strstr(fail_msg, "programmer error")); + + /* Add required param after optional */ + j = json_parse(cmd, "[ '25', '546', '26', '1.1' ]"); + unsigned int msatoshi; + double riskfactor; + assert(!param(cmd, j->buffer, j->toks, p_req("u64", json_tok_u64, &ival), p_req("double", json_tok_double, &dval), p_opt_def("msatoshi", json_tok_number, &msatoshi, 100), - p_req("riskfactor", json_tok_double, &riskfactor), NULL); - restore_assert(old_stderr); - assert(false); - } - restore_assert(old_stderr); -#endif + p_req("riskfactor", json_tok_double, &riskfactor), NULL)); + assert(check_fail()); + assert(strstr(fail_msg, "programmer error")); } #endif