From ebefaf9f7fff259fcee7117ce60d8f45667f9674 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Sun, 16 Aug 2009 01:34:09 +0200
Subject: [PATCH] Testsuite: added action execution test for the include
 extension with stored binaries.

---
 Makefile.am                                   |  1 +
 src/testsuite/testsuite-script.c              |  1 +
 src/testsuite/testsuite.c                     |  2 +-
 tests/extensions/include/execute.svtest       | 42 +++++++++++++++++++
 .../include/execute/actions-fileinto.sieve    |  5 +++
 .../execute/included/actions-fileinto1.sieve  |  3 ++
 .../execute/included/actions-fileinto2.sieve  |  4 ++
 .../execute/included/actions-fileinto3.sieve  |  3 ++
 8 files changed, 60 insertions(+), 1 deletion(-)
 create mode 100644 tests/extensions/include/execute.svtest
 create mode 100644 tests/extensions/include/execute/actions-fileinto.sieve
 create mode 100644 tests/extensions/include/execute/included/actions-fileinto1.sieve
 create mode 100644 tests/extensions/include/execute/included/actions-fileinto2.sieve
 create mode 100644 tests/extensions/include/execute/included/actions-fileinto3.sieve

diff --git a/Makefile.am b/Makefile.am
index 20d85a6df..b20be0ecf 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -70,6 +70,7 @@ test_cases = \
 	tests/extensions/include/once.svtest \
 	tests/extensions/include/twice.svtest \
 	tests/extensions/include/rfc.svtest \
+	tests/extensions/include/execute.svtest \
 	tests/extensions/imap4flags/basic.svtest \
 	tests/extensions/imap4flags/hasflag.svtest \
 	tests/extensions/imap4flags/errors.svtest \
diff --git a/src/testsuite/testsuite-script.c b/src/testsuite/testsuite-script.c
index 49456a503..955bf19bf 100644
--- a/src/testsuite/testsuite-script.c
+++ b/src/testsuite/testsuite-script.c
@@ -51,6 +51,7 @@ bool testsuite_script_compile(const char *script_path)
 	/* Currently needed for include (FIXME) */
 	env_put(t_strconcat("SIEVE_DIR=", sieve_dir, "included", NULL));
 	env_put(t_strconcat("SIEVE_GLOBAL_DIR=", sieve_dir, "included-global", NULL));
+	
 
 	if ( (sbin = sieve_compile(script_path, NULL, testsuite_log_ehandler)) == NULL )
 		return FALSE;
diff --git a/src/testsuite/testsuite.c b/src/testsuite/testsuite.c
index 869dfff0c..75fcf858d 100644
--- a/src/testsuite/testsuite.c
+++ b/src/testsuite/testsuite.c
@@ -189,7 +189,7 @@ int main(int argc, char **argv)
 	/* Currently needed for include (FIXME) */
 	env_put(t_strconcat("SIEVE_DIR=", sieve_dir, "included", NULL));
 	env_put(t_strconcat("SIEVE_GLOBAL_DIR=", sieve_dir, "included-global", NULL));
-	
+
 	/* Compile sieve script */
 	if ( (sbin = sieve_tool_script_compile(scriptfile, NULL)) != NULL ) {
 		struct sieve_error_handler *ehandler;
diff --git a/tests/extensions/include/execute.svtest b/tests/extensions/include/execute.svtest
new file mode 100644
index 000000000..54f834abe
--- /dev/null
+++ b/tests/extensions/include/execute.svtest
@@ -0,0 +1,42 @@
+require "vnd.dovecot.testsuite";
+
+test_set "message" text:
+From: idiot@example.com
+To: idiot@rename-it.nl
+Subject: Frop!
+
+Frop.
+.
+;
+
+test "Actions Fileinto" {
+	test_mailbox :create "aaaa";
+	test_mailbox :create "bbbb";
+	
+	if not test_script_compile "execute/actions-fileinto.sieve" {
+		test_fail "failed to compile sieve script";
+	}
+
+	test_binary :save "actions-fileinto";
+	test_binary :load "actions-fileinto";
+
+	if not test_script_run {
+		test_fail "failed to execute sieve script";
+	}
+
+	if not test_result_execute {
+		test_fail "failed to execute result";
+	}
+
+	test_message :folder "aaaa" 0;
+
+	if not header "subject" "Frop!" {
+		test_fail "fileinto \"aaaa\" not executed.";
+	}	
+
+	test_message :folder "aaaa" 0;
+
+	if not header "subject" "Frop!" {
+		test_fail "fileinto \"bbbb\" not executed.";
+	}	
+}
diff --git a/tests/extensions/include/execute/actions-fileinto.sieve b/tests/extensions/include/execute/actions-fileinto.sieve
new file mode 100644
index 000000000..b0b815757
--- /dev/null
+++ b/tests/extensions/include/execute/actions-fileinto.sieve
@@ -0,0 +1,5 @@
+require "include";
+
+include "actions-fileinto1";
+include "actions-fileinto2";
+include "actions-fileinto3";
diff --git a/tests/extensions/include/execute/included/actions-fileinto1.sieve b/tests/extensions/include/execute/included/actions-fileinto1.sieve
new file mode 100644
index 000000000..d4c5031f8
--- /dev/null
+++ b/tests/extensions/include/execute/included/actions-fileinto1.sieve
@@ -0,0 +1,3 @@
+require "fileinto";
+
+fileinto "aaaa";
diff --git a/tests/extensions/include/execute/included/actions-fileinto2.sieve b/tests/extensions/include/execute/included/actions-fileinto2.sieve
new file mode 100644
index 000000000..f73da0d1e
--- /dev/null
+++ b/tests/extensions/include/execute/included/actions-fileinto2.sieve
@@ -0,0 +1,4 @@
+require "fileinto";
+
+fileinto "bbbb";
+
diff --git a/tests/extensions/include/execute/included/actions-fileinto3.sieve b/tests/extensions/include/execute/included/actions-fileinto3.sieve
new file mode 100644
index 000000000..d4c5031f8
--- /dev/null
+++ b/tests/extensions/include/execute/included/actions-fileinto3.sieve
@@ -0,0 +1,3 @@
+require "fileinto";
+
+fileinto "aaaa";
-- 
GitLab