diff --git a/src/testsuite/testsuite.c b/src/testsuite/testsuite.c index 2a6b82eb45621dca7bae11b5a45163757f7c988c..c12d89b1f2b1c52af135b5ac6f43673821525423 100644 --- a/src/testsuite/testsuite.c +++ b/src/testsuite/testsuite.c @@ -80,7 +80,7 @@ testsuite_run(struct sieve_binary *sbin, struct sieve_error_handler *ehandler) int main(int argc, char **argv) { struct sieve_instance *svinst; - const char *scriptfile, *dumpfile, *tracefile; + const char *abspath, *scriptfile, *dumpfile, *tracefile; struct sieve_trace_config trace_config; struct sieve_binary *sbin; const char *sieve_dir, *cwd, *error; @@ -145,17 +145,22 @@ int main(int argc, char **argv) /* Initialize settings environment */ testsuite_settings_init(); - /* Currently needed for include (FIXME) */ - sieve_dir = strrchr(scriptfile, '/'); + /* Manually setup the absolute sieve storage path for the executed + test script. */ + if (t_abspath(scriptfile, &abspath, &error) < 0) + i_fatal("Failed to retrieve absolute path from test script: %s", + error); + sieve_dir = strrchr(abspath, '/'); if (sieve_dir == NULL) - sieve_dir = "./"; + sieve_dir = "."; else - sieve_dir = t_strdup_until(scriptfile, sieve_dir+1); + sieve_dir = t_strdup_until(abspath, sieve_dir); - testsuite_setting_set("sieve_dir", - t_strconcat(sieve_dir, "included", NULL)); - testsuite_setting_set("sieve_global_dir", - t_strconcat(sieve_dir, "included-global", NULL)); + testsuite_setting_set("sieve", + t_strdup_printf("file:%s/included;active=~/.dovecot.sieve", + sieve_dir)); + testsuite_setting_set("sieve_global", + t_strdup_printf("%s/included-global", sieve_dir)); /* Finish testsuite initialization */ svinst = sieve_tool_init_finish(sieve_tool, FALSE, FALSE);