script_info
static const struct script_info *get_script_##name(void) \
static const struct script_info script_info = { \
return &script_info; \
static int run_script(const struct script_info *info)
typedef const struct script_info *(*info_func)(void);
SCRIPT_INFO *script_info = scripts[idx];
testresult = TERP_run(script_info, &cfg);
SCRIPT_INFO *script_info = NULL;
F_POP(script_info);
if (!TEST_ptr(script_info))
child_rt->child_script_info = script_info;
static int GEN_SCRIPT_init(GEN_SCRIPT *gen_script, SCRIPT_INFO *script_info)
if (!TEST_true(GEN_CTX_init(&gctx, script_info)))
script_info->gen_func(&gctx);
SCRIPT_INFO *script_info;
const SCRIPT_INFO *script_info)
if (script_info != NULL) {
script_info->name);
script_info->name);
script_info->file, script_info->line);
BIO_printf(bio, " # DESCRIPTION:\n # %s\n", script_info->desc);
static int GEN_CTX_init(GEN_CTX *ctx, SCRIPT_INFO *script_info)
if (script_info != NULL) {
static void SCRIPT_INFO_print(SCRIPT_INFO *script_info, BIO *bio, int error,
ctx->script_info = script_info;
msg, script_info->name, script_info->desc);
msg, script_info->name, script_info->desc);
const SCRIPT_INFO *script_info;
const SCRIPT_INFO *script_info,
terp->script_info = script_info;
if (terp->script_info == NULL)
terp->script_info = NULL;
terp->script_info->name, op_num);
static int TERP_run(SCRIPT_INFO *script_info, TERP_CONFIG *cfg)
SCRIPT_INFO_print(script_info, debug_bio, /*error=*/0, "generating script");
if (!TEST_true(GEN_SCRIPT_init(&gen_script, script_info))) {
SCRIPT_INFO_print(script_info, debug_bio, /*error=*/1,
if (!TEST_true(GEN_SCRIPT_print(&gen_script, debug_bio, script_info))) {
SCRIPT_INFO_print(script_info, debug_bio, /*error=*/1,
if (!TEST_true(TERP_init(&terp, cfg, script_info, &gen_script)))
SCRIPT_INFO_print(script_info, debug_bio, /*error=*/0, "executing script");
SCRIPT_INFO_print(script_info, debug_bio, /*error=*/!ok,