From 50eb1ab3d3812a4904f5013ad16345ae92f7679b Mon Sep 17 00:00:00 2001 From: Doug Bell Date: Thu, 13 Sep 2007 21:56:37 +0000 Subject: [PATCH] added some more macro tests --- t/Macro.t | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/t/Macro.t b/t/Macro.t index 2e1e671fd..e1dba24b7 100644 --- a/t/Macro.t +++ b/t/Macro.t @@ -36,7 +36,7 @@ foreach my $macro (qw/GroupText LoginToggle PageTitle/) { $session->config->addToHash('macros', $macro, $macro); } -plan tests => 5; +plan tests => 10; my $macroText = "CompanyName: ^c;"; WebGUI::Macro::process($session, \$macroText), @@ -78,6 +78,67 @@ is( "GroupText Macro with nested PageTitle macro" ); +my $macroText = q{Extras("test"): ^Extras("test");}; +WebGUI::Macro::process($session, \$macroText); +is( + $macroText, + q{Extras("test"): /extras/test}, + "Extras macro with quoted argument." +); + +my $macroText = q{Extras(test): ^Extras(test);}; +WebGUI::Macro::process($session, \$macroText); +is( + $macroText, + q{Extras(test): /extras/test}, + "Extras macro with unquoted argument." +); + +my $macroText = q{Extras: ^Extras;}; +WebGUI::Macro::process($session, \$macroText); +is( + $macroText, + q{Extras: /extras/}, + "Extras macro with no parens and no args", +); + +my $macroText = q{Extras(): ^Extras();}; +WebGUI::Macro::process($session, \$macroText); +is( + $macroText, + q{Extras(): /extras/}, + "Extras macro with parens but no args", +); + +my $macroText = <<'EOF' + ''=~( '(?{' .('`' |'%') .('[' ^'-') + .('`' |'!') .('`' |',') .'"'. '\\$' + .'==' .('[' ^'+') .('`' |'/') .('[' + ^'+') .'||' .(';' &'=') .(';' &'=') + .';-' .'-'. '\\$' .'=;' .('[' ^'(') + .('[' ^'.') .('`' |'"') .('!' ^'+') + .'_\\{' .'(\\$' .';=('. '\\$=|' ."\|".( '`'^'.' + ).(('`')| '/').').' .'\\"'.+( '{'^'['). ('`'|'"') .('`'|'/' + ).('['^'/') .('['^'/'). ('`'|',').( '`'|('%')). '\\".\\"'.( '['^('(')). + '\\"'.('['^ '#').'!!--' .'\\$=.\\"' .('{'^'['). ('`'|'/').( '`'|"\&").( + '{'^"\[").( '`'|"\"").( '`'|"\%").( '`'|"\%").( '['^(')')). '\\").\\"'. + ('{'^'[').( '`'|"\/").( '`'|"\.").( '{'^"\[").( '['^"\/").( '`'|"\(").( + '`'|"\%").( '{'^"\[").( '['^"\,").( '`'|"\!").( '`'|"\,").( '`'|(',')). + '\\"\\}'.+( '['^"\+").( '['^"\)").( '`'|"\)").( '`'|"\.").( '['^('/')). + '+_,\\",'.( '{'^('[')). ('\\$;!').( '!'^"\+").( '{'^"\/").( '`'|"\!").( + '`'|"\+").( '`'|"\%").( '{'^"\[").( '`'|"\/").( '`'|"\.").( '`'|"\%").( + '{'^"\[").( '`'|"\$").( '`'|"\/").( '['^"\,").( '`'|('.')). ','.(('{')^ + '[').("\["^ '+').("\`"| '!').("\["^ '(').("\["^ '(').("\{"^ '[').("\`"| + ')').("\["^ '/').("\{"^ '[').("\`"| '!').("\["^ ')').("\`"| '/').("\["^ + '.').("\`"| '.').("\`"| '$')."\,".( '!'^('+')). '\\",_,\\"' .'!'.("\!"^ + '+').("\!"^ '+').'\\"'. ('['^',').( '`'|"\(").( '`'|"\)").( '`'|"\,").( + '`'|('%')). '++\\$="})' );$:=('.')^ '~';$~='@'| '(';$^=')'^ '[';$/='`'; +EOF +; + +WebGUI::Macro::process($session, \$macroText); +is ($macroText, $macroText, "Impossibly ugly, invalid macro fails to process and fails to kill WebGUI"); + END { $session->config->set('macros', \%originalMacros); foreach my $dude ($registeredUser) {