#!/usr/bin/perl -w use strict; use HTML::Mason::Tests; my $tests = make_tests(); $tests->run; sub make_tests { my $group = HTML::Mason::Tests->tests_class->new( name => 'syntax', description => 'Basic component syntax tests' ); #------------------------------------------------------------ $group->add_test( name => 'replace', description => 'tests <% %> tag', component => <<'EOF', Replacement Test <% "Hello World!" %> EOF expect => <<'EOF', Replacement Test Hello World! EOF ); #------------------------------------------------------------ $group->add_test( name => 'percent', description => 'tests %-line syntax', component => <<'EOF', Percent Test % my $message = "Hello World!"; <% $message %> EOF expect => <<'EOF', Percent Test Hello World! EOF ); #------------------------------------------------------------ $group->add_test( name => 'fake_percent', description => 'tests % in text section', component => 'some text, a %, and some text', expect => 'some text, a %, and some text', ); #------------------------------------------------------------ $group->add_test( name => 'empty_percents', description => 'tests empty %-lines', component => <<'EOF', some text, % and some more EOF expect => "some text,\nand some more\n", ); #------------------------------------------------------------ $group->add_test( name => 'empty_percents2', description => 'tests empty %-lines followed by other %-lines', component => <<'EOF', some text, % % $m->print('foo, '); and some more EOF expect => "some text,\nfoo, and some more\n", ); #------------------------------------------------------------ $group->add_test( name => 'space_after_method_name', description => 'tests that spaces are allowed after method/subcomp names', component => <<'EOF', a <%def foo > <%method bar > b EOF expect => <<'EOF', a b EOF ); #------------------------------------------------------------ $group->add_test( name => 'comment_in_attr_flags', description => 'tests that comments are allowed at end of flag/attr lines', component => <<'EOF', a <%flags> inherit => undef # foo bar <%attr> a => 1 # a is 1 b => 2 # ya ay b EOF expect => <<'EOF', a b EOF ); #------------------------------------------------------------ $group->add_test( name => 'dash in subcomp named', description => 'tests that dashes are allowed in subcomponent names', component => <<'EOF', a <%def has-dashes> foo b EOF expect => <<'EOF', a b EOF ); #------------------------------------------------------------ $group->add_test( name => 'flags_on_one_line', description => 'tests that a flags block can be one line', component => <<'EOF', a <%flags>inherit => undef b EOF expect => <<'EOF', a b EOF ); #------------------------------------------------------------ $group->add_test( name => 'attr_uc_ending', description => 'tests that an attr ending tag can be upper-case', component => <<'EOF', <%ATTR> thing => 1 thing: <% $m->request_comp->attr('thing') %> EOF expect => <<'EOF', thing: 1 EOF ); #------------------------------------------------------------ $group->add_test( name => 'args_uc_ending', description => 'tests that args ending tag can be mixed case', component => <<'EOF', <%ARGS> $a => 1 a is <% $a %> b EOF expect => <<'EOF', a is 1 b EOF ); #------------------------------------------------------------ $group->add_test( name => 'comment_in_call', description => 'make a comp call with a commented line', component => <<'EOF', <& .foo, foo => 1, # bar => 2, &> <& .foo, # foo => 1, bar => 2, &> <%def .foo>foo! args are <% join(", ", %ARGS) %> EOF expect => <<'EOF', foo! args are foo, 1 foo! args are bar, 2 EOF ); #------------------------------------------------------------ $group->add_test( name => 'comment_in_call2', description => 'make a comp call with content with a commented line', component => <<'EOF', <&| .show_content, foo => 1, # bar => 2, &>\ This is the content\ <%def .show_content>\ <% $m->content %>\ EOF expect => <<'EOF', This is the content EOF ); #------------------------------------------------------------ $group->add_test( name => 'call_starts_with_newline', description => 'make a comp call where the tag starts with a newline', component => <<'EOF', <& .foo, x => 1 &>\ <%def .foo>\ x is <% $ARGS{x} %> EOF expect => <<'EOF', x is 1 EOF ); #------------------------------------------------------------ $group->add_test( name => 'cleanup_init', description => 'test that cleanup block has access to variables from init section', component => <<'EOF', <%init> my $x = 7; <%cleanup> $m->print("x is $x"); EOF expect => <<'EOF', x is 7 EOF ); #------------------------------------------------------------ $group->add_test( name => 'cleanup_perl', description => 'test that cleanup block has access to variables from perl section', component => <<'EOF', <%perl> my $x = 7; <%cleanup> $m->print("x is $x"); EOF expect => <<'EOF', x is 7 EOF ); #------------------------------------------------------------ return $group; }