blob: 550107d9182122d00e5f9ca51045038518312eee [file]
#!/usr/bin/perl -T
use lib '.'; use lib 't';
use SATest; sa_t_init("handler_aliases");
use Test::More tests => 4;
# ---------------------------------------------------------------------------
# loadhandler / tryhandler / ifhandler are aliases for loadplugin / tryplugin /
# ifplugin. A MIME-part handler is an ordinary plugin, so the aliases just give
# handler configuration its own vocabulary while behaving identically. We reuse
# the generic test plugin (data/testplugin.pm) to prove that:
# * loadhandler loads the module and its eval rule runs (MY_TEST_HANDLER);
# * ifhandler <loaded> enters the block;
# * ifhandler <missing> skips the block (SHOULD_NOT_BE_CALLED never defined);
# * tryhandler <missing> is silently ignored (no fatal error -> lint/run works).
%patterns = (
q{ 1.0 MY_TEST_HANDLER }, 'handler_eval_called',
'registered myTestPlugin', 'registered',
);
%anti_patterns = (
'SHOULD_NOT_BE_CALLED', 'ifhandler_missing_skipped',
);
tstlocalrules ("
loadhandler myTestPlugin ../../../data/testplugin.pm
tryhandler NoSuchHandlerModuleXYZ
ifhandler FooHandlerNotLoaded
header SHOULD_NOT_BE_CALLED eval:doesnt_exist()
endif
ifhandler myTestPlugin
header MY_TEST_HANDLER eval:check_test_plugin()
endif
");
ok (sarun ("-L -t < data/spam/gtube.eml", \&patterns_run_cb));
ok_all_patterns();