require "vnd.dovecot.testsuite"; require "variables"; require "relational"; require "comparator-i;ascii-numeric"; /* * Command syntax */ test "Command syntax" { if test_script_compile "errors/syntax.sieve" { test_fail "compile should have failed"; } if not test_error :count "eq" :comparator "i;ascii-numeric" "8" { test_fail "wrong number of errors reported"; } } /* Unknown program */ test_set "message" text: From: stephan@example.com To: pipe@example.net Subject: Frop! Frop! . ; test_config_set "sieve_pipe_bin_dir" "${tst.path}/../bin"; test_config_reload :extension "vnd.dovecot.pipe"; test_result_reset; test "Unknown program" { if not test_script_compile "errors/unknown-program.sieve" { test_fail "compile failed"; } if not test_script_run { test_fail "execute failed"; } if test_result_execute { test_fail "pipe should have failed"; } if not test_error :count "eq" :comparator "i;ascii-numeric" "1" { test_fail "wrong number of errors reported"; } if not test_error :index 1 :contains "failed to pipe" { test_fail "wrong error reported"; } } /* Timeout */ test_set "message" text: From: stephan@example.com To: pipe@example.net Subject: Frop! Frop! . ; test_config_set "sieve_pipe_bin_dir" "${tst.path}/../bin"; test_config_set "sieve_pipe_exec_timeout" "1s"; test_config_reload :extension "vnd.dovecot.pipe"; test_result_reset; test "Timeout" { if not test_script_compile "errors/timeout.sieve" { test_fail "compile failed"; } if not test_script_run { test_fail "execute failed"; } if test_result_execute { test_fail "pipe should have timed out"; } if not test_error :count "eq" :comparator "i;ascii-numeric" "2" { test_fail "wrong number of errors reported"; } if not test_error :index 2 :contains "failed to pipe" { test_fail "wrong error reported"; } }