From e83f2e46a76badbbe27ed74b297e5bc7bf26f285 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan@rename-it.nl> Date: Sat, 2 Aug 2008 16:22:04 +0200 Subject: [PATCH] Testsuite: added circular include tests. --- .../plugins/include/ext-include-common.c | 19 +++++------- src/testsuite/testsuite-common.c | 15 ++++++++++ src/testsuite/testsuite.c | 9 +++--- tests/extensions/include/errors.svtest | 30 +++++++++++++++++++ .../include/errors/circular-1.sieve | 5 ++++ .../include/errors/circular-2.sieve | 5 ++++ .../include/errors/circular-3.sieve | 5 ++++ .../errors/included/circular-one.sieve | 5 ++++ .../errors/included/circular-three-2.sieve | 3 ++ .../errors/included/circular-three-3.sieve | 3 ++ .../errors/included/circular-three.sieve | 7 +++++ .../errors/included/circular-two-2.sieve | 3 ++ .../errors/included/circular-two.sieve | 7 +++++ .../{ => included}/variables-included1.sieve | 0 .../{ => included}/variables-included2.sieve | 0 .../{ => included}/variables-included3.sieve | 0 16 files changed, 101 insertions(+), 15 deletions(-) create mode 100644 tests/extensions/include/errors/circular-1.sieve create mode 100644 tests/extensions/include/errors/circular-2.sieve create mode 100644 tests/extensions/include/errors/circular-3.sieve create mode 100644 tests/extensions/include/errors/included/circular-one.sieve create mode 100644 tests/extensions/include/errors/included/circular-three-2.sieve create mode 100644 tests/extensions/include/errors/included/circular-three-3.sieve create mode 100644 tests/extensions/include/errors/included/circular-three.sieve create mode 100644 tests/extensions/include/errors/included/circular-two-2.sieve create mode 100644 tests/extensions/include/errors/included/circular-two.sieve rename tests/extensions/include/{ => included}/variables-included1.sieve (100%) rename tests/extensions/include/{ => included}/variables-included2.sieve (100%) rename tests/extensions/include/{ => included}/variables-included3.sieve (100%) diff --git a/src/lib-sieve/plugins/include/ext-include-common.c b/src/lib-sieve/plugins/include/ext-include-common.c index bb02e59c4..cee2790ea 100644 --- a/src/lib-sieve/plugins/include/ext-include-common.c +++ b/src/lib-sieve/plugins/include/ext-include-common.c @@ -60,25 +60,22 @@ const char *ext_include_get_script_directory if (sieve_dir == NULL) sieve_dir = getenv("HOME"); - if (sieve_dir == NULL) { - sieve_sys_error("include: sieve_dir and home not set " - "(wanted script %s)", str_sanitize(script_name, 80)); - return NULL; - } break; case EXT_INCLUDE_LOCATION_GLOBAL: sieve_dir = getenv("SIEVE_GLOBAL_DIR"); - - if (sieve_dir == NULL) { - sieve_sys_warning("include: sieve_global_dir not set " - "(wanted script %s)", str_sanitize(script_name, 80)); - return NULL; - } break; default: return NULL; } + if (sieve_dir == NULL) { + sieve_sys_error("include: sieve_dir and home not set " + "(wanted script %s)", str_sanitize(script_name, 80)); + return NULL; + } + + printf("SIEVE DIR: %s\n", sieve_dir); + return sieve_dir; } diff --git a/src/testsuite/testsuite-common.c b/src/testsuite/testsuite-common.c index 39a5f65ef..297ebf6e5 100644 --- a/src/testsuite/testsuite-common.c +++ b/src/testsuite/testsuite-common.c @@ -4,6 +4,7 @@ #include "ostream.h" #include "hash.h" #include "mail-storage.h" +#include "env-util.h" #include "mail-raw.h" #include "namespaces.h" @@ -301,6 +302,8 @@ static void _testsuite_script_verror msg.location = p_strdup(pool, location); msg.message = p_strdup_vprintf(pool, fmt, args); + +// printf("error: %s: %s.\n", location, t_strdup_vprintf(fmt, args)); array_append(&_testsuite_script_errors, &msg, 1); } @@ -370,9 +373,21 @@ static void testsuite_script_init(void) bool testsuite_script_compile(const char *script_path) { struct sieve_binary *sbin; + const char *sieve_dir; testsuite_script_clear_messages(); + /* Initialize environment */ + sieve_dir = strrchr(script_path, '/'); + if ( sieve_dir == NULL ) + sieve_dir= "./"; + else + sieve_dir = t_strdup_until(script_path, sieve_dir+1); + + /* 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, test_script_ehandler)) == NULL ) return FALSE; diff --git a/src/testsuite/testsuite.c b/src/testsuite/testsuite.c index 99f9fd9a6..e21786f1e 100644 --- a/src/testsuite/testsuite.c +++ b/src/testsuite/testsuite.c @@ -61,7 +61,6 @@ static void testsuite_bin_init(void) testsuite_init(); } - static void testsuite_bin_deinit(void) { testsuite_deinit(); @@ -216,11 +215,13 @@ int main(int argc, char **argv) /* Initialize environment */ sieve_dir = strrchr(scriptfile, '/'); if ( sieve_dir == NULL ) - sieve_dir="./"; + sieve_dir= "./"; else - sieve_dir = t_strdup_until(scriptfile, sieve_dir); + sieve_dir = t_strdup_until(scriptfile, sieve_dir+1); - env_put(t_strconcat("SIEVE_DIR=", sieve_dir, NULL)); + /* 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 */ sbin = _compile_sieve_script(scriptfile); diff --git a/tests/extensions/include/errors.svtest b/tests/extensions/include/errors.svtest index c58a5f49b..dc0c9814b 100644 --- a/tests/extensions/include/errors.svtest +++ b/tests/extensions/include/errors.svtest @@ -17,6 +17,36 @@ test "Generic" { } } +test "Circular - direct" { + if test_compile "errors/circular-1.sieve" { + test_fail "compile should have failed"; + } + + if not test_error :count "eq" :comparator "i;ascii-numeric" "3" { + test_fail "wrong number of errors reported"; + } +} + +test "Circular - one intermittent" { + if test_compile "errors/circular-2.sieve" { + test_fail "compile should have failed"; + } + + if not test_error :count "eq" :comparator "i;ascii-numeric" "4" { + test_fail "wrong number of errors reported"; + } +} + +test "Circular - two intermittent" { + if test_compile "errors/circular-3.sieve" { + test_fail "compile should have failed"; + } + + if not test_error :count "eq" :comparator "i;ascii-numeric" "5" { + test_fail "wrong number of errors reported"; + } +} + /* * Using import/export without variables required */ diff --git a/tests/extensions/include/errors/circular-1.sieve b/tests/extensions/include/errors/circular-1.sieve new file mode 100644 index 000000000..9526ff747 --- /dev/null +++ b/tests/extensions/include/errors/circular-1.sieve @@ -0,0 +1,5 @@ +require "include"; + +discard; + +include "circular-one.sieve"; diff --git a/tests/extensions/include/errors/circular-2.sieve b/tests/extensions/include/errors/circular-2.sieve new file mode 100644 index 000000000..59fca94c1 --- /dev/null +++ b/tests/extensions/include/errors/circular-2.sieve @@ -0,0 +1,5 @@ +require "include"; + +discard; + +include "circular-two.sieve"; diff --git a/tests/extensions/include/errors/circular-3.sieve b/tests/extensions/include/errors/circular-3.sieve new file mode 100644 index 000000000..1ad95b6b6 --- /dev/null +++ b/tests/extensions/include/errors/circular-3.sieve @@ -0,0 +1,5 @@ +require "include"; + +discard; + +include "circular-three"; diff --git a/tests/extensions/include/errors/included/circular-one.sieve b/tests/extensions/include/errors/included/circular-one.sieve new file mode 100644 index 000000000..91978fede --- /dev/null +++ b/tests/extensions/include/errors/included/circular-one.sieve @@ -0,0 +1,5 @@ +require "include"; + +keep; + +include "circular-one.sieve"; diff --git a/tests/extensions/include/errors/included/circular-three-2.sieve b/tests/extensions/include/errors/included/circular-three-2.sieve new file mode 100644 index 000000000..323751053 --- /dev/null +++ b/tests/extensions/include/errors/included/circular-three-2.sieve @@ -0,0 +1,3 @@ +require "include"; + +include "circular-three-3.sieve"; diff --git a/tests/extensions/include/errors/included/circular-three-3.sieve b/tests/extensions/include/errors/included/circular-three-3.sieve new file mode 100644 index 000000000..4c062cdb3 --- /dev/null +++ b/tests/extensions/include/errors/included/circular-three-3.sieve @@ -0,0 +1,3 @@ +require "include"; + +include "circular-three.sieve"; diff --git a/tests/extensions/include/errors/included/circular-three.sieve b/tests/extensions/include/errors/included/circular-three.sieve new file mode 100644 index 000000000..14c3c7f7b --- /dev/null +++ b/tests/extensions/include/errors/included/circular-three.sieve @@ -0,0 +1,7 @@ +require "include"; + +keep; + +include "circular-three-2.sieve"; + + diff --git a/tests/extensions/include/errors/included/circular-two-2.sieve b/tests/extensions/include/errors/included/circular-two-2.sieve new file mode 100644 index 000000000..d529214d4 --- /dev/null +++ b/tests/extensions/include/errors/included/circular-two-2.sieve @@ -0,0 +1,3 @@ +require "include"; + +include "circular-two.sieve"; diff --git a/tests/extensions/include/errors/included/circular-two.sieve b/tests/extensions/include/errors/included/circular-two.sieve new file mode 100644 index 000000000..340ff9e08 --- /dev/null +++ b/tests/extensions/include/errors/included/circular-two.sieve @@ -0,0 +1,7 @@ +require "include"; + +keep; + +include "circular-two-2.sieve"; + + diff --git a/tests/extensions/include/variables-included1.sieve b/tests/extensions/include/included/variables-included1.sieve similarity index 100% rename from tests/extensions/include/variables-included1.sieve rename to tests/extensions/include/included/variables-included1.sieve diff --git a/tests/extensions/include/variables-included2.sieve b/tests/extensions/include/included/variables-included2.sieve similarity index 100% rename from tests/extensions/include/variables-included2.sieve rename to tests/extensions/include/included/variables-included2.sieve diff --git a/tests/extensions/include/variables-included3.sieve b/tests/extensions/include/included/variables-included3.sieve similarity index 100% rename from tests/extensions/include/variables-included3.sieve rename to tests/extensions/include/included/variables-included3.sieve -- GitLab