44
44
static int cmd_test_fail_operation_execute
45
45
(const struct sieve_runtime_env *renv, sieve_size_t *address);
47
const struct sieve_operation_def test_fail_operation = {
47
const struct sieve_operation_def test_fail_operation = {
50
50
TESTSUITE_OPERATION_TEST_FAIL,
51
cmd_test_fail_operation_dump,
52
cmd_test_fail_operation_execute
51
cmd_test_fail_operation_dump,
52
cmd_test_fail_operation_execute
59
59
static bool cmd_test_fail_validate
60
(struct sieve_validator *valdtr ATTR_UNUSED, struct sieve_command *cmd)
60
(struct sieve_validator *valdtr ATTR_UNUSED, struct sieve_command *cmd)
62
62
struct sieve_ast_argument *arg = cmd->first_positional;
64
64
if ( !sieve_validate_positional_argument
65
65
(valdtr, cmd, arg, "reason", 1, SAAT_STRING) ) {
69
69
return sieve_validator_argument_activate(valdtr, cmd, arg, FALSE);
76
76
static inline struct testsuite_generator_context *
77
77
_get_generator_context(struct sieve_generator *gentr)
79
return (struct testsuite_generator_context *)
79
return (struct testsuite_generator_context *)
80
80
sieve_generator_extension_get_context(gentr, testsuite_ext);
83
83
static bool cmd_test_fail_generate
84
84
(const struct sieve_codegen_env *cgenv, struct sieve_command *cmd)
86
struct testsuite_generator_context *genctx =
86
struct testsuite_generator_context *genctx =
87
87
_get_generator_context(cgenv->gentr);
89
89
sieve_operation_emit(cgenv->sblock, cmd->ext, &test_fail_operation);
91
91
/* Generate arguments */
92
92
if ( !sieve_generate_arguments(cgenv, cmd, NULL) )
95
sieve_jumplist_add(genctx->exit_jumps,
96
sieve_binary_emit_offset(cgenv->sblock, 0));
95
sieve_jumplist_add(genctx->exit_jumps,
96
sieve_binary_emit_offset(cgenv->sblock, 0));
105
105
static bool cmd_test_fail_operation_dump
106
106
(const struct sieve_dumptime_env *denv, sieve_size_t *address)
109
109
sieve_offset_t offset;
111
111
sieve_code_dumpf(denv, "TEST_FAIL:");
112
112
sieve_code_descend(denv);
114
if ( !sieve_opr_string_dump(denv, address, "reason") )
114
if ( !sieve_opr_string_dump(denv, address, "reason") )
117
117
sieve_code_mark(denv);