dovecot-2.0-sieve: Testsuite: added support for removed settings.
pigeonhole at rename-it.nl
pigeonhole at rename-it.nl
Fri Jan 8 00:58:44 EET 2010
details: http://hg.rename-it.nl/dovecot-2.0-sieve/rev/596dc3b8be61
changeset: 1181:596dc3b8be61
user: Stephan Bosch <stephan at rename-it.nl>
date: Sun Jan 03 22:24:33 2010 +0100
description:
Testsuite: added support for removed settings.
diffstat:
src/testsuite/cmd-test-config.c | 74 ++++++++++++++++++++++++++++++++++++-
src/testsuite/ext-testsuite.c | 1 +
src/testsuite/testsuite-common.h | 2 +
src/testsuite/testsuite-settings.c | 14 +++++++
src/testsuite/testsuite-settings.h | 1 +
5 files changed, 90 insertions(+), 2 deletions(-)
diffs (200 lines):
diff -r f8ed8afd025d -r 596dc3b8be61 src/testsuite/cmd-test-config.c
--- a/src/testsuite/cmd-test-config.c Sun Jan 03 21:41:45 2010 +0100
+++ b/src/testsuite/cmd-test-config.c Sun Jan 03 22:24:33 2010 +0100
@@ -19,7 +19,8 @@
*
* Syntax:
* test_config (
- * :set <setting: string> <value: string> /
+ * :set <setting: string> <value: string> /
+ * :unset <setting: string> /
* :reload [<extension: string>] )
*/
@@ -58,6 +59,21 @@
cmd_test_config_set_operation_execute
};
+/* Test_message_unset operation */
+
+static bool cmd_test_config_unset_operation_dump
+ (const struct sieve_dumptime_env *denv, sieve_size_t *address);
+static int cmd_test_config_unset_operation_execute
+ (const struct sieve_runtime_env *renv, sieve_size_t *address);
+
+const struct sieve_operation_def test_config_unset_operation = {
+ "TEST_CONFIG_UNSET",
+ &testsuite_extension,
+ TESTSUITE_OPERATION_TEST_CONFIG_UNSET,
+ cmd_test_config_unset_operation_dump,
+ cmd_test_config_unset_operation_execute
+};
+
/* Test_message_mailbox operation */
static bool cmd_test_config_reload_operation_dump
@@ -79,12 +95,14 @@
enum cmd_test_config_action {
CONFIG_ACTION_SET,
+ CONFIG_ACTION_UNSET,
CONFIG_ACTION_RELOAD,
CONFIG_ACTION_LAST
};
const struct sieve_operation_def *test_config_operations[] = {
&test_config_set_operation,
+ &test_config_unset_operation,
&test_config_reload_operation
};
@@ -124,6 +142,8 @@
if ( strcmp(identifier, "set") == 0 )
action = CONFIG_ACTION_SET;
+ else if ( strcmp(identifier, "unset") == 0 )
+ action = CONFIG_ACTION_UNSET;
else if ( strcmp(identifier, "reload") == 0 )
action = CONFIG_ACTION_RELOAD;
else
@@ -181,6 +201,20 @@
/* Detach parameters */
*arg = sieve_ast_arguments_detach(tag->parameters,2);
break;
+ case CONFIG_ACTION_UNSET:
+ /* Check syntax:
+ * :unset <setting: string>
+ */
+ if ( !sieve_validate_tag_parameter
+ (valdtr, cmd, tag, *arg, NULL, 0, SAAT_STRING, TRUE) ) {
+ return FALSE;
+ }
+
+ /* Detach parameter */
+ tag->parameters = *arg;
+ *arg = sieve_ast_arguments_detach(*arg,1);
+ break;
+
case CONFIG_ACTION_RELOAD:
/* Check syntax:
* :reload <extension: string>
@@ -253,6 +287,17 @@
sieve_opr_string_dump(denv, address, "value");
}
+static bool cmd_test_config_unset_operation_dump
+(const struct sieve_dumptime_env *denv, sieve_size_t *address)
+{
+ sieve_code_dumpf(denv, "TEST_CONFIG_UNSET:");
+
+ sieve_code_descend(denv);
+
+ return
+ sieve_opr_string_dump(denv, address, "setting");
+}
+
static bool cmd_test_config_reload_operation_dump
(const struct sieve_dumptime_env *denv, sieve_size_t *address)
{
@@ -278,7 +323,7 @@
* Read operands
*/
- /* Settings */
+ /* Setting */
if ( !sieve_opr_string_read(renv, address, &setting) ) {
sieve_runtime_trace_error(renv, "invalid setting operand");
@@ -304,6 +349,31 @@
return SIEVE_EXEC_OK;
}
+static int cmd_test_config_unset_operation_execute
+(const struct sieve_runtime_env *renv, sieve_size_t *address)
+{
+ string_t *setting;
+
+ /*
+ * Read operands
+ */
+
+ if ( !sieve_opr_string_read(renv, address, &setting) ) {
+ sieve_runtime_trace_error(renv, "invalid setting operand");
+ return SIEVE_EXEC_BIN_CORRUPT;
+ }
+
+ /*
+ * Perform operation
+ */
+
+ sieve_runtime_trace(renv, "TEST_CONFIG_UNSET %s", str_c(setting));
+
+ testsuite_setting_unset(str_c(setting));
+
+ return SIEVE_EXEC_OK;
+}
+
static int cmd_test_config_reload_operation_execute
(const struct sieve_runtime_env *renv, sieve_size_t *address)
{
diff -r f8ed8afd025d -r 596dc3b8be61 src/testsuite/ext-testsuite.c
--- a/src/testsuite/ext-testsuite.c Sun Jan 03 21:41:45 2010 +0100
+++ b/src/testsuite/ext-testsuite.c Sun Jan 03 22:24:33 2010 +0100
@@ -56,6 +56,7 @@
&test_finish_operation,
&test_fail_operation,
&test_config_set_operation,
+ &test_config_unset_operation,
&test_config_reload_operation,
&test_set_operation,
&test_script_compile_operation,
diff -r f8ed8afd025d -r 596dc3b8be61 src/testsuite/testsuite-common.h
--- a/src/testsuite/testsuite-common.h Sun Jan 03 21:41:45 2010 +0100
+++ b/src/testsuite/testsuite-common.h Sun Jan 03 22:24:33 2010 +0100
@@ -77,6 +77,7 @@
TESTSUITE_OPERATION_TEST_FINISH,
TESTSUITE_OPERATION_TEST_FAIL,
TESTSUITE_OPERATION_TEST_CONFIG_SET,
+ TESTSUITE_OPERATION_TEST_CONFIG_UNSET,
TESTSUITE_OPERATION_TEST_CONFIG_RELOAD,
TESTSUITE_OPERATION_TEST_SET,
TESTSUITE_OPERATION_TEST_SCRIPT_COMPILE,
@@ -99,6 +100,7 @@
extern const struct sieve_operation_def test_finish_operation;
extern const struct sieve_operation_def test_fail_operation;
extern const struct sieve_operation_def test_config_set_operation;
+extern const struct sieve_operation_def test_config_unset_operation;
extern const struct sieve_operation_def test_config_reload_operation;
extern const struct sieve_operation_def test_set_operation;
extern const struct sieve_operation_def test_script_compile_operation;
diff -r f8ed8afd025d -r 596dc3b8be61 src/testsuite/testsuite-settings.c
--- a/src/testsuite/testsuite-settings.c Sun Jan 03 21:41:45 2010 +0100
+++ b/src/testsuite/testsuite-settings.c Sun Jan 03 22:24:33 2010 +0100
@@ -73,3 +73,17 @@
hash_table_insert(settings, (void *) identifier, (void *) setting);
}
}
+
+void testsuite_setting_unset(const char *identifier)
+{
+ struct testsuite_setting *setting = (struct testsuite_setting *)
+ hash_table_lookup(settings, identifier);
+
+ if ( setting != NULL ) {
+ i_free(setting->identifier);
+ i_free(setting->value);
+ i_free(setting);
+ }
+
+ hash_table_remove(settings, identifier);
+}
diff -r f8ed8afd025d -r 596dc3b8be61 src/testsuite/testsuite-settings.h
--- a/src/testsuite/testsuite-settings.h Sun Jan 03 21:41:45 2010 +0100
+++ b/src/testsuite/testsuite-settings.h Sun Jan 03 22:24:33 2010 +0100
@@ -11,5 +11,6 @@
const char *testsuite_setting_get(void *context, const char *identifier);
void testsuite_setting_set(const char *identifier, const char *value);
+void testsuite_setting_unset(const char *identifier);
#endif /* __TESTSUITE_SETTINGS_H */
More information about the dovecot-cvs
mailing list