test/run-params: suppress stderr for expected failures.

And use err() instead of perror/exit(0) (we should have exit(1) there anyway).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell
2018-07-04 11:16:52 +09:30
parent 6ff901d7b0
commit 32ccfa5b29

View File

@@ -7,6 +7,8 @@
#include <common/json.c>
#include <common/json_escaped.c>
#include <ccan/array_size/array_size.h>
#include <ccan/err/err.h>
#include <unistd.h>
bool failed;
char *fail_msg;
@@ -181,7 +183,7 @@ static void tok_tok(void)
}
/* check for valid but duplicate json name-value pairs */
static void dup(void)
static void dup_names(void)
{
struct json *j =
json_parse(cmd,
@@ -246,26 +248,32 @@ static void handle_abort(int sig)
longjmp(jump, 1);
}
static void set_assert(void)
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) {
perror("set_assert");
exit(0);
}
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(void)
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) {
perror("reset_assert");
exit(0);
}
if (sigaction(SIGABRT, &act, NULL) < 0)
err(1, "restore_assert");
}
/*
@@ -276,8 +284,8 @@ static void bad_programmer(void)
u64 ival;
u64 ival2;
double dval;
set_assert();
struct json *j = json_parse(cmd, "[ '25', '546', '26' ]");
int old_stderr = set_assert();
/* check for repeated names */
if (setjmp(jump) == 0) {
@@ -286,7 +294,7 @@ static void bad_programmer(void)
param_req("double", json_tok_double, &dval),
param_req("repeat", json_tok_u64, &ival2), NULL);
/* shouldn't get here */
restore_assert();
restore_assert(old_stderr);
assert(false);
}
@@ -295,7 +303,7 @@ static void bad_programmer(void)
param_req("repeat", json_tok_u64, &ival),
param_req("double", json_tok_double, &dval),
param_req("repeat", json_tok_u64, &ival), NULL);
restore_assert();
restore_assert(old_stderr);
assert(false);
}
@@ -304,7 +312,7 @@ static void bad_programmer(void)
param_req("u64", json_tok_u64, &ival),
param_req("repeat", json_tok_double, &dval),
param_req("repeat", json_tok_double, &dval), NULL);
restore_assert();
restore_assert(old_stderr);
assert(false);
}
@@ -314,14 +322,14 @@ static void bad_programmer(void)
param_req("u64", json_tok_u64, &ival),
param_req("repeated-arg", json_tok_u64, &ival),
NULL);
restore_assert();
restore_assert(old_stderr);
assert(false);
}
if (setjmp(jump) == 0) {
param_parse(cmd, j->buffer, j->toks,
param_req("u64", NULL, &ival), NULL);
restore_assert();
restore_assert(old_stderr);
assert(false);
}
@@ -338,10 +346,10 @@ static void bad_programmer(void)
json_tok_number, &msatoshi),
param_req("riskfactor", json_tok_double,
&riskfactor), NULL);
restore_assert();
restore_assert(old_stderr);
assert(false);
}
restore_assert();
restore_assert(old_stderr);
}
#endif
@@ -433,7 +441,7 @@ int main(void)
#if DEVELOPER
bad_programmer();
#endif
dup();
dup_names();
five_hundred_params();
sendpay();
tal_free(tmpctx);