From 7170fd8817b6e138668bb7e919b352a4d4f2d336 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Tue, 26 Aug 2008 17:04:27 +0200
Subject: [PATCH] Testsuite: added simple runtime action conflict tests.

---
 Makefile.am                                   |  3 +-
 tests/execute/errors.svtest                   | 46 +++++++++++++++++++
 ...s.sieve => conflict-reject-fileinto.sieve} |  4 +-
 .../execute/errors/conflict-reject-keep.sieve |  4 ++
 .../errors/conflict-reject-redirect.sieve     |  4 ++
 5 files changed, 58 insertions(+), 3 deletions(-)
 create mode 100644 tests/execute/errors.svtest
 rename tests/execute/errors/{action-conflicts.sieve => conflict-reject-fileinto.sieve} (50%)
 create mode 100644 tests/execute/errors/conflict-reject-keep.sieve
 create mode 100644 tests/execute/errors/conflict-reject-redirect.sieve

diff --git a/Makefile.am b/Makefile.am
index 06b7be874..d024778fb 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -50,7 +50,8 @@ test_cases = \
 	tests/extensions/subaddress/rfc.svtest \
 	tests/compile/compile.svtest \
 	tests/compile/examples.svtest \
-	tests/compile/errors.svtest
+	tests/compile/errors.svtest \
+	tests/execute/errors.svtest
 
 $(test_cases):
 	@$(TESTSUITE_BIN) $@
diff --git a/tests/execute/errors.svtest b/tests/execute/errors.svtest
new file mode 100644
index 000000000..196d5fb97
--- /dev/null
+++ b/tests/execute/errors.svtest
@@ -0,0 +1,46 @@
+require "vnd.dovecot.testsuite";
+
+require "relational";
+require "comparator-i;ascii-numeric";
+
+test "Action conflicts: reject <-> fileinto" {
+	if not test_compile "errors/conflict-reject-fileinto.sieve" {
+		test_fail "compile failed";
+	}
+
+	if test_execute {
+		test_fail "execution should have failed";
+	}
+
+	if test_error :count "gt" :comparator "i;ascii-numeric" "1" {
+		test_fail "too many runtime errors reported";
+	}
+}
+
+test "Action conflicts: reject <-> keep" {
+	if not test_compile "errors/conflict-reject-keep.sieve" {
+		test_fail "compile failed";
+	}
+
+	if test_execute {
+		test_fail "execution should have failed";
+	}
+
+	if test_error :count "gt" :comparator "i;ascii-numeric" "1" {
+		test_fail "too many runtime errors reported";
+	}
+}
+
+test "Action conflicts: reject <-> redirect" {
+	if not test_compile "errors/conflict-reject-redirect.sieve" {
+		test_fail "compile failed";
+	}
+
+	if test_execute {
+		test_fail "execution should have failed";
+	}
+
+	if test_error :count "gt" :comparator "i;ascii-numeric" "1" {
+		test_fail "too many runtime errors reported";
+	}
+}
diff --git a/tests/execute/errors/action-conflicts.sieve b/tests/execute/errors/conflict-reject-fileinto.sieve
similarity index 50%
rename from tests/execute/errors/action-conflicts.sieve
rename to tests/execute/errors/conflict-reject-fileinto.sieve
index 082bdf780..85ef139b0 100644
--- a/tests/execute/errors/action-conflicts.sieve
+++ b/tests/execute/errors/conflict-reject-fileinto.sieve
@@ -1,5 +1,5 @@
 require "reject";
-require "vacation";
+require "fileinto";
 
 reject "No nonsense in my mailbox.";
-vacation "I am gone for a while.";
+fileinto "Spam";
diff --git a/tests/execute/errors/conflict-reject-keep.sieve b/tests/execute/errors/conflict-reject-keep.sieve
new file mode 100644
index 000000000..569a4acf0
--- /dev/null
+++ b/tests/execute/errors/conflict-reject-keep.sieve
@@ -0,0 +1,4 @@
+require "reject";
+
+reject "I am not interested in your nonsense.";
+keep;
diff --git a/tests/execute/errors/conflict-reject-redirect.sieve b/tests/execute/errors/conflict-reject-redirect.sieve
new file mode 100644
index 000000000..d01226982
--- /dev/null
+++ b/tests/execute/errors/conflict-reject-redirect.sieve
@@ -0,0 +1,4 @@
+require "reject";
+
+reject "I am not interested in your nonsense.";
+redirect "frop@example.com";
-- 
GitLab