PATH=/usr/bin:/bin:/Users/fly2400/cpanfly-5.24/var/megalib/bin Start 2016-06-12T22:11:04 ActivePerl-2400 CPAN-2.10 Reading '/Users/fly2400/cpanfly-5.24/var/cpan/Metadata' Database was generated on Sun, 12 Jun 2016 05:53:44 GMT Checksum for /Users/fly2400/cpanfly-5.24/var/cpan/sources/authors/id/D/DA/DACAV/App-PFT-v1.0.1.tar.gz ok App-PFT-v1.0.1/ App-PFT-v1.0.1/lib/ App-PFT-v1.0.1/lib/App/ App-PFT-v1.0.1/lib/App/PFT.pm App-PFT-v1.0.1/lib/App/PFT/ App-PFT-v1.0.1/lib/App/PFT/Util.pm App-PFT-v1.0.1/META.yml App-PFT-v1.0.1/COPYING App-PFT-v1.0.1/ignore.txt App-PFT-v1.0.1/Changes App-PFT-v1.0.1/README App-PFT-v1.0.1/share/ App-PFT-v1.0.1/README.md App-PFT-v1.0.1/META.json App-PFT-v1.0.1/MANIFEST App-PFT-v1.0.1/bin/ App-PFT-v1.0.1/bin/pft-clean App-PFT-v1.0.1/bin/pft-ls App-PFT-v1.0.1/bin/pft-pub App-PFT-v1.0.1/bin/pft App-PFT-v1.0.1/bin/pft-show App-PFT-v1.0.1/bin/pft-make App-PFT-v1.0.1/bin/pft-grab App-PFT-v1.0.1/bin/pft-init App-PFT-v1.0.1/Makefile.PL Configuring D/DA/DACAV/App-PFT-v1.0.1.tar.gz with Makefile.PL >>> /Users/fly2400/ap2400-300558/bin/perl-dynamic Makefile.PL Warning: prerequisite PFT v0.5.4 not found. Warning: prerequisite Template::Alloy 0 not found. Checking if your kit is complete... Warning: the following files are missing in your kit: bin/pft-entry share/default.html share/dump_page.html Please inform the author. Invalid LICENSE value 'GNU GPL v3' ignored Invalid LICENSE value 'GNU GPL v3' ignored Generating a Unix-style Makefile Writing Makefile for App::PFT Writing MYMETA.yml and MYMETA.json DACAV/App-PFT-v1.0.1.tar.gz /Users/fly2400/ap2400-300558/bin/perl-dynamic Makefile.PL -- OK Running make for D/DA/DACAV/App-PFT-v1.0.1.tar.gz ---- Unsatisfied dependencies detected during ---- ---- DACAV/App-PFT-v1.0.1.tar.gz ---- PFT [requires] Template::Alloy [requires] Running test for module 'PFT' Checksum for /Users/fly2400/cpanfly-5.24/var/cpan/sources/authors/id/D/DA/DACAV/PFT-v1.0.0.tar.gz ok PFT-v1.0.0/ PFT-v1.0.0/lib/ PFT-v1.0.0/lib/PFT.pm PFT-v1.0.0/lib/PFT/ PFT-v1.0.0/lib/PFT/Content.pm PFT-v1.0.0/lib/PFT/Map/ PFT-v1.0.0/lib/PFT/Map/Index.pm PFT-v1.0.0/lib/PFT/Map/Node.pm PFT-v1.0.0/lib/PFT/Date.pm PFT-v1.0.0/lib/PFT/Text.pm PFT-v1.0.0/lib/PFT/Header.pm PFT-v1.0.0/lib/PFT/Util.pm PFT-v1.0.0/lib/PFT/Content/ PFT-v1.0.0/lib/PFT/Content/Blog.pm PFT-v1.0.0/lib/PFT/Content/Page.pm PFT-v1.0.0/lib/PFT/Content/Entry.pm PFT-v1.0.0/lib/PFT/Content/Month.pm PFT-v1.0.0/lib/PFT/Content/Attachment.pm PFT-v1.0.0/lib/PFT/Content/Blob.pm PFT-v1.0.0/lib/PFT/Content/Picture.pm PFT-v1.0.0/lib/PFT/Content/Base.pm PFT-v1.0.0/lib/PFT/Content/File.pm PFT-v1.0.0/lib/PFT/Content/Tag.pm PFT-v1.0.0/lib/PFT/Conf.pm PFT-v1.0.0/lib/PFT/Text/ PFT-v1.0.0/lib/PFT/Text/Symbol.pm PFT-v1.0.0/lib/PFT/Map.pm PFT-v1.0.0/lib/PFT/Tree.pm PFT-v1.0.0/LICENSE PFT-v1.0.0/META.yml PFT-v1.0.0/COPYING PFT-v1.0.0/ignore.txt PFT-v1.0.0/t/ PFT-v1.0.0/t/check-conf.t PFT-v1.0.0/t/pod.t PFT-v1.0.0/t/check-date.t PFT-v1.0.0/t/00-load.t PFT-v1.0.0/t/check-header.t PFT-v1.0.0/t/check-files.t PFT-v1.0.0/t/pod-coverage.t PFT-v1.0.0/t/manifest.t PFT-v1.0.0/t/check-tree.t PFT-v1.0.0/t/check-text.t PFT-v1.0.0/t/check-map.t PFT-v1.0.0/t/check-contenttree.t PFT-v1.0.0/Changes PFT-v1.0.0/README PFT-v1.0.0/README.md PFT-v1.0.0/META.json PFT-v1.0.0/MANIFEST PFT-v1.0.0/Makefile.PL Configuring D/DA/DACAV/PFT-v1.0.0.tar.gz with Makefile.PL >>> /Users/fly2400/ap2400-300558/bin/perl-dynamic Makefile.PL Checking if your kit is complete... Warning: the following files are missing in your kit: lib/PFT/Map lib/PFT/Map/Resolver.pm t/check-backend.t Please inform the author. Invalid LICENSE value 'GNU GPL v3' ignored Invalid LICENSE value 'GNU GPL v3' ignored Generating a Unix-style Makefile Writing Makefile for PFT Writing MYMETA.yml and MYMETA.json DACAV/PFT-v1.0.0.tar.gz /Users/fly2400/ap2400-300558/bin/perl-dynamic Makefile.PL -- OK Running make for D/DA/DACAV/PFT-v1.0.0.tar.gz >>> make cp lib/PFT/Text.pm blib/lib/PFT/Text.pm cp lib/PFT/Util.pm blib/lib/PFT/Util.pm cp lib/PFT.pm blib/lib/PFT.pm cp lib/PFT/Tree.pm blib/lib/PFT/Tree.pm cp lib/PFT/Content/Base.pm blib/lib/PFT/Content/Base.pm cp lib/PFT/Content/Attachment.pm blib/lib/PFT/Content/Attachment.pm cp lib/PFT/Header.pm blib/lib/PFT/Header.pm cp lib/PFT/Text/Symbol.pm blib/lib/PFT/Text/Symbol.pm cp lib/PFT/Map/Index.pm blib/lib/PFT/Map/Index.pm cp lib/PFT/Content/Blob.pm blib/lib/PFT/Content/Blob.pm cp lib/PFT/Content.pm blib/lib/PFT/Content.pm cp lib/PFT/Conf.pm blib/lib/PFT/Conf.pm cp lib/PFT/Map.pm blib/lib/PFT/Map.pm cp lib/PFT/Content/Picture.pm blib/lib/PFT/Content/Picture.pm cp lib/PFT/Content/Tag.pm blib/lib/PFT/Content/Tag.pm cp lib/PFT/Content/Page.pm blib/lib/PFT/Content/Page.pm cp lib/PFT/Map/Node.pm blib/lib/PFT/Map/Node.pm cp lib/PFT/Content/Entry.pm blib/lib/PFT/Content/Entry.pm cp lib/PFT/Content/File.pm blib/lib/PFT/Content/File.pm cp lib/PFT/Content/Blog.pm blib/lib/PFT/Content/Blog.pm cp lib/PFT/Content/Month.pm blib/lib/PFT/Content/Month.pm cp lib/PFT/Date.pm blib/lib/PFT/Date.pm Manifying 21 pod documents DACAV/PFT-v1.0.0.tar.gz make -- OK Running make test >>> make test TEST_VERBOSE=1 PERL_DL_NONLAZY=1 "/Users/fly2400/ap2400-300558/bin/perl-dynamic" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib/lib', 'blib/arch')" t/*.t # Testing PFT v1.0.0, Perl 5.024000, /Users/fly2400/ap2400-300558/bin/perl-dynamic t/00-load.t ............ ok 1 - use PFT; 1..1 ok # Conf file dump: # > --- # > publish: # > host: example.org # > method: rsync+ssh # > path: /home/fly2400/public_html # > port: 22 # > user: fly2400 # > site: # > author: fly2400 # > encoding: US-ASCII # > home: Welcome # > template: default.html # > title: 'My PFT website' # > url: http://example.org # > system: # > browser: 'firefox %s' # > editor: 'vim %s' # End # Failed test 'Load+locate works fine' # at t/check-conf.t line 97. # got: 'PFT::Conf[ /private/tmp/6i9rbIaExL ]' # expected: 'PFT::Conf[ /tmp/6i9rbIaExL ]' # Looks like you failed 1 test of 12. t/check-conf.t ......... 1..12 ok 1 - Hashify works ok 2 - Broken spec ok 3 - Error message is sound ok 4 - Broken spec ok 5 - Error message is sound ok 6 - Missing check ok 7 - Error message is sound ok 8 - Find dir failure ok 9 - Find cwd failure ok 10 - Find dir success ok 11 - Load works fine not ok 12 - Load+locate works fine Dubious, test returned 1 (wstat 256, 0x100) Failed 1/12 subtests "\x{2665}" does not map to ascii at /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/PFT-v1.0.0-qCOe7i/blib/lib/PFT/Content.pm line 139. "\x{263a}" does not map to ascii at /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/PFT-v1.0.0-qCOe7i/blib/lib/PFT/Content.pm line 139. "\x{00f6}" does not map to ascii at /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/PFT-v1.0.0-qCOe7i/blib/lib/PFT/Content.pm line 139. "\x{00f6}" does not map to ascii at /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/PFT-v1.0.0-qCOe7i/blib/lib/PFT/Content.pm line 139. "\x{00b2}" does not map to ascii at /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/PFT-v1.0.0-qCOe7i/blib/lib/PFT/Content.pm line 139. "\x{263a}" does not map to ascii at /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/PFT-v1.0.0-qCOe7i/blib/lib/PFT/Content.pm line 139. t/check-contenttree.t .. ok 1 - Path-to-date ok 2 - Path-to-date, no date ok 3 - Path-to-slug 1 ok 4 - Path-to-slug 2 ok 5 - Original path ok 6 - Not original path ok 7 - Actually moved ok 8 - New path 1..8 ok t/check-date.t ......... ok 1 - Complete 1 ok 2 - Complete 2 ok 3 - Complete 3 ok 4 - Complete 5 ok 5 - Complete 4 ok 6 - represented ok 7 - hash ok 8 - derive ok 9 - derive ok 10 - derive ok 11 - human-friendly ok 12 - repr from string ok 13 - parse error ok 14 - Date cmp y ok 15 - Date cmp m ok 16 - Date cmp d ok 17 - Date cmp > ok 18 - Date cmp y= ok 19 - Date cmp m= ok 20 - Date cmp d= ok 21 - Date cmp >= ok 22 - Date cmp incomplete 1 ok 23 - Date cmp incomplete 2 ok 24 - Date cmp incomplete 3 1..24 ok t/check-files.t ........ ok 1 - Default name ok 2 - Empty file has no header ok 3 - But also no error ok 4 - Read goes undef 1 ok 5 - Read goes undef 2 ok 6 - Arbitrary text has no header ok 7 - Error instead ok 8 - Error also if reading ok 9 - Placing header ok 10 - One line read ok 11 - Line is correct ok 12 - Header was placed 1..12 ok "\x{00e3}" does not map to ascii at t/check-header.t line 29. "\x{00c3}" does not map to ascii at t/check-header.t line 29. "\x{00a5}" does not map to ascii at t/check-header.t line 29. # Failed test 'dump and reload, no date' # at t/check-header.t line 35. # Structures begin differing at: # $got->{title} = 'R\x{00c3}\x{00a5}dmansgatan' # $expected->{title} = 'RĂ„dmansgatan' "\x{00e3}" does not map to ascii at t/check-header.t line 29. "\x{00c3}" does not map to ascii at t/check-header.t line 29. "\x{00a5}" does not map to ascii at t/check-header.t line 29. # Failed test 'dump and reload, 2014-12-16' # at t/check-header.t line 35. # Structures begin differing at: # $got->{slug} = 'r-x-00e3-dmansgatan' # $expected->{slug} = 'ră-dmansgatan' # date parameter must be PFT::Date at /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/PFT-v1.0.0-qCOe7i/blib/lib/PFT/Header.pm line 95. # PFT::Header::_params_check(HASH(0x7f84c0c2e8c0)) called at /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/PFT-v1.0.0-qCOe7i/blib/lib/PFT/Header.pm line 141 # PFT::Header::new("PFT::Header", "title", "X", "date", 0) called at t/check-header.t line 38 # eval {...} called at t/check-header.t line 38 # Title is mandatory headers having complete date at t/check-header.t line 44. # Year and month are mandatory for headers with date at t/check-header.t line 55. "\x{00e3}" does not map to ascii at t/check-header.t line 68. "\x{00c3}" does not map to ascii at t/check-header.t line 68. "\x{00a5}" does not map to ascii at t/check-header.t line 68. # Failed test 'reload from path' # at t/check-header.t line 70. # Structures begin differing at: # $got->{title} = 'R\x{00c3}\x{00a5}dmansgatan' # $expected->{title} = 'RĂ„dmansgatan' # Looks like you failed 3 tests of 14. t/check-header.t ....... ok 1 - text is ok not ok 2 - dump and reload, no date ok 3 - text is ok not ok 4 - dump and reload, 2014-12-16 ok 5 - broken because... ok 6 - date must be PFT::Date ok 7 - broken because... ok 8 - full date but no title ok 9 - not broken because day is missing ok 10 - broken because... ok 11 - date missing year or month not ok 12 - reload from path ok 13 - Full tags ok 14 - Slug tags 1..14 Dubious, test returned 3 (wstat 768, 0x300) Failed 3/14 subtests "\x{00b9}" does not map to ascii at /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/PFT-v1.0.0-qCOe7i/blib/lib/PFT/Content.pm line 139. "\x{2190}" does not map to ascii at t/check-map.t line 46. "\x{2192}" does not map to ascii at t/check-map.t line 46. "\x{2665}" does not map to ascii at t/check-map.t line 46. "\x{00b2}" does not map to ascii at /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/PFT-v1.0.0-qCOe7i/blib/lib/PFT/Content.pm line 139. # Listing missing symbols: # missing pic, reason undef # missing pic, reason undef # missing attach, reason undef # Failed test 'Missing symbols differ' # at t/check-map.t line 105. Wide character in print at /Users/fly2400/cpanfly-5.24/var/megalib/Test2/Formatter/TAP.pm line 104. # Structures begin differing at: # $got->[0] = 'pic|baz|foo\x{2190}bar.png' # $expected->[0] = 'pic|baz|bar→foo.png' # Looks like you failed 1 test of 21. t/check-map.t .......... 1..21 ok 1 - All content is present not ok 2 - Missing symbols differ ok 3 - Next refers Prev for 2 ok 4 - Down refers up for 2 ok 5 - Next refers Prev for 3 ok 6 - Prev refers Next for 3 ok 7 - Down refers up for 3 ok 8 - Next refers Prev for 4 ok 9 - Prev refers Next for 4 ok 10 - Down refers up for 4 ok 11 - Next refers Prev for 5 ok 12 - Prev refers Next for 5 ok 13 - Down refers up for 5 ok 14 - Prev refers Next for 6 ok 15 - Down refers up for 6 ok 16 - Next refers Prev for 7 ok 17 - Down refers up for 7 ok 18 - Prev refers Next for 8 ok 19 - Down refers up for 8 ok 20 - Taggee refers to tag 9 ok 21 - Taggee refers to tag 10 Dubious, test returned 1 (wstat 256, 0x100) Failed 1/21 subtests # Found foo(bar, baz) # at start 143 len 12 # pft link # ----------^..........^ # Found truestory() # at start 257 len 11 # pft link # ----------^.........^ # Found pics(best, kitten.png) # at start 322 len 21 # pic
#    ----------^...................^
# Found pics(best, horse.png)
#    at start 372 len 20
#    <img src=$Multili # ----------^.^ # Found y(a, b, c) # at start 666 len 8 #

$$< # ----------^......^ # Found w(b) # at start 730 len 4 # $
No slash # ----------^..^ t/check-text.t ......... ok 1 - Symbols are Correct ok 2 - Symbols are Complete 1..2 ok # Cannot find tree in /tmp/XyvCjg7v2v at t/check-tree.t line 17. # Empty string should follow: # Failed test 'Retrieve existing tree from subdir' # at t/check-tree.t line 25. # Structures begin differing at: # $got->{root} = '/private/tmp/XyvCjg7v2v' # $expected->{root} = '/tmp/XyvCjg7v2v' # Looks like you failed 1 test of 6. t/check-tree.t ......... ok 1 - Error unless created ok 2 - Value set for $@ (follows) ok 3 - Ok with create not ok 4 - Retrieve existing tree from subdir ok 5 - Nested double creation error ok 6 - Error is sound 1..6 Dubious, test returned 1 (wstat 256, 0x100) Failed 1/6 subtests t/manifest.t ........... skipped: Author tests not required for installation t/pod-coverage.t ....... skipped: Author tests not required for installation t/pod.t ................ skipped: Author tests not required for installation Test Summary Report ------------------- t/check-conf.t (Wstat: 256 Tests: 12 Failed: 1) Failed test: 12 Non-zero exit status: 1 t/check-header.t (Wstat: 768 Tests: 14 Failed: 3) Failed tests: 2, 4, 12 Non-zero exit status: 3 t/check-map.t (Wstat: 256 Tests: 21 Failed: 1) Failed test: 2 Non-zero exit status: 1 t/check-tree.t (Wstat: 256 Tests: 6 Failed: 1) Failed test: 4 Non-zero exit status: 1 Files=12, Tests=100, 2 wallclock secs ( 0.06 usr 0.02 sys + 1.07 cusr 0.18 csys = 1.33 CPU) Result: FAIL Failed 4/12 test programs. 6/100 subtests failed. make: *** [test_dynamic] Error 255 DACAV/PFT-v1.0.0.tar.gz make test TEST_VERBOSE=1 -- NOT OK //hint// to see the cpan-testers results for installing this module, try: reports DACAV/PFT-v1.0.0.tar.gz Running test for module 'Template::Alloy' Fetching with LWP: http://ppm.activestate.com/CPAN/authors/id/R/RH/RHANDOM/Template-Alloy-1.020.tar.gz Checksum for /Users/fly2400/cpanfly-5.24/var/cpan/sources/authors/id/R/RH/RHANDOM/Template-Alloy-1.020.tar.gz ok Template-Alloy-1.020/ Template-Alloy-1.020/Changes Template-Alloy-1.020/META.yml Template-Alloy-1.020/lib/ Template-Alloy-1.020/lib/Template/ Template-Alloy-1.020/lib/Template/Alloy/ Template-Alloy-1.020/lib/Template/Alloy/Tmpl.pm Template-Alloy-1.020/lib/Template/Alloy/Velocity.pm Template-Alloy-1.020/lib/Template/Alloy/Exception.pm Template-Alloy-1.020/lib/Template/Alloy/Compile.pm Template-Alloy-1.020/lib/Template/Alloy/HTE.pm Template-Alloy-1.020/lib/Template/Alloy/Operator.pm Template-Alloy-1.020/lib/Template/Alloy/Iterator.pm Template-Alloy-1.020/lib/Template/Alloy/Play.pm Template-Alloy-1.020/lib/Template/Alloy/Stream.pm Template-Alloy-1.020/lib/Template/Alloy/VMethod.pm Template-Alloy-1.020/lib/Template/Alloy/Parse.pm Template-Alloy-1.020/lib/Template/Alloy/Context.pm Template-Alloy-1.020/lib/Template/Alloy/TT.pm Template-Alloy-1.020/lib/Template/Alloy.pm Template-Alloy-1.020/lib/Template/Alloy.pod Template-Alloy-1.020/META.json Template-Alloy-1.020/samples/ Template-Alloy-1.020/samples/dprof_template.d Template-Alloy-1.020/samples/memory_template.pl Template-Alloy-1.020/samples/benchmark/ Template-Alloy-1.020/samples/benchmark/bench_method_calling.pl Template-Alloy-1.020/samples/benchmark/bench_optree.pl Template-Alloy-1.020/samples/benchmark/bench_operator_storage.pl Template-Alloy-1.020/samples/benchmark/bench_template_tag_parser.pl Template-Alloy-1.020/samples/benchmark/bench_various_templaters.pl Template-Alloy-1.020/samples/benchmark/bench_template.pl Template-Alloy-1.020/README Template-Alloy-1.020/t/ Template-Alloy-1.020/t/25_text_tmp.t Template-Alloy-1.020/t/01_coverage.t Template-Alloy-1.020/t/00_use.t Template-Alloy-1.020/t/15_tt_view.t Template-Alloy-1.020/t/02_cache.t Template-Alloy-1.020/t/11_tt_input_output.t Template-Alloy-1.020/t/05_tt_base.t Template-Alloy-1.020/t/30_velocity.t Template-Alloy-1.020/t/20_html_template.t Template-Alloy-1.020/t/10_tt_includes.t Template-Alloy-1.020/MANIFEST.SKIP Template-Alloy-1.020/Makefile.PL Template-Alloy-1.020/MANIFEST Configuring R/RH/RHANDOM/Template-Alloy-1.020.tar.gz with Makefile.PL >>> /Users/fly2400/ap2400-300558/bin/perl-dynamic Makefile.PL Checking if your kit is complete... Looks good Generating a Unix-style Makefile Writing Makefile for Template::Alloy Writing MYMETA.yml and MYMETA.json RHANDOM/Template-Alloy-1.020.tar.gz /Users/fly2400/ap2400-300558/bin/perl-dynamic Makefile.PL -- OK Running make for R/RH/RHANDOM/Template-Alloy-1.020.tar.gz >>> make cp lib/Template/Alloy/Iterator.pm blib/lib/Template/Alloy/Iterator.pm cp lib/Template/Alloy.pm blib/lib/Template/Alloy.pm cp lib/Template/Alloy/Compile.pm blib/lib/Template/Alloy/Compile.pm cp lib/Template/Alloy.pod blib/lib/Template/Alloy.pod cp lib/Template/Alloy/TT.pm blib/lib/Template/Alloy/TT.pm cp lib/Template/Alloy/Exception.pm blib/lib/Template/Alloy/Exception.pm cp lib/Template/Alloy/Parse.pm blib/lib/Template/Alloy/Parse.pm cp lib/Template/Alloy/HTE.pm blib/lib/Template/Alloy/HTE.pm cp lib/Template/Alloy/VMethod.pm blib/lib/Template/Alloy/VMethod.pm cp lib/Template/Alloy/Operator.pm blib/lib/Template/Alloy/Operator.pm cp lib/Template/Alloy/Velocity.pm blib/lib/Template/Alloy/Velocity.pm cp lib/Template/Alloy/Tmpl.pm blib/lib/Template/Alloy/Tmpl.pm cp lib/Template/Alloy/Play.pm blib/lib/Template/Alloy/Play.pm cp lib/Template/Alloy/Stream.pm blib/lib/Template/Alloy/Stream.pm cp lib/Template/Alloy/Context.pm blib/lib/Template/Alloy/Context.pm Manifying 14 pod documents RHANDOM/Template-Alloy-1.020.tar.gz make -- OK Running make test >>> make test TEST_VERBOSE=1 PERL_DL_NONLAZY=1 "/Users/fly2400/ap2400-300558/bin/perl-dynamic" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 'blib/lib', 'blib/arch')" t/*.t t/00_use.t .............. 1..43 ok 1 - use Template::Alloy; ok 2 - Parse role isn't loaded yet ok 3 - But it can parse anyway ok 4 - Parse role is now loaded ok 5 - Can't import invalid method ok 6 - Play role isn't loaded yet ok 7 - It can be imported () ok 8 - Play role is now loaded ok 9 - Compile role isn't loaded yet ok 10 - It can be imported () ok 11 - Compile role is now loaded ok 12 - It can be imported twice () ok 13 - Velocity role isn't loaded yet ok 14 - It can be imported () ok 15 - Velocity role is now loaded ok 16 - Tmpl role isn't loaded yet ok 17 - It can be imported () ok 18 - Tmpl role is now loaded ok 19 - Text::Tmpl isn't loaded ok 20 - It can be imported () ok 21 - Text::Tmpl is now loaded ok 22 - Text::Tmpl is a Template::Alloy ok 23 - It can be imported twice ok 24 - HTML::Template isn't loaded ok 25 - It can't be imported because another non-Alloy package already is using it ok 26 - HTML::Template is not a Template::Alloy ok 27 - HTML::Template::Expr isn't loaded ok 28 - It can be imported () ok 29 - HTML::Template::Expr is now loaded ok 30 - HTML::Template::Expr is a Template::Alloy ok 31 - It can be imported twice ok 32 - TT role isn't loaded yet ok 33 - It can be imported via all () ok 34 - TT role is now loaded ok 35 - It can be imported twice () ok 36 - Template isn't loaded ok 37 - It can be imported () ok 38 - Template is now loaded ok 39 - Template is a Template::Alloy ok 40 - It can be imported twice ok 41 - Got an error on invalid methods (Can't locate object method "flabbergast" via package at t/00_use.t line 82. # ) ok 42 - Got an error on invalid methods (autoload error - Invalid method Template::Alloy::) ok 43 - Got an error on invalid methods (autoload error - Invalid method Template::Alloy::foo&bar) ok t/01_coverage.t ......... 1..31 ok 1 - use Template::Alloy; ok 2 - Initialize with hashref and get hashref based object ok 3 - Initialize with hash and get hashref based object ok 4 - Got an error for process_simple ok 5 - Got an error for process_simple ok 6 - Got an error for process_simple ok 7 - Ran process_simple without error ok 8 - Ran process_simple and threw error ok 9 - And got error ok 10 - Got right output ok 11 - Ran process_simple and stopped ok 12 - And got no error ok 13 - Got right output ok 14 - Ran _process ok 15 - And got error ok 16 - Got right output ok 17 - Ran _process and got error ok 18 - Ran _process ok 19 - And got error ok 20 - Got right output ok 21 - Ran _process (file error - foobar: not found) ok 22 - Ran _process (process error - No _perl and no _tree found) ok 23 - Ran _process ok 24 - Can't load_template without a file ok 25 - load_template assumes we know what we are doing if we pass a hash ok 26 - Can load a string block ok 27 - Can load a code block ok 28 - Can load a previously loaded template ok 29 - Can't load a poorly formed block ok 30 - Can't load a string block with parse errors ok 31 - Can't load a ref block ok t/02_cache.t ............ 1..205 ok 1 - use Template::Alloy; ok 2 - Got a test dir up and running ok 3 - Got a test dir up and running ok 4 - Line 137: Found bar.tt in t/02_cache.t.test_dir ok 5 - Line 138: Didn't find bar.tt in t/02_cache.t.test_dir2 ok 6 - Line 139: Didn't find bar.tt.sto in t/02_cache.t.test_dir ok 7 - Line 140: Didn't find t/02_cache.t.test_dir/bar.tt.sto in t/02_cache.t.test_dir2 ok 8 - Line 141: Didn't find bar.tt.pl in t/02_cache.t.test_dir ok 9 - Line 142: Didn't find t/02_cache.t.test_dir/bar.tt.pl in t/02_cache.t.test_dir2 ok 10 - Not in GLOBAL_CACHE ### COMPILE_PERL => 0 ################################################ ok 11 - Line 152 "bar.tt" => "BlueBAR" ok 12 - Line 154: Found bar.tt in t/02_cache.t.test_dir ok 13 - Line 155: Didn't find bar.tt in t/02_cache.t.test_dir2 ok 14 - Line 156: Didn't find bar.tt.sto in t/02_cache.t.test_dir ok 15 - Line 157: Didn't find t/02_cache.t.test_dir/bar.tt.sto in t/02_cache.t.test_dir2 ok 16 - Line 158: Didn't find bar.tt.pl in t/02_cache.t.test_dir ok 17 - Line 159: Didn't find t/02_cache.t.test_dir/bar.tt.pl in t/02_cache.t.test_dir2 ok 18 - Not in GLOBAL_CACHE ok 19 - Line 167 "bar.tt" => "BlueBAR" ok 20 - Line 169: Found bar.tt in t/02_cache.t.test_dir ok 21 - Line 170: Didn't find bar.tt in t/02_cache.t.test_dir2 ok 22 - Line 171: Didn't find bar.tt.sto in t/02_cache.t.test_dir ok 23 - Line 172: Didn't find t/02_cache.t.test_dir/bar.tt.sto in t/02_cache.t.test_dir2 ok 24 - Line 173: Didn't find bar.tt.pl in t/02_cache.t.test_dir ok 25 - Line 174: Didn't find t/02_cache.t.test_dir/bar.tt.pl in t/02_cache.t.test_dir2 ok 26 - Is in GLOBAL_CACHE ok 27 - Line 183 "bar.tt" => "BlueBAR" ok 28 - Is in CACHE ok 29 - Line 190 "bar.tt" => "BlueBAR" ok 30 - Line 192: Found bar.tt in t/02_cache.t.test_dir ok 31 - Line 193: Didn't find bar.tt in t/02_cache.t.test_dir2 ok 32 - Line 194: Found bar.tt.ttc.sto in t/02_cache.t.test_dir ok 33 - Line 195: Didn't find t/02_cache.t.test_dir/bar.tt.ttc.sto in t/02_cache.t.test_dir2 ok 34 - Line 196: Didn't find bar.tt.ttc.pl in t/02_cache.t.test_dir ok 35 - Line 197: Didn't find t/02_cache.t.test_dir/bar.tt.ttc.pl in t/02_cache.t.test_dir2 ok 36 - Line 204 "bar.tt" => "BlueBAR" ok 37 - Line 206: Found bar.tt in t/02_cache.t.test_dir ok 38 - Line 207: Didn't find bar.tt in t/02_cache.t.test_dir2 ok 39 - Line 208: Didn't find bar.tt.sto in t/02_cache.t.test_dir ok 40 - Line 209: Found t/02_cache.t.test_dir/bar.tt.sto in t/02_cache.t.test_dir2 ok 41 - Line 210: Didn't find bar.tt.pl in t/02_cache.t.test_dir ok 42 - Line 211: Didn't find t/02_cache.t.test_dir/bar.tt.pl in t/02_cache.t.test_dir2 ok 43 - Line 218 "bar.tt" => "BlueBAR" ok 44 - Line 220: Found bar.tt in t/02_cache.t.test_dir ok 45 - Line 221: Didn't find bar.tt in t/02_cache.t.test_dir2 ok 46 - Line 222: Didn't find bar.tt.ttc.sto in t/02_cache.t.test_dir ok 47 - Line 223: Found t/02_cache.t.test_dir/bar.tt.ttc.sto in t/02_cache.t.test_dir2 ok 48 - Line 224: Didn't find bar.tt.ttc.pl in t/02_cache.t.test_dir ok 49 - Line 225: Didn't find t/02_cache.t.test_dir/bar.tt.ttc.pl in t/02_cache.t.test_dir2 ok 50 - Is in GLOBAL_CACHE ok 51 - Line 233 "bar.tt" => "BlueBAR" ok 52 - Line 235: Found bar.tt in t/02_cache.t.test_dir ok 53 - Line 236: Didn't find bar.tt in t/02_cache.t.test_dir2 ok 54 - Line 237: Didn't find bar.tt.ttc.sto in t/02_cache.t.test_dir ok 55 - Line 238: Found t/02_cache.t.test_dir/bar.tt.ttc.sto in t/02_cache.t.test_dir2 ok 56 - Line 239: Didn't find bar.tt.ttc.pl in t/02_cache.t.test_dir ok 57 - Line 240: Didn't find t/02_cache.t.test_dir/bar.tt.ttc.pl in t/02_cache.t.test_dir2 ok 58 - Is in GLOBAL_CACHE ok 59 - Doesn't Have perl ok 60 - Line 256 "bar.tt" => "fĂŒBAR „" ok 61 - Line 258: Found bar.tt in t/02_cache.t.test_dir ok 62 - Line 259: Didn't find bar.tt in t/02_cache.t.test_dir2 ok 63 - Line 260: Found bar.tt.ttc.sto in t/02_cache.t.test_dir ok 64 - Line 261: Didn't find bar.tt.ttc.pl in t/02_cache.t.test_dir ok 65 - Line 264 "bar.tt" => "fĂŒBAR „" ok 66 - lives ok ### COMPILE_PERL => 1 ################################################ ok 67 - Line 279 "bar.tt" => "BlueBAR" ok 68 - Line 281: Found bar.tt in t/02_cache.t.test_dir ok 69 - Line 282: Didn't find bar.tt in t/02_cache.t.test_dir2 ok 70 - Line 283: Didn't find bar.tt.sto in t/02_cache.t.test_dir ok 71 - Line 284: Didn't find t/02_cache.t.test_dir/bar.tt.sto in t/02_cache.t.test_dir2 ok 72 - Line 285: Didn't find bar.tt.pl in t/02_cache.t.test_dir ok 73 - Line 286: Didn't find t/02_cache.t.test_dir/bar.tt.pl in t/02_cache.t.test_dir2 ok 74 - Not in GLOBAL_CACHE ok 75 - Line 294 "bar.tt" => "BlueBAR" ok 76 - Line 296: Found bar.tt in t/02_cache.t.test_dir ok 77 - Line 297: Didn't find bar.tt in t/02_cache.t.test_dir2 ok 78 - Line 298: Didn't find bar.tt.sto in t/02_cache.t.test_dir ok 79 - Line 299: Didn't find t/02_cache.t.test_dir/bar.tt.sto in t/02_cache.t.test_dir2 ok 80 - Line 300: Didn't find bar.tt.pl in t/02_cache.t.test_dir ok 81 - Line 301: Didn't find t/02_cache.t.test_dir/bar.tt.pl in t/02_cache.t.test_dir2 ok 82 - Is in GLOBAL_CACHE ok 83 - Line 309 "bar.tt" => "BlueBAR" ok 84 - Line 311: Found bar.tt in t/02_cache.t.test_dir ok 85 - Line 312: Didn't find bar.tt in t/02_cache.t.test_dir2 ok 86 - Line 313: Found bar.tt.ttc.sto in t/02_cache.t.test_dir ok 87 - Line 314: Didn't find t/02_cache.t.test_dir/bar.tt.ttc.sto in t/02_cache.t.test_dir2 ok 88 - Line 315: Found bar.tt.ttc.pl in t/02_cache.t.test_dir ok 89 - Line 316: Didn't find t/02_cache.t.test_dir/bar.tt.ttc.pl in t/02_cache.t.test_dir2 ok 90 - Line 323 "bar.tt" => "BlueBAR" ok 91 - Line 325: Found bar.tt in t/02_cache.t.test_dir ok 92 - Line 326: Didn't find bar.tt in t/02_cache.t.test_dir2 ok 93 - Line 327: Didn't find bar.tt.sto in t/02_cache.t.test_dir ok 94 - Line 328: Found t/02_cache.t.test_dir/bar.tt.sto in t/02_cache.t.test_dir2 ok 95 - Line 329: Didn't find bar.tt.pl in t/02_cache.t.test_dir ok 96 - Line 330: Found t/02_cache.t.test_dir/bar.tt.pl in t/02_cache.t.test_dir2 ok 97 - Line 337 "bar.tt" => "BlueBAR" ok 98 - Line 339: Found bar.tt in t/02_cache.t.test_dir ok 99 - Line 340: Didn't find bar.tt in t/02_cache.t.test_dir2 ok 100 - Line 341: Didn't find bar.tt.ttc.sto in t/02_cache.t.test_dir ok 101 - Line 342: Found t/02_cache.t.test_dir/bar.tt.ttc.sto in t/02_cache.t.test_dir2 ok 102 - Line 343: Didn't find bar.tt.ttc.pl in t/02_cache.t.test_dir ok 103 - Line 344: Found t/02_cache.t.test_dir/bar.tt.ttc.pl in t/02_cache.t.test_dir2 ok 104 - Is in GLOBAL_CACHE ok 105 - Line 352 "bar.tt" => "BlueBAR" ok 106 - Line 354: Found bar.tt in t/02_cache.t.test_dir ok 107 - Line 355: Didn't find bar.tt in t/02_cache.t.test_dir2 ok 108 - Line 356: Didn't find bar.tt.ttc.sto in t/02_cache.t.test_dir ok 109 - Line 357: Found t/02_cache.t.test_dir/bar.tt.ttc.sto in t/02_cache.t.test_dir2 ok 110 - Line 358: Didn't find bar.tt.ttc.pl in t/02_cache.t.test_dir ok 111 - Line 359: Found t/02_cache.t.test_dir/bar.tt.ttc.pl in t/02_cache.t.test_dir2 ok 112 - Is in GLOBAL_CACHE ok 113 - Has perl ok 114 - Line 375 "bar.tt" => "fĂŒBAR „" ok 115 - Line 377: Found bar.tt in t/02_cache.t.test_dir ok 116 - Line 378: Didn't find bar.tt in t/02_cache.t.test_dir2 ok 117 - Line 379: Found bar.tt.ttc.sto in t/02_cache.t.test_dir ok 118 - Line 380: Found bar.tt.ttc.pl in t/02_cache.t.test_dir ok 119 - Line 383 "bar.tt" => "fĂŒBAR „" ### COMPILE_PERL => 2 ################################################ ok 120 - Line 391 "bar.tt" => "BlueBAR" ok 121 - Line 393: Found bar.tt in t/02_cache.t.test_dir ok 122 - Line 394: Didn't find bar.tt in t/02_cache.t.test_dir2 ok 123 - Line 395: Found bar.tt.ttc.sto in t/02_cache.t.test_dir ok 124 - Line 396: Didn't find bar.tt.ttc.pl in t/02_cache.t.test_dir ok 125 - Is in GLOBAL_CACHE ok 126 - Doesn't Have perl ok 127 - Line 401 "bar.tt" => "BlueBAR" ok 128 - Line 403: Found bar.tt in t/02_cache.t.test_dir ok 129 - Line 404: Didn't find bar.tt in t/02_cache.t.test_dir2 ok 130 - Line 405: Found bar.tt.ttc.sto in t/02_cache.t.test_dir ok 131 - Line 406: Found bar.tt.ttc.pl in t/02_cache.t.test_dir ok 132 - Is in GLOBAL_CACHE ok 133 - Has perl ### STRING_REF ####################################################### ok 134 - Line 419 "[% blue %]BAR" => "BlueBAR" ok 135 - Line 421: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir ok 136 - Line 422: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir2 ok 137 - Line 423: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.sto in t/02_cache.t.test_dir ok 138 - Line 424: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.pl in t/02_cache.t.test_dir ok 139 - Not in GLOBAL_CACHE ok 140 - Line 432 "[% blue %]BAR" => "BlueBAR" ok 141 - Line 434: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir ok 142 - Line 435: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir2 ok 143 - Line 436: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.sto in t/02_cache.t.test_dir ok 144 - Line 437: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.pl in t/02_cache.t.test_dir ok 145 - Is in GLOBAL_CACHE ok 146 - Doesn't Have perl ok 147 - Line 446 "[% blue %]BAR" => "BlueBAR" ok 148 - Line 448: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir ok 149 - Line 449: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir2 ok 150 - Line 450: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.sto in t/02_cache.t.test_dir ok 151 - Line 451: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.pl in t/02_cache.t.test_dir ok 152 - Not in GLOBAL_CACHE ok 153 - Line 459 "[% blue %]BAR" => "BlueBAR" ok 154 - Line 461: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir ok 155 - Line 462: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir2 ok 156 - Line 463: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.sto in t/02_cache.t.test_dir ok 157 - Line 464: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.pl in t/02_cache.t.test_dir ok 158 - Not in GLOBAL_CACHE ok 159 - Line 472 "[% blue %]BAR" => "BlueBAR" ok 160 - Line 474: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir ok 161 - Line 475: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir2 ok 162 - Line 476: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.sto in t/02_cache.t.test_dir ok 163 - Line 477: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.pl in t/02_cache.t.test_dir ok 164 - Not in GLOBAL_CACHE ok 165 - Line 485 "[% blue %]BAR" => "BlueBAR" ok 166 - Line 487: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir ok 167 - Line 488: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir2 ok 168 - Line 489: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.sto in t/02_cache.t.test_dir ok 169 - Line 490: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.pl in t/02_cache.t.test_dir ok 170 - Is in GLOBAL_CACHE ok 171 - Has perl ok 172 - Line 499 "[% blue %]BAR" => "BlueBAR" ok 173 - Line 501: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir ok 174 - Line 502: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir2 ok 175 - Line 503: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.sto in t/02_cache.t.test_dir ok 176 - Line 504: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.pl in t/02_cache.t.test_dir ok 177 - Is in GLOBAL_CACHE ok 178 - Doesn't Have perl ok 179 - Line 509 "[% blue %]BAR" => "BlueBAR" ok 180 - Line 511: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir ok 181 - Line 512: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir2 ok 182 - Line 513: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.sto in t/02_cache.t.test_dir ok 183 - Line 514: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.pl in t/02_cache.t.test_dir ok 184 - Is in GLOBAL_CACHE ok 185 - Now has perl ok 186 - Line 523 "[% blue %]BAR" => "BlueBAR" ok 187 - Line 525: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir ok 188 - Line 526: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir2 ok 189 - Line 527: Found Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.sto in t/02_cache.t.test_dir2 ok 190 - Line 528: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.pl in t/02_cache.t.test_dir2 ok 191 - Line 535 "[% blue %]BAR" => "BlueBAR" ok 192 - Line 537: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir ok 193 - Line 538: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir2 ok 194 - Line 539: Found Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.ttc.sto in t/02_cache.t.test_dir ok 195 - Line 540: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.ttc.pl in t/02_cache.t.test_dir ok 196 - Line 547 "[% blue %]BAR" => "BlueBAR" ok 197 - Line 549: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir ok 198 - Line 550: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir2 ok 199 - Line 551: Found Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.sto in t/02_cache.t.test_dir2 ok 200 - Line 552: Found Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.pl in t/02_cache.t.test_dir2 ok 201 - Line 559 "[% blue %]BAR" => "BlueBAR" ok 202 - Line 561: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir ok 203 - Line 562: Didn't find Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758 in t/02_cache.t.test_dir2 ok 204 - Line 563: Found Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.ttc.sto in t/02_cache.t.test_dir ok 205 - Line 564: Found Alloy_str_ref_cache/6f6/6f69285f87853cd193d2cc1231e20758.ttc.pl in t/02_cache.t.test_dir ### DONE ############################################################# ok # testing stderr ... ok # testing stderr ... ok # testing stderr ... ok t/05_tt_base.t .......... 1..3263 ok 1 - use Template::Alloy; ok 2 - Got a test dir up and running ### GET ############################################# engine_option (normal) ok 3 - Line 156 "[% foo %]" => "" ok 4 - Line 157 "[% foo %]" => "7" ok 5 - Line 158 "[% foo %]" => "7" ok 6 - Line 159 "[% foo %]" => "7" ok 7 - Line 160 "[% foo %]" => "Stash" ok 8 - Line 161 "[% foo %]" => "V" ok 9 - Line 162 "[% bar %]" => "" ok 10 - Line 163 "[% foo %]" => "Stash" ok 11 - Line 164 "[% bar %]" => "" ok 12 - Line 165 "[% foo %]" => "Stash" ok 13 - Line 166 "[% foo %]" => "Stash" ok 14 - Line 167 "[% foo %][% foo %][% foo %]" => "777" ok 15 - Line 168 "[% foo() %]" => "7" ok 16 - Line 169 "[% foo.bar %]" => "" ok 17 - Line 170 "[% foo.bar %]" => "" ok 18 - Line 171 "[% foo.bar %]" => "7" ok 19 - Line 172 "[% foo().bar %]" => "7" ok 20 - Line 173 "[% foo.0 %]" => "7" ok 21 - Line 174 "[% foo.10 %]" => "" ok 22 - Line 175 "[% foo %]" => "7" ok 23 - Line 176 "[% foo(7) %]" => "7" ok 24 - Line 177 "[% foo.length %]" => "1" ok 25 - Line 178 "[% foo.0 %]" => "7" ok 26 - Line 179 "[% foo(bar) %]" => "7" ok 27 - Line 180 "[% foo(bar.baz) %]" => "7" ok 28 - Line 181 "[% foo.seven %]" => "7" ok 29 - Line 182 "[% foo.seven() %]" => "7" ok 30 - Line 183 "[% foo.seven.length %]" => "1" ok 31 - Line 184 "[% foo.echo(7) %]" => "7" ok 32 - Line 185 "[% foo.many.0 %]" => "1" ok 33 - Line 186 "[% foo.many.10 %]" => "" ok 34 - Line 187 "[% foo.nomethod %]" => "" ok 35 - Line 188 "[% foo.nomethod.0 %]" => "" ok 36 - Line 190 "[% GET foo %]" => "" ok 37 - Line 191 "[% GET foo %]" => "7" ok 38 - Line 192 "[% GET foo.bar %]" => "" ok 39 - Line 193 "[% GET foo.bar %]" => "" ok 40 - Line 194 "[% GET foo.bar %]" => "7" ok 41 - Line 195 "[% GET foo.0 %]" => "7" ok 42 - Line 196 "[% GET foo %]" => "7" ok 43 - Line 197 "[% GET foo(7) %]" => "7" ok 44 - Line 199 "[% $name %]" => "" ok 45 - Line 200 "[% $name %]" => "7" ok 46 - Line 201 "[% $name.bar %]" => "" ok 47 - Line 202 "[% $name.bar %]" => "" ok 48 - Line 203 "[% $name.bar %]" => "7" ok 49 - Line 204 "[% $name().bar %]" => "7" ok 50 - Line 205 "[% $name.0 %]" => "7" ok 51 - Line 206 "[% $name %]" => "7" ok 52 - Line 207 "[% $name(7) %]" => "7" ok 53 - Line 209 "[% GET $name %]" => "" ok 54 - Line 210 "[% GET $name %]" => "7" ok 55 - Line 211 "[% GET $name.bar %]" => "" ok 56 - Line 212 "[% GET $name.bar %]" => "" ok 57 - Line 213 "[% GET $name.bar %]" => "7" ok 58 - Line 214 "[% GET $name.0 %]" => "7" ok 59 - Line 215 "[% GET $name %]" => "7" ok 60 - Line 216 "[% GET $name(7) %]" => "7" ok 61 - Line 218 "[% $name %]" => "" ok 62 - Line 219 "[% GET $name %]" => "" ok 63 - Line 221 "[% ${name} %]" => "" ok 64 - Line 222 "[% ${name} %]" => "7" ok 65 - Line 223 "[% ${name}.bar %]" => "" ok 66 - Line 224 "[% ${name}.bar %]" => "" ok 67 - Line 225 "[% ${name}.bar %]" => "7" ok 68 - Line 226 "[% ${name}().bar %]" => "7" ok 69 - Line 227 "[% ${name}.0 %]" => "7" ok 70 - Line 228 "[% ${name} %]" => "7" ok 71 - Line 229 "[% ${name}(7) %]" => "7" ok 72 - Line 231 "[% GET ${name} %]" => "" ok 73 - Line 232 "[% GET ${name} %]" => "7" ok 74 - Line 233 "[% GET ${name}.bar %]" => "" ok 75 - Line 234 "[% GET ${name}.bar %]" => "" ok 76 - Line 235 "[% GET ${name}.bar %]" => "7" ok 77 - Line 236 "[% GET ${name}.0 %]" => "7" ok 78 - Line 237 "[% GET ${name} %]" => "7" ok 79 - Line 238 "[% GET ${name}(7) %]" => "7" ok 80 - Line 240 "[% ${name} %]" => "" ok 81 - Line 241 "[% GET ${name} %]" => "" ok 82 - Line 242 "[% GET ${'foo'} %]" => "bar" ok 83 - Line 244 "[% foo.$name %]" => "" ok 84 - Line 245 "[% foo.$name %]" => "7" ok 85 - Line 246 "[% foo.$name.baz %]" => "" ok 86 - Line 248 "[% "hi" %]" => "hi" ok 87 - Line 249 "[% "hi %]" => "" ok 88 - Line 250 "[% 'hi' %]" => "hi" ok 89 - Line 251 "[% 'hi %]" => "" ok 90 - Line 252 "[% "$foo" %]" => "7" ok 91 - Line 253 "[% "hi $foo" %]" => "hi 7" ok 92 - Line 254 "[% "hi ${foo}" %]" => "hi 7" ok 93 - Line 255 "[% 'hi $foo' %]" => "hi $foo" ok 94 - Line 256 "[% 'hi ${foo}' %]" => "hi ${foo}" ok 95 - Line 257 "[% 7 %]" => "7" ok 96 - Line 258 "[% -7 %]" => "-7" ok 97 - Line 260 "[% "hi ${foo.seven}" %]" => "hi 7" ok 98 - Line 261 "[% "hi ${foo.echo(7)}" %]" => "hi 7" ok 99 - Line 263 "[% _foo %]2" => "2" ok 100 - Line 264 "[% $bar %]2" => "2" ok 101 - Line 265 "[% __foo %]2" => "2" ok 102 - Line 267 "[% qw/Foo Bar Baz/.0 %]" => "Foo" ok 103 - Line 268 "[% [0..10].-1 %]" => "10" ok 104 - Line 269 "[% [0..10].${ 2.3 } %]" => "2" ok 105 - Line 271 "[% (1 + 2)() %]" => "" ok 106 - Line 272 "[% (1 + 2) %]" => "3" ok 107 - Line 273 "[% (a) %]" => "2" ok 108 - Line 274 "[% ('foo') %]" => "foo" ok 109 - Line 275 "[% (a(2)) %]" => "2" ok 110 - Line 278 "[% JS 3 %]" => "3" ok 111 - Line 279 "[% JS 3 %]" => "43" ok 112 - Line 280 "[% JS; 3; END %]" => "" ### SET ############################################# engine_option (normal) ok 113 - Line 285 "[% SET foo bar %][% foo %]" => "" ok 114 - Line 286 "[% SET foo = 1 %][% foo %]" => "1" ok 115 - Line 287 "[% SET foo = 1 bar = 2 %][% foo %][% bar %]" => "12" ok 116 - Line 288 "[% SET foo bar = 1 %][% foo %]" => "" ok 117 - Line 289 "[% SET foo = 1 ; bar = 1 %][% foo %]" => "1" ok 118 - Line 290 "[% SET foo = 1 %][% SET foo %][% foo %]" => "" ok 119 - Line 292 "[% SET foo = [] %][% foo.0 %]" => "" ok 120 - Line 293 "[% SET foo = [1, 2, 3] %][% foo.1 %]" => "2" ok 121 - Line 294 "[% SET foo = {} %][% foo.0 %]" => "" ok 122 - Line 295 "[% SET foo = {1 => 2} %][% foo.1 %]" => "2" ok 123 - Line 296 "[% SET foo = {'1' => 2} %][% foo.1 %]" => "2" ok 124 - Line 298 "[% SET name = 1 %][% SET foo = name %][% foo %]" => "1" ok 125 - Line 299 "[% SET name = 1 %][% SET foo = $name %][% foo %]" => "" ok 126 - Line 300 "[% SET name = 1 %][% SET foo = ${name} %][% foo %]" => "" ok 127 - Line 301 "[% SET name = 1 %][% SET foo = "$name" %][% foo %]" => "1" ok 128 - Line 302 "[% SET name = 1 foo = name %][% foo %]" => "1" ok 129 - Line 303 "[% SET name = 1 %][% SET foo = {$name => 2} %][% foo.1 %]" => "2" ok 130 - Line 304 "[% SET name = 1 %][% SET foo = {"$name" => 2} %][% foo.1 %]" => "2" ok 131 - Line 305 "[% SET name = 1 %][% SET foo = {${name} => 2} %][% foo.1 %]" => "2" ok 132 - Line 307 "[% SET name = 7 %][% SET foo = {'2' => name} %][% foo.2 %]" => "7" ok 133 - Line 308 "[% SET name = 7 %][% SET foo = {'2' => "$name"} %][% foo.2 %]" => "7" ok 134 - Line 310 "[% SET name = 7 %][% SET foo = [1, name, 3] %][% foo.1 %]" => "7" ok 135 - Line 311 "[% SET name = 7 %][% SET foo = [1, "$name", 3] %][% foo.1 %]" => "7" ok 136 - Line 313 "[% SET foo = { bar => { baz => [0, 7, 2] } } %][% foo.bar.baz.1 %]" => "7" ok 137 - Line 315 "[% SET foo.bar = 1 %][% foo.bar %]" => "1" ok 138 - Line 316 "[% SET foo.bar.baz.bing = 1 %][% foo.bar.baz.bing %]" => "1" ok 139 - Line 317 "[% SET foo.bar.2 = 1 %][% foo.bar.2 %] [% foo.bar.size %]" => "1 1" ok 140 - Line 318 "[% SET foo.bar = [] %][% SET foo.bar.2 = 1 %][% foo.bar.2 %] [% foo.bar.size %]" => "1 3" ok 141 - Line 320 "[% SET name = 'two' %][% SET $name = 3 %][% two %]" => "3" ok 142 - Line 321 "[% SET name = 'two' %][% SET ${name} = 3 %][% two %]" => "3" ok 143 - Line 322 "[% SET name = 2 %][% SET foo.$name = 3 %][% foo.2 %]" => "3" ok 144 - Line 323 "[% SET name = 2 %][% SET foo.$name = 3 %][% foo.$name %]" => "3" ok 145 - Line 324 "[% SET name = 2 %][% SET foo.${name} = 3 %][% foo.2 %]" => "3" ok 146 - Line 325 "[% SET name = 2 %][% SET foo.${name} = 3 %][% foo.2 %]" => "3" ok 147 - Line 326 "[% SET name = 'two' %][% SET $name.foo = 3 %][% two.foo %]" => "3" ok 148 - Line 327 "[% SET name = 'two' %][% SET ${name}.foo = 3 %][% two.foo %]" => "3" ok 149 - Line 328 "[% SET name = 'two' %][% SET foo.$name.foo = 3 %][% foo.two.foo %]" => "3" ok 150 - Line 329 "[% SET name = 'two' %][% SET foo.${name}.foo = 3 %][% foo.two.foo %]" => "3" ok 151 - Line 331 "[% SET foo = [1..10] %][% foo.6 %]" => "7" ok 152 - Line 332 "[% SET foo = [10..1] %][% foo.6 %]" => "" ok 153 - Line 333 "[% SET foo = [-10..-1] %][% foo.6 %]" => "-4" ok 154 - Line 334 "[% SET foo = [1..10, 21..30] %][% foo.12 %]" => "23" ok 155 - Line 335 "[% SET foo = [..100] bar = 7 %][% bar %][% foo.0 %]" => "" ok 156 - Line 336 "[% SET foo = [100..] bar = 7 %][% bar %][% foo.0 %]" => "" ok 157 - Line 337 "[% SET foo = ['a'..'z'] %][% foo.6 %]" => "g" ok 158 - Line 338 "[% SET foo = ['z'..'a'] %][% foo.6 %]" => "" ok 159 - Line 339 "[% SET foo = ['a'..'z'].reverse %][% foo.6 %]" => "t" ok 160 - Line 341 "[% foo = 1 %][% foo %]" => "1" ok 161 - Line 342 "[% foo = 1 ; bar = 2 %][% foo %][% bar %]" => "12" ok 162 - Line 343 "[% foo.bar = 2 %][% foo.bar %]" => "2" ok 163 - Line 345 "[% a = "a" %]|[% (b = a) %]|[% a %]|[% b %]" => "|a|a|a" ok 164 - Line 346 "[% a = "a" %][% (c = (b = a)) %][% a %][% b %][% c %]" => "aaaa" ok 165 - Line 348 "[% a = qw{Foo Bar Baz} ; a.2 %]" => "Baz" ok 166 - Line 350 "[% _foo = 1 %][% _foo %]2" => "2" ok 167 - Line 351 "[% foo._bar %]2" => "2" ### multiple statements in same tag ################# engine_option (normal) ok 168 - Line 356 "[% foo; %]" => "1" ok 169 - Line 357 "[% GET foo; %]" => "1" ok 170 - Line 358 "[% GET foo; GET foo %]" => "11" ok 171 - Line 359 "[% GET foo GET foo %]" => "11" ok 172 - Line 360 "[% GET foo GET foo %]" => "" ok 173 - Line 362 "[% foo = 1 bar = 2 %][% foo %][% bar %]" => "12" ok 174 - Line 363 "[% foo = 1 bar = 2 %][% foo = 3 bar %][% foo %][% bar %]" => "232" ok 175 - Line 364 "[% a = 1 a = a + 2 a %]" => "3" ok 176 - Line 366 "[% foo = 1 bar = 2 %][% foo %][% bar %]" => "" ok 177 - Line 367 "[% foo = 1 bar = 2 %][% foo = 3 bar %][% foo %][% bar %]" => "" ok 178 - Line 368 "[% a = 1 a = a + 2 a %]" => "" ### CALL / DEFAULT ################################## engine_option (normal) ok 179 - Line 374 "[% DEFAULT foo = 7 %][% foo %]" => "7" ok 180 - Line 375 "[% SET foo = 5 %][% DEFAULT foo = 7 %][% foo %]" => "5" ok 181 - Line 376 "[% DEFAULT foo.bar.baz.bing = 6 %][% foo.bar.baz.bing %]" => "6" ok 182 - Line 379 "[% foo %]" => "hi" ok 183 - Line 380 "[% GET foo %]" => "hi" ok 184 - Line 381 "[% CALL foo %]" => "" ok 185 - CALL method actually called var ### scalar vmethods ################################# engine_option (normal) ok 186 - Line 388 "[% n.0 %]" => "7" ok 187 - Line 389 "[% n.abs %]" => "7" ok 188 - Line 390 "[% n.abs %]" => "7" ok 189 - Line 391 "[% n.atan2.substr(0, 6) %]" => "1.5707" ok 190 - Line 392 "[% (4 * n.atan2(1)).substr(0, 7) %]" => "3.14159" ok 191 - Line 393 "[% n.chunk(3).join %]" => "abc def g" ok 192 - Line 394 "[% n.chunk(-3).join %]" => "a bcd efg" ok 193 - Line 395 "[% n|collapse %]" => "a b" ok 194 - Line 396 "[% n.cos.substr(0,5) %]" => "1" ok 195 - Line 397 "[% n.cos.substr(0,5) %]" => "0.707" ok 196 - Line 398 "[% n.defined %]" => "1" ok 197 - Line 399 "[% n.defined %]" => "" ok 198 - Line 400 "[% n.defined %]" => "1" ok 199 - Line 401 "[% n.dquote %]" => "(\n|\\|\")" ok 200 - Line 402 "[% n.exp.substr(0,5) %]" => "2.718" ok 201 - Line 403 "[% n.exp.log.substr(0,5) %]" => "8" ok 202 - Line 404 "[% n.fmt %]" => "7" ok 203 - Line 405 "[% n.fmt('%02d') %]" => "07" ok 204 - Line 406 "[% n.fmt('%0*d', 3) %]" => "007" ok 205 - Line 407 "[% n.fmt('(%s)') %]" => "(a # b)" ok 206 - Line 408 "[% n|format('%02d') %]" => "07" ok 207 - Line 409 "[% n|format('%0*d', 3) %]" => "007" ok 208 - Line 410 "[% n|format('(%s)') %]" => "(a) # (b)" ok 209 - Line 411 "[% n.hash.items.1 %]" => "b" ok 210 - Line 412 "[% n.hex %]" => "255" ok 211 - Line 413 "[% n|html %]" => "&<>"'" ok 212 - Line 414 "[% n|html_entity %]" => "&" ok 213 - Line 415 "[% n|xml %]" => "&<>"'" ok 214 - Line 416 "[% n|indent %]" => " a # b" ok 215 - Line 417 "[% n|indent(2) %]" => " a # b" ok 216 - Line 418 "[% n|indent('wow ') %]" => "wow a # wow b" ok 217 - Line 419 "[% n.int %]" => "123" ok 218 - Line 420 "[% n.int %]" => "123" ok 219 - Line 421 "[% n.int %]" => "0" ok 220 - Line 422 "[% n.item %]" => "7" ok 221 - Line 423 "[% n.lc %]" => "abc" ok 222 - Line 424 "[% n|lcfirst %]" => "fOO" ok 223 - Line 425 "[% n.length %]" => "3" ok 224 - Line 426 "[% n.list.0 %]" => "abc" ok 225 - Line 427 "[% n.log.substr(0,5) %]" => "4.605" ok 226 - Line 428 "[% n|lower %]" => "abc" ok 227 - Line 429 "[% n.match('foo').join %]" => "" ok 228 - Line 430 "[% n.match('foo').join %]" => "1" ok 229 - Line 431 "[% n.match('foo',1).join %]" => "foo" ok 230 - Line 432 "[% n.match('(foo)').join %]" => "foo" ok 231 - Line 433 "[% n.match('(foo)').join %]" => "foo" ok 232 - Line 434 "[% n.match('(foo)',1).join %]" => "foo foo" ok 233 - Line 435 "[% n.null %]" => "" ok 234 - Line 436 "[% n.oct %]" => "255" ok 235 - Line 437 "[% n.rand %]" => "0.984875575786653" ok 236 - Line 438 "[% n.rand %]" => "0.830250341302843" ok 237 - Line 439 "[% n.remove('bc') %]" => "a" ok 238 - Line 440 "[% n.remove('bc') %]" => "aa" ok 239 - Line 441 "[% n.repeat %]" => "1" ok 240 - Line 442 "[% n.repeat(0) %]" => "" ok 241 - Line 443 "[% n.repeat(1) %]" => "1" ok 242 - Line 444 "[% n.repeat(2) %]" => "11" ok 243 - Line 445 "[% n.repeat(2,'|') %]" => "1|1" ok 244 - Line 446 "[% n.replace('foo', 'bar') %]" => "barbar" ok 245 - Line 447 "[% n.replace('(foo)', 'bar$1') %]" => "barfoobarfoo" ok 246 - Line 448 "[% n.replace('foo', 'bar', 0) %]" => "barfoo" ok 247 - Line 449 "[% n.search('foo') %]" => "" ok 248 - Line 450 "[% n.search('foo') %]" => "1" ok 249 - Line 451 "[% n.sin.substr(0,5) %]" => "0" ok 250 - Line 452 "[% n.sin.substr(0,5) %]" => "1" ok 251 - Line 453 "[% n.size %]" => "1" ok 252 - Line 454 "[% n.split.join('|') %]" => "abc" ok 253 - Line 455 "[% n.split.join('|') %]" => "a|b|c" ok 254 - Line 456 "[% n.split.join('|') %]" => "a|b|c" ok 255 - Line 457 "[% n.split(u,2).join('|') %]" => "a|b c" ok 256 - Line 459 "[% n.split('/').join('|') %]" => "a|b|c" ok 257 - Line 460 "[% n.split('/', 2).join('|') %]" => "a|b/c" ok 258 - Line 461 "[% n.sprintf(7) %]" => "7" ok 259 - Line 462 "[% n.sprintf(3, 7, 12) %]" => "007 12" ok 260 - Line 463 "[% n.sqrt %]" => "3" ok 261 - Line 464 "[% n.squote %]" => "( # |\\|\')" ok 262 - Line 465 "[% n.srand; 12 %]" => "12" ok 263 - Line 466 "[% n.stderr %]" => "" ok 264 - Line 467 "[% n|trim %]" => "a b" ok 265 - Line 468 "[% n.uc %]" => "FOO" ok 266 - Line 469 "[% n|ucfirst %]" => "Foo" ok 267 - Line 470 "[% n|upper %]" => "FOO" ok 268 - Line 471 "[% n|uri %]" => "a%20b" ok 269 - Line 473 "[% n.fmt('%c') %]" => "B" ok 270 - Line 474 "[% n.fmt('%3X') %]" => " C" ok 271 - Line 475 "[% n.fmt('%-3X') %]" => "C " ok 272 - Line 476 "[% n.fmt('%03X') %]" => "00C" ok 273 - Line 477 "[% n.fmt('%03X') %]" => "00C" ok 274 - Line 478 "[% n.fmt('%\#03X') %]" => "0XC" ok 275 - Line 479 "[% n.fmt('%\#07X') %]" => "0X0000C" ok 276 - Line 481 "[% n.fmt('%o') %]" => "10" ok 277 - Line 482 "[% n.fmt('%\#o') %]" => "010" ok 278 - Line 483 "[% n.fmt('%\#o') %]" => "0" ok 279 - Line 485 "[% n.fmt('%02d') %]" => "07" ok 280 - Line 486 "[% n.fmt('%04.2d') %]" => " 07" ok 281 - Line 487 "[% n.fmt('%+04.2d') %]" => " +07" ok 282 - Line 488 "[% n.fmt('% 04.2d') %]" => " 07" ok 283 - Line 489 "[% n.fmt('% +04.2d') %]" => " +07" ok 284 - Line 490 "[% n.fmt('%02f') %]" => "7.000000" ok 285 - Line 491 "[% n.fmt('%04.2f') %]" => "7.00" ok 286 - Line 492 "[% n.fmt('%05.2f') %]" => "07.00" ok 287 - Line 493 "[% n.fmt('% 5.2f') %]" => " 7.00" ok 288 - Line 494 "[% n.fmt('%+04.2f') %]" => "+7.00" ok 289 - Line 495 "[% n.fmt('% 04.2f') %]" => " 7.00" ok 290 - Line 496 "[% n.fmt('% +6.2f') %]" => " +7.00" ok 291 - Line 497 "[% n.fmt('%0+6.2f') %]" => "+07.00" ok 292 - Line 498 "[% n.fmt('%.5g') %]" => "12345" ok 293 - Line 499 "[% n.fmt('%.5g') %]" => "1.2346e+06" ### list vmethods ################################### engine_option (normal) ok 294 - Line 504 "[% a.defined %]" => "1" ok 295 - Line 505 "[% a.defined(1) %]" => "1" ok 296 - Line 506 "[% a.defined(3) %]" => "" ok 297 - Line 507 "[% a.first %]" => "2" ok 298 - Line 508 "[% a.first(3).join %]" => "2 3 4" ok 299 - Line 509 "[% a.fmt %]" => "2 3" ok 300 - Line 510 "[% a.fmt('%02d') %]" => "02 03" ok 301 - Line 511 "[% a.fmt('%02d',' ') %]" => "02 03" ok 302 - Line 512 "[% a.fmt('%02d','|') %]" => "02|03" ok 303 - Line 513 "[% a.fmt('%0*d','|', 3) %]" => "002|003" ok 304 - Line 514 "[% a.grep.join %]" => "2 3" ok 305 - Line 515 "[% a.grep(2).join %]" => "2" ok 306 - Line 516 "[% a.grep(->(n){n % 2}).join %]" => "3 5 7" ok 307 - Line 517 "[% a.hash.items.join %]" => "2 3" ok 308 - Line 518 "[% a.hash(5).items.sort.join %]" => "2 3 5 6" ok 309 - Line 519 "[% a.import(5) %]|[% a.join %]" => "|2 3" ok 310 - Line 521 "[% a.import([5]) %]|[% a.join %]" => "|2 3 5" ok 311 - Line 523 "[% a.item %]" => "2" ok 312 - Line 524 "[% a.item(1) %]" => "3" ok 313 - Line 525 "[% a.join %]" => "2 3" ok 314 - Line 526 "[% a.join('|') %]" => "2|3" ok 315 - Line 527 "[% a.last %]" => "10" ok 316 - Line 528 "[% a.last(3).join %]" => "8 9 10" ok 317 - Line 529 "[% a.list.join %]" => "2 3" ok 318 - Line 530 "[% a.map(->(n){ n.repeat(3) }).join %]" => "222 333" ok 319 - Line 531 "[% a.max %]" => "1" ok 320 - Line 532 "[% a.merge(5).join %]" => "2 3" ok 321 - Line 533 "[% a.merge([5]).join %]" => "2 3 5" ok 322 - Line 534 "[% a.merge([5]).null %][% a.join %]" => "2 3" ok 323 - Line 535 "[% a.nsort.join %]" => "1 2 3" ok 324 - Line 536 "[% a.nsort('b').0.b %]" => "7" ok 325 - Line 537 "[% a.pop %][% a.join %]" => "32" ok 326 - Line 538 "[% a.push(3) %][% a.join %]" => "2 3 3" ok 327 - Line 539 "[% a.pick %]" => "2" ok 328 - Line 540 "[% a.pick(5).join('') %]" => "23223" ok 329 - Line 541 "[% a.reverse.join %]" => "3 2" ok 330 - Line 542 "[% a.shift %][% a.join %]" => "23" ok 331 - Line 543 "[% a.size %]" => "2" ok 332 - Line 544 "[% a.slice.join %]" => "2 3 4 5" ok 333 - Line 545 "[% a.slice(2).join %]" => "4 5" ok 334 - Line 546 "[% a.slice(0,2).join %]" => "2 3 4" ok 335 - Line 547 "[% a.sort.join %]" => "1 2 3" ok 336 - Line 548 "[% a.sort('b').0.b %]" => "wee" ok 337 - Line 549 "[% c.sort(->(a,b){ a.k cmp b.k }).map(->{this.k}).join %]" => "a wee wow" ok 338 - Line 550 "[% a.splice.join %]|[% a.join %]" => "2 3 4 5|" ok 339 - Line 551 "[% a.splice(2).join %]|[% a.join %]" => "4 5|2 3" ok 340 - Line 552 "[% a.splice(0,2).join %]|[% a.join %]" => "2 3|4 5" ok 341 - Line 553 "[% a.splice(0,2,'hrm').join %]|[% a.join %]" => "2 3|hrm 4 5" ok 342 - Line 554 "[% a.unique.join %]" => "2 3" ok 343 - Line 555 "[% a.unshift(3) %][% a.join %]" => "3 2 3" ### hash vmethods ################################### engine_option (normal) ok 344 - Line 560 "[% h.defined %]" => "1" ok 345 - Line 561 "[% h.defined('a') %]" => "1" ok 346 - Line 562 "[% h.defined('b') %]" => "" ok 347 - Line 563 "[% h.defined('a') %]" => "" ok 348 - Line 564 "[% h.delete('a') %]|[% h.keys.0 %]" => "|b" ok 349 - Line 565 "[% h.delete('a', 'b').join %]|[% h.keys.0 %]" => "|" ok 350 - Line 566 "[% h.delete('a', 'c').join %]|[% h.keys.0 %]" => "|b" ok 351 - Line 567 "[% h.each.sort.join %]" => "1 2 a b" ok 352 - Line 568 "[% h.exists('a') %]" => "1" ok 353 - Line 569 "[% h.exists('b') %]" => "" ok 354 - Line 570 "[% h.exists('a') %]" => "1" ok 355 - Line 571 "[% h.fmt %]" => "b B # c C" ok 356 - Line 572 "[% h.fmt('%s => %s') %]" => "b => B # c => C" ok 357 - Line 573 "[% h.fmt('%s => %s', '|') %]" => "b => B|c => C" ok 358 - Line 574 "[% h.fmt('%*s=>%s', '|', 3) %]" => " b=>B| c=>C" ok 359 - Line 575 "[% h.fmt('%*s=>%*s', '|', 3, 4) %]" => " b=> B| c=> C" ok 360 - Line 576 "[% h.hash.fmt %]" => "b B # c C" ok 361 - Line 577 "[% h.import('a') %]|[% h.items.sort.join %]" => "|b B c C" ok 362 - Line 578 "[% h.import({'b' => 'boo'}) %]|[% h.items.sort.join %]" => "|b boo c C" ok 363 - Line 579 "[% h.item('a') %]" => "A" ok 364 - Line 580 "[% h.item('_a') %]" => "" ok 365 - Line 581 "[% h.items.sort.join %]" => "1 2 a b" ok 366 - Line 582 "[% h.keys.sort.join %]" => "a b" ok 367 - Line 583 "[% h.list('each').sort.join %]" => "1 2 a b" ok 368 - Line 584 "[% h.list('keys').sort.join %]" => "a b" ok 369 - Line 585 "[% h.list('pairs').0.items.sort.join %]" => "1 a key value" ok 370 - Line 586 "[% h.list('values').sort.join %]" => "1 2" ok 371 - Line 587 "[% h.null %]" => "" ok 372 - Line 588 "[% h.nsort.join %]" => "b a" ok 373 - Line 589 "[% h.pairs.0.items.sort.join %]" => "1 a key value" ok 374 - Line 590 "[% h.size %]" => "2" ok 375 - Line 591 "[% h.sort.join %]" => "b a" ok 376 - Line 592 "[% h.values.sort.join %]" => "1 2" ### vmethods as functions ########################### engine_option (normal) ok 377 - Line 597 "[% sprintf('%d %d', 7, 8) %] d" => "7 8 d" ok 378 - Line 598 "[% sprintf('%d %d', 7, 8) %] d" => "7 8 d" ok 379 - Line 599 "[% sprintf('%d %d', 7, 8) %] d" => " d" ok 380 - Line 600 "[% int(2.234) %]" => "2" ok 381 - Line 602 "[% int(2.234) ; int = 44; int(2.234) ; SET int; int(2.234) %]" => "2442" ### more virtual methods / filters ################## engine_option (normal) ok 382 - Line 607 "[% [0 .. 10].reverse.1 %]" => "9" ok 383 - Line 608 "[% {a => 'A'}.a %]" => "A" ok 384 - Line 609 "[% 'This is a string'.length %]" => "16" ok 385 - Line 610 "[% 123.length %]" => "3" ok 386 - Line 611 "[% 123.2.length %]" => "5" ok 387 - Line 612 "[% -123.2.length %]" => "-5" ok 388 - Line 613 "[% (-123.2).length %]" => "6" ok 389 - Line 614 "[% a = 23; a.0 %]" => "23" ok 390 - Line 615 "[% 1.rand %]" => "0.15075242533052" ok 391 - Line 617 "[% n.size %]" => "SIZE" ok 392 - Line 618 "[% n|size %]" => "2" ok 393 - Line 620 "[% "1" | indent(2) %]" => " 1" ok 394 - Line 622 "[% n FILTER size %]" => "1" ok 395 - Line 624 "[% n FILTER repeat %]" => "1" ok 396 - Line 625 "[% n FILTER repeat(0) %]" => "" ok 397 - Line 626 "[% n FILTER repeat(1) %]" => "1" ok 398 - Line 627 "[% n FILTER repeat(2) %]" => "11" ok 399 - Line 628 "[% n FILTER repeat(2,'|') %]" => "1|1" ok 400 - Line 630 "[% n FILTER echo = repeat(2) %][% n FILTER echo %]" => "1111" ok 401 - Line 631 "[% n FILTER echo = repeat(2) %][% n | echo %]" => "1111" ok 402 - Line 632 "[% n FILTER echo = repeat(2) %][% n|echo.length %]" => "112" ok 403 - Line 633 "[% n FILTER echo = repeat(2) %][% n FILTER $foo %]" => "1111" ok 404 - Line 634 "[% n FILTER echo = repeat(2) %][% n | $foo %]" => "1111" ok 405 - Line 635 "[% n FILTER echo = repeat(2) %][% n|$foo.length %]" => "112" ok 406 - Line 637 "[% "hi" FILTER $foo %]" => "hihi" ok 407 - Line 638 "[% FILTER $foo %]hi[% END %]" => "hihi" ok 408 - Line 639 "[% "hi" FILTER foo %]" => "hihi" ok 409 - Line 640 "[% "hi" FILTER foo %]" => "hihi" ok 410 - Line 641 "[% "hi" FILTER foo(2) %]" => "hihi" ok 411 - Line 643 "[% ["0".."9"].pick %]" => "9" ok 412 - Line 645 "[% ' ' | uri %]" => "%20" ok 413 - Line 647 "[% "one".fmt %]" => "one" ok 414 - Line 648 "[% 2.fmt("%02d") %]" => "02" ok 415 - Line 650 "[% [1..3].fmt %]" => "1 2 3" ok 416 - Line 651 "[% [1..3].fmt("%02d") %]" => "01 02 03" ok 417 - Line 652 "[% [1..3].fmt("%s", ", ") %]" => "1, 2, 3" ok 418 - Line 654 "[% {a => "B", c => "D"}.fmt %]" => "a B # c D" ok 419 - Line 655 "[% {a => "B", c => "D"}.fmt("%s:%s") %]" => "a:B # c:D" ok 420 - Line 656 "[% {a => "B", c => "D"}.fmt("%s:%s", "; ") %]" => "a:B; c:D" ok 421 - Line 658 "[% 1|format("%s") %]" => "1" ok 422 - Line 659 "[% 1|format("%*s", 6) %]" => " 1" ok 423 - Line 660 "[% 1|format("%-*s", 6) %]" => "1 " ok 424 - Line 662 "[% 1.fmt("%-*s", 6) %]" => "1 " ok 425 - Line 663 "[% [1,2].fmt("%-*s", "|", 6) %]" => "1 |2 " ok 426 - Line 664 "[% {1=>2,3=>4}.fmt("%*s:%*s", "|", 3, 3) %]" => " 1: 2| 3: 4" ok 427 - Line 666 "[% foo %]" => "&" ok 428 - Line 667 "[% "&" %]" => "&" ok 429 - Line 668 "[% foo | none %]" => "&" ok 430 - Line 669 "[% foo.bar %]" => "&" ok 431 - Line 670 "[% foo.bar | none %]" => "&" ok 432 - Line 671 "[% GET foo %]" => "&" ok 433 - Line 672 "[% GET "&" %]" => "&" ok 434 - Line 673 "[% GET foo | none %]" => "&" ok 435 - Line 674 "[% Text.length(foo) %]" => "1" ### virtual objects ################################# engine_option (normal) ok 436 - Line 679 "[% a = "foobar" %][% Text.length(a) %]" => "6" ok 437 - Line 680 "[% a = [1 .. 10] %][% List.size(a) %]" => "10" ok 438 - Line 681 "[% a = {a=>"A", b=>"B"} ; Hash.size(a) %]" => "2" ok 439 - Line 683 "[% a = Text.new("This is a string") %][% a.length %]" => "16" ok 440 - Line 684 "[% a = List.new("one", "two", "three") %][% a.size %]" => "3" ok 441 - Line 685 "[% a = Hash.new("one", "ONE") %][% a.one %]" => "ONE" ok 442 - Line 686 "[% a = Hash.new(one = "ONE") %][% a.one %]" => "ONE" ok 443 - Line 687 "[% a = Hash.new(one => "ONE") %][% a.one %]" => "ONE" ok 444 - Line 689 "[% {a => 1, b => 2} | Hash.keys | List.sort | List.join(", ") %]" => "a, b" ### chomping ######################################## engine_option (normal) ok 445 - Line 694 " [% foo %]" => " " ok 446 - Line 695 " [%- foo %]" => "" ok 447 - Line 696 " # [%- foo %]" => "" ok 448 - Line 697 " # [%- foo %]" => "" ok 449 - Line 698 " # # [%- foo %]" => " # " ok 450 - Line 699 " # # [%- foo %]" => " # " ok 451 - Line 700 " # [%- foo %]" => " " ok 452 - Line 701 " # # [%- foo %]" => " # " ok 453 - Line 703 "[% 7 %] " => "7 " ok 454 - Line 704 "[% 7 -%] " => "7 " ok 455 - Line 705 "[% 7 -%] # " => "7" ok 456 - Line 706 "[% 7 -%] # " => "7" ok 457 - Line 707 "[% 7 -%] # " => "7 " ok 458 - Line 708 "[% 7 -%] # # # " => "7 # # " ok 459 - Line 709 "[% 7 -%] # " => "7 " ### string operators ################################ engine_option (normal) ok 460 - Line 714 "[% a = "foo"; a _ "bar" %]" => "foobar" ok 461 - Line 715 "[% a = "foo"; a ~ "bar" %]" => "foobar" ok 462 - Line 716 "[% a = "foo"; a ~= "bar"; a %]" => "foobar" ok 463 - Line 717 "[% "b" gt "c" %]<<<" => "<<<" ok 464 - Line 718 "[% "b" gt "a" %]<<<" => "1<<<" ok 465 - Line 719 "[% "b" ge "c" %]<<<" => "<<<" ok 466 - Line 720 "[% "b" ge "b" %]<<<" => "1<<<" ok 467 - Line 721 "[% "b" lt "c" %]<<<" => "1<<<" ok 468 - Line 722 "[% "b" lt "a" %]<<<" => "<<<" ok 469 - Line 723 "[% "b" le "a" %]<<<" => "<<<" ok 470 - Line 724 "[% "b" le "b" %]<<<" => "1<<<" ok 471 - Line 725 "[% "a" cmp "b" %]<<<" => "-1<<<" ok 472 - Line 726 "[% "b" cmp "b" %]<<<" => "0<<<" ok 473 - Line 727 "[% "c" cmp "b" %]<<<" => "1<<<" ### math operators ################################## engine_option (normal) ok 474 - Line 732 "[% 1 + 2 %]" => "3" ok 475 - Line 733 "[% 1 + 2 + 3 %]" => "6" ok 476 - Line 734 "[% (1 + 2) %]" => "3" ok 477 - Line 735 "[% 2 - 1 %]" => "1" ok 478 - Line 736 "[% -1 + 2 %]" => "1" ok 479 - Line 737 "[% -1+2 %]" => "1" ok 480 - Line 738 "[% 2 - 1 %]" => "1" ok 481 - Line 739 "[% 2-1 %]" => "1" ok 482 - Line 740 "[% 2 - -1 %]" => "3" ok 483 - Line 741 "[% 4 * 2 %]" => "8" ok 484 - Line 742 "[% 4 / 2 %]" => "2" ok 485 - Line 743 "[% 10 / 3 %]" => "3.33333333333333" ok 486 - Line 744 "[% 10 div 3 %]" => "3" ok 487 - Line 745 "[% 2 ** 3 %]" => "8" ok 488 - Line 746 "[% 1 + 2 * 3 %]" => "7" ok 489 - Line 747 "[% 3 * 2 + 1 %]" => "7" ok 490 - Line 748 "[% (1 + 2) * 3 %]" => "9" ok 491 - Line 749 "[% 3 * (1 + 2) %]" => "9" ok 492 - Line 750 "[% 1 + 2 ** 3 %]" => "9" ok 493 - Line 751 "[% 2 * 2 ** 3 %]" => "16" ok 494 - Line 752 "[% SET foo = 1 %][% foo + 2 %]" => "3" ok 495 - Line 753 "[% SET foo = 1 %][% (foo + 2) %]" => "3" ok 496 - Line 755 "[% a = 1; (a += 2) %]" => "3" ok 497 - Line 756 "[% a = 1; (a -= 2) %]" => "-1" ok 498 - Line 757 "[% a = 4; (a /= 2) %]" => "2" ok 499 - Line 758 "[% a = 1; (a *= 2) %]" => "2" ok 500 - Line 759 "[% a = 3; (a **= 2) %]" => "9" ok 501 - Line 760 "[% a = 1; (a %= 2) %]" => "1" ok 502 - Line 761 "[% a = 1; (a += 2 + 3) %]" => "6" ok 503 - Line 762 "[% a = 1; b = 2; (a += b += 3) %]|[% a %]|[% b %]" => "6|6|5" ok 504 - Line 763 "[% a = 1; b = 2; (a += (b += 3)) %]|[% a %]|[% b %]" => "6|6|5" ok 505 - Line 765 "[% a += 1 %]-[% a %]-[% a += 1 %]-[% a %]" => "-1--2" ok 506 - Line 766 "[% (a += 1) %]-[% (a += 1) %]" => "1-2" ok 507 - Line 768 "[% a = 2; a -= 3; a %]" => "-1" ok 508 - Line 769 "[% a = 2; a *= 3; a %]" => "6" ok 509 - Line 770 "[% a = 2; a /= .5; a %]" => "4" ok 510 - Line 771 "[% a = 8; a %= 3; a %]" => "2" ok 511 - Line 772 "[% a = 2; a **= 3; a %]" => "8" ok 512 - Line 774 "[% a = 1 %][% ++a %][% a %]" => "22" ok 513 - Line 775 "[% a = 1 %][% a++ %][% a %]" => "12" ok 514 - Line 776 "[% a = 1 %][% --a %][% a %]" => "00" ok 515 - Line 777 "[% a = 1 %][% a-- %][% a %]" => "10" ok 516 - Line 778 "[% a++ FOR [1..3] %]" => "012" ok 517 - Line 779 "[% --a FOR [1..3] %]" => "-1-2-3" ok 518 - Line 781 "[% 2 > 3 %]<<<" => "<<<" ok 519 - Line 782 "[% 2 > 1 %]<<<" => "1<<<" ok 520 - Line 783 "[% 2 >= 3 %]<<<" => "<<<" ok 521 - Line 784 "[% 2 >= 2 %]<<<" => "1<<<" ok 522 - Line 785 "[% 2 < 3 %]<<<" => "1<<<" ok 523 - Line 786 "[% 2 < 1 %]<<<" => "<<<" ok 524 - Line 787 "[% 2 <= 1 %]<<<" => "<<<" ok 525 - Line 788 "[% 2 <= 2 %]<<<" => "1<<<" ok 526 - Line 789 "[% 1 <=> 2 %]<<<" => "-1<<<" ok 527 - Line 790 "[% 2 <=> 2 %]<<<" => "0<<<" ok 528 - Line 791 "[% 3 <=> 2 %]<<<" => "1<<<" ### boolean operators ############################### engine_option (normal) ok 529 - Line 796 "[% 5 && 6 %]" => "6" ok 530 - Line 797 "[% 5 || 6 %]" => "5" ok 531 - Line 798 "[% 0 || 6 %]" => "6" ok 532 - Line 799 "[% 0 && 6 %]" => "0" ok 533 - Line 800 "[% 0 && 0 %]" => "0" ok 534 - Line 801 "[% 5 && 6 && 7%]" => "7" ok 535 - Line 802 "[% 0 || 1 || 2 %]" => "1" ok 536 - Line 804 "[% 5 + (0 || 5) %]" => "10" ok 537 - Line 807 "[% 1 ? 2 : 3 %]" => "2" ok 538 - Line 808 "[% 0 ? 2 : 3 %]" => "3" ok 539 - Line 809 "[% 0 ? (1 ? 2 : 3) : 4 %]" => "4" ok 540 - Line 810 "[% 0 ? 1 ? 2 : 3 : 4 %]" => "4" ok 541 - Line 812 "[% t = 1 || 0 ? 3 : 4 %][% t %]" => "3" ok 542 - Line 813 "[% t = 0 or 1 ? 3 : 4 %][% t %]" => "3" ok 543 - Line 814 "[% t = 1 or 0 ? 3 : 4 %][% t %]" => "1" ok 544 - Line 816 "[% 0 ? 2 : 3 %]" => "3" ok 545 - Line 817 "[% 1 ? 2 : 3 %]" => "2" ok 546 - Line 818 "[% 0 ? 1 ? 2 : 3 : 4 %]" => "4" ok 547 - Line 819 "[% t = 0 ? 1 ? [1..4] : [2..4] : [3..4] %][% t.0 %]" => "3" ok 548 - Line 820 "[% t = 1 || 0 ? 0 : 1 || 2 ? 2 : 3 %][% t %]" => "0" ok 549 - Line 821 "[% t = 0 or 0 ? 0 : 1 or 2 ? 2 : 3 %][% t %]" => "1" ok 550 - Line 822 "[% t = 0 or 0 ? 0 : 0 or 2 ? 2 : 3 %][% t %]" => "2" ok 551 - Line 824 "[% 0 ? 1 ? 1 + 2 * 3 : 1 + 2 * 4 : 1 + 2 * 5 %]" => "11" ok 552 - Line 826 "[% foo //= 2 ; foo %]" => "2" ok 553 - Line 827 "[% foo = 3; foo //= 2; foo %]" => "3" ok 554 - Line 828 "[% foo = 3; SET foo; foo //= 2; foo %]" => "2" ok 555 - Line 830 "[% 5 // 6 %]" => "5" ok 556 - Line 831 "[% foo // 6 %]" => "6" ok 557 - Line 832 "[% foo // 6 %]" => "6" ok 558 - Line 833 "[% foo // 6 %]" => "" ok 559 - Line 834 "[% foo // 6 %]" => "bar" ok 560 - Line 836 "[% foo err 6 %]" => "6" ok 561 - Line 837 "[% foo ERR 6 %]" => "6" ### regex ########################################### engine_option (normal) ok 562 - Line 843 "[% 'foo'.match(/foo/) ? 1 : 0 %]" => "1" ok 563 - Line 844 "[% 'foo'.match(/foo) ? 1 : 0 %]" => "" ok 564 - Line 845 "[% 'foo'.match(/fo o/x) ? 1 : 0 %]" => "1" ok 565 - Line 846 "[% 'foo'.match(/Foo/i) ? 1 : 0 %]" => "1" ok 566 - Line 847 "[% 'f # o'.match(/f.o/s) ? 1 : 0 %]" => "1" ok 567 - Line 848 "[% ' # foo'.match(/^foo/m) ? 1 : 0 %]" => "1" ok 568 - Line 849 "[% 'foo'.match(/foo/e) ? 1 : 0 %]" => "" ok 569 - Line 850 "[% 'foo'.match(/foo/g) ? 1 : 0 %]" => "" ok 570 - Line 851 "[% 'foo'.match(/foo) ? 1 : 0 %]" => "" ok 571 - Line 852 "[% 'foo'.match(/foo**/) ? 1 : 0 %]" => "" ok 572 - Line 853 "[% 'fo/o'.match(/fo\/o/) ? 1 : 0 %]" => "1" ok 573 - Line 854 "[% 'foobar'.match(/(f\w\w)/).0 %]" => "foo" ### BLOCK / PROCESS / INCLUDE / WRAPPER ############# engine_option (normal) ok 574 - Line 860 "[% PROCESS foo %]one" => "" ok 575 - Line 861 "[% BLOCK foo %]one" => "" ok 576 - Line 862 "[% BLOCK foo %][% END %]one" => "one" ok 577 - Line 863 "[% BLOCK %][% END %]one" => "one" ok 578 - Line 864 "[% BLOCK foo %]hi there[% END %]one" => "one" ok 579 - Line 865 "[% BLOCK foo %][% BLOCK foo %][% END %][% END %]" => "" ok 580 - Line 866 "[% BLOCK foo %]hi there[% END %][% PROCESS foo %]" => "hi there" ok 581 - Line 867 "[% PROCESS foo %][% BLOCK foo %]hi there[% END %]" => "hi there" ok 582 - Line 868 "[% BLOCK foo %]hi there[% END %][% PROCESS foo foo %]" => "hi therehi there" ok 583 - Line 869 "[% BLOCK foo %]hi there[% END %][% PROCESS foo, foo %]" => "hi therehi there" ok 584 - Line 870 "[% BLOCK foo %]hi there[% END %][% PROCESS foo + foo %]" => "hi therehi there" ok 585 - Line 871 "[% BLOCK foo %]hi [% one %] there[% END %][% PROCESS foo %]" => "hi ONE there" ok 586 - Line 872 "[% BLOCK foo %]hi [% IF 1 %]Yes[% END %] there[% END %]<<[% PROCESS foo %]>>" => "<>" ok 587 - Line 873 "[% BLOCK foo %]hi [% one %] there[% END %][% PROCESS foo one = 'two' %]" => "hi two there" ok 588 - Line 874 "[% BLOCK foo %]hi [% one.two %] there[% END %][% PROCESS foo one.two = 'two' %]" => "hi two there" ok 589 - Line 875 "[% BLOCK foo %]hi [% one.two %] there[% END %][% PROCESS foo + foo one.two = 'two' %]" => "hi two therehi two there" ok 590 - Line 876 "[% BLOCK foo %][% BLOCK bar %]hi [% one %] there[% END %][% END %][% PROCESS foo/bar one => 'two' %]" => "hi two there" ok 591 - Line 878 "[% BLOCK b %]Ta-Da[% END %][% self = {a => 'b'} %][% PROCESS $self.a self = 'blah' %]" => "Ta-Da" ok 592 - Line 879 "[% BLOCK b %]Ta-Da[% END %][% self = {a => 'b'} %][% INCLUDE $self.a self = 'blah' %]" => "Ta-Da" ok 593 - Line 880 "[% BLOCK b %]Ta-Da[% END %][% self = 'b' %][% PROCESS $self self = 'blah'; self %]" => "Ta-Dablah" ok 594 - Line 881 "[% BLOCK b %]Ta-Da[% END %][% self = 'b' %][% INCLUDE $self self = 'blah'; self %]" => "Ta-Dab" ok 595 - Line 883 "[% BLOCK foo %]hi [% one %] there[% END %][% PROCESS foo one = 'two' %][% one %]" => "hi two theretwo" ok 596 - Line 884 "[% BLOCK foo %]hi [% one %] there[% END %][% INCLUDE foo one = 'two' %][% one %]" => "hi two there" ok 597 - Line 886 "[% BLOCK foo %]FOO[% IF ! a ; a = 1; PROCESS bar; END %][% END %][% BLOCK bar %]BAR[% PROCESS foo %][% END %][% PROCESS foo %]" => "" ok 598 - Line 888 "[% BLOCK foo %]FOO[% IF ! a ; a = 1; PROCESS bar; END %][% END %][% BLOCK bar %]BAR[% PROCESS foo %][% END %][% PROCESS foo %]" => "FOOBARFOO" ok 599 - Line 890 "[% BLOCK foo %]([% content %])[% END %][% WRAPPER foo %]hi there[% END %]" => "(hi there)" ok 600 - Line 891 "[% BLOCK foo %]([% one = 1; content %])[% END %][% WRAPPER foo %]hi there[% END %][% one %]" => "(hi there)won" ok 601 - Line 893 "[% a = 23; PROCESS $foo %]" => "bar 23 baz" ### IF / UNLESS / ELSIF / ELSE ###################### engine_option (normal) ok 602 - Line 898 "[% IF 1 %]Yes[% END %]" => "Yes" ok 603 - Line 899 "[% IF 0 %]Yes[% END %]" => "" ok 604 - Line 900 "[% IF 0 %]Yes[% ELSE %]No[% END %]" => "No" ok 605 - Line 901 "[% IF 0 %]Yes[% ELSIF 1 %]No[% END %]" => "No" ok 606 - Line 902 "[% IF 0 %]Yes[% ELSIF 0 %]No[% END %]" => "" ok 607 - Line 903 "[% IF 0 %]Yes[% ELSIF 0 %]No[% ELSE %]hmm[% END %]" => "hmm" ok 608 - Line 905 "[% UNLESS 1 %]Yes[% END %]" => "" ok 609 - Line 906 "[% UNLESS 0 %]Yes[% END %]" => "Yes" ok 610 - Line 907 "[% UNLESS 0 %]Yes[% ELSE %]No[% END %]" => "Yes" ok 611 - Line 908 "[% UNLESS 1 %]Yes[% ELSIF 1 %]No[% END %]" => "No" ok 612 - Line 909 "[% UNLESS 1 %]Yes[% ELSIF 0 %]No[% END %]" => "" ok 613 - Line 910 "[% UNLESS 1 %]Yes[% ELSIF 0 %]No[% ELSE %]hmm[% END %]" => "hmm" ### comments ######################################## engine_option (normal) ok 614 - Line 915 "[%\# one %]f" => "f" ok 615 - Line 916 "[%\# # one %]f" => "f" ok 616 - Line 917 "[%-\# # one %]f" => "f" ok 617 - Line 918 "[% \# # one %]f" => "ONEf" ok 618 - Line 919 "[% \# one %] # one %]f" => " # one %]f" ok 619 - Line 921 "[%\# BLOCK one %]" => "" ok 620 - Line 922 "[%\# BLOCK one %]two" => "two" ok 621 - Line 923 "[%\# BLOCK one %]two[% END %]" => "" ok 622 - Line 924 "[%\# BLOCK one %]two[% END %]three" => "" ok 623 - Line 925 "[% %]" => "" ok 624 - Line 926 "[% # \# Some comment # CALL 1 -%] # foo" => "foo" ### FOREACH / NEXT / LAST ########################### engine_option (normal) ok 625 - Line 934 "[% FOREACH foo %]" => "" ok 626 - Line 935 "[% FOREACH foo %][% END %]" => "" ok 627 - Line 936 "[% FOREACH foo %]bar[% END %]" => "" ok 628 - Line 937 "[% FOREACH foo %]bar[% END %]" => "bar" ok 629 - Line 938 "[% FOREACH f IN foo %]bar[% f %][% END %]" => "bar1bar2" ok 630 - Line 939 "[% FOREACH f = foo %]bar[% f %][% END %]" => "bar1bar2" ok 631 - Line 940 "[% FOREACH f = [1,2] %]bar[% f %][% END %]" => "bar1bar2" ok 632 - Line 941 "[% FOREACH f = [1..3] %]bar[% f %][% END %]" => "bar1bar2bar3" ok 633 - Line 942 "[% FOREACH f = [{a=>'A'},{a=>'B'}] %]bar[% f.a %][% END %]" => "barAbarB" ok 634 - Line 943 "[% FOREACH [{a=>'A'},{a=>'B'}] %]bar[% a %][% END %]" => "barAbarB" ok 635 - Line 944 "[% FOREACH [{a=>'A'},{a=>'B'}] %]bar[% a %][% END %][% a %]" => "barAbarB" ok 636 - Line 945 "[% FOREACH f = [1..3] %][% loop.count %]/[% loop.size %] [% END %]" => "1/3 2/3 3/3 " ok 637 - Line 946 "[% FOREACH f = [1..3] %][% IF loop.first %][% f %][% END %][% END %]" => "1" ok 638 - Line 947 "[% FOREACH f = [1..3] %][% IF loop.last %][% f %][% END %][% END %]" => "3" ok 639 - Line 948 "[% FOREACH f = [1..3] %][% IF loop.first %][% NEXT %][% END %][% f %][% END %]" => "23" ok 640 - Line 949 "[% FOREACH f = [1..3] %][% IF loop.first %][% LAST %][% END %][% f %][% END %]" => "" ok 641 - Line 950 "[% FOREACH f = [1..3] %][% f %][% IF loop.first %][% NEXT %][% END %][% END %]" => "123" ok 642 - Line 951 "[% FOREACH f = [1..3] %][% f %][% IF loop.first %][% LAST %][% END %][% END %]" => "1" ok 643 - Line 952 "[% loop.odd FOREACH [1..5] %]" => "10101" ok 644 - Line 953 "[% loop.even FOREACH [1..5] %]" => "01010" ok 645 - Line 954 "[% loop.parity FOREACH [1..5] %]" => "oddevenoddevenodd" ok 646 - Line 956 "[% a = ["Red", "Blue"] ; FOR [0..3] ; a.${ loop.index % a.size } ; END %]" => "RedBlueRedBlue" ok 647 - Line 961 "[% foo = 1 %][% FOREACH [1..10] %][% foo %][% foo = 2 %][% END %]" => "1222222222" ok 648 - Line 962 "[% f = 1 %][% FOREACH i = [1..10] %][% i %][% f = 2 %][% END %][% f %]" => "123456789102" ok 649 - Line 963 "[% f = 1 %][% FOREACH [1..10] %][% f = 2 %][% END %][% f %]" => "1" ok 650 - Line 964 "[% f = 1 %][% FOREACH f = [1..10] %][% f %][% END %][% f %]" => "1234567891010" ok 651 - Line 965 "[% FOREACH [1] %][% SET a = 1 %][% END %][% a %]" => "" ok 652 - Line 966 "[% a %][% FOREACH [1] %][% SET a = 1 %][% END %][% a %]" => "" ok 653 - Line 967 "[% a = 2 %][% FOREACH [1] %][% SET a = 1 %][% END %][% a %]" => "2" ok 654 - Line 968 "[% a = 2 %][% FOREACH [1] %][% a = 1 %][% END %][% a %]" => "2" ok 655 - Line 969 "[% a = 2 %][% FOREACH i = [1] %][% a = 1 %][% END %][% a %]" => "1" ok 656 - Line 970 "[% FOREACH i = [1] %][% SET a = 1 %][% END %][% a %]" => "1" ok 657 - Line 971 "[% f.b = 1 %][% FOREACH f.b = [1..10] %][% f.b %][% END %][% f.b %]" => "1234567891010" ok 658 - Line 972 "[% a = 1 %][% FOREACH [{a=>'A'},{a=>'B'}] %]bar[% a %][% END %][% a %]" => "barAbarB1" ok 659 - Line 973 "[% FOREACH [1..3] %][% loop.size %][% END %][% loop.size %]" => "333" ok 660 - Line 974 "[% FOREACH i = [1..3] %][% loop.size %][% END %][% loop.size %]" => "333" ok 661 - Line 977 "[% FOREACH f = [1..3]; 1; END %]" => "111" ok 662 - Line 978 "[% FOREACH f = [1..3]; f; END %]" => "123" ok 663 - Line 979 "[% FOREACH f = [1..3]; "$f"; END %]" => "123" ok 664 - Line 980 "[% FOREACH f = [1..3]; f + 1; END %]" => "234" ok 665 - Line 981 "[% FOREACH f IN [2,3,4]; FOREACH g IN [6,7,8]; f;g;", "; END; END %]" => "26, 27, 28, 36, 37, 38, 46, 47, 48, " ok 666 - Line 992 "[% FOREACH i IN foo; i.n; END %]" => "123" ok 667 - Line 993 "[% FOREACH i IN foo; i.n; END %]" => "1" ok 668 - Line 994 "[% FOREACH i IN foo; i.n; END %]" => "123" ok 669 - Line 995 "[% FOREACH i IN foo; i.n; END %]" => "1" ok 670 - Line 997 "[% FOREACH i IN foo; i.n; END %]" => "123" ok 671 - Line 998 "[% FOREACH i IN foo; i.n; END %]" => "1" ok 672 - Line 999 "[% FOREACH i IN foo; i.n; END %]" => "123" ok 673 - Line 1000 "[% FOREACH i IN foo; i.n; END %]" => "1" ### LOOP ############################################ engine_option (normal) ok 674 - Line 1005 "[% var = [{key => 'a'}, {key => 'b'}] -%] # [% LOOP var -%] # ([% key %]) # [% END %]" => " (a) # (b) # " ok 675 - Line 1014 "[% var = [{key => 'a'}, {key => 'b'}, {key => 'c'}] -%] # [% LOOP var -%] # ([% key; '|'; __first__; '|'; __last__; '|'; __inner__; '|'; __odd__ %]) # [% END -%]" => "(a|1|0|0|1) # (b|0|0|1|0) # (c|0|1|0|1) # " ### WHILE ########################################### engine_option (normal) ok 676 - Line 1026 "[% WHILE foo %]" => "" ok 677 - Line 1027 "[% WHILE foo %][% END %]" => "" ok 678 - Line 1028 "[% WHILE (foo = foo - 1) %][% END %]" => "" ok 679 - Line 1029 "[% WHILE (foo = foo - 1) %][% foo %][% END %]" => "21" ok 680 - Line 1030 "[% WHILE foo %][% foo %][% foo = foo - 1 %][% END %]" => "321" ok 681 - Line 1032 "[% WHILE 1 %][% foo %][% foo = foo - 1 %][% LAST IF foo == 1 %][% END %]" => "32" ok 682 - Line 1033 "[% f = 10; WHILE f; f = f - 1 ; f ; END %]" => "9876543210" ok 683 - Line 1034 "[% f = 10; WHILE f; f = f - 1 ; f ; END ; f %]" => "98765432100" ok 684 - Line 1035 "[% f = 10; a = 2; WHILE f; f = f - 1 ; f ; a=3; END ; a%]" => "98765432103" ok 685 - Line 1037 "[% f = 10; WHILE (g=f); f = f - 1 ; f ; END %]" => "9876543210" ok 686 - Line 1038 "[% f = 10; WHILE (g=f); f = f - 1 ; f ; END ; f %]" => "98765432100" ok 687 - Line 1039 "[% f = 10; a = 2; WHILE (g=f); f = f - 1 ; f ; a=3; END ; a%]" => "98765432103" ok 688 - Line 1040 "[% f = 10; a = 2; WHILE (a=f); f = f - 1 ; f ; a=3; END ; a%]" => "98765432100" ### STOP / RETURN / CLEAR ########################### engine_option (normal) ok 689 - Line 1045 "[% STOP %]" => "" ok 690 - Line 1046 "One[% STOP %]Two" => "One" ok 691 - Line 1047 "[% BLOCK foo %]One[% STOP %]Two[% END %]First[% PROCESS foo %]Last" => "FirstOne" ok 692 - Line 1048 "[% FOREACH f = [1..3] %][% f %][% IF loop.first %][% STOP %][% END %][% END %]" => "1" ok 693 - Line 1049 "[% FOREACH f = [1..3] %][% IF loop.first %][% STOP %][% END %][% f %][% END %]" => "" ok 694 - Line 1051 "[% RETURN %]" => "" ok 695 - Line 1052 "One[% RETURN %]Two" => "One" ok 696 - Line 1053 "[% BLOCK foo %]One[% RETURN %]Two[% END %]First[% PROCESS foo %]Last" => "FirstOneLast" ok 697 - Line 1054 "[% FOREACH f = [1..3] %][% f %][% IF loop.first %][% RETURN %][% END %][% END %]" => "1" ok 698 - Line 1055 "[% FOREACH f = [1..3] %][% IF loop.first %][% RETURN %][% END %][% f %][% END %]" => "" ok 699 - Line 1057 "[% CLEAR %]" => "" ok 700 - Line 1058 "One[% CLEAR %]Two" => "Two" ok 701 - Line 1059 "[% BLOCK foo %]One[% CLEAR %]Two[% END %]First[% PROCESS foo %]Last" => "FirstTwoLast" ok 702 - Line 1060 "[% FOREACH f = [1..3] %][% f %][% IF loop.first %][% CLEAR %][% END %][% END %]" => "23" ok 703 - Line 1061 "[% FOREACH f = [1..3] %][% IF loop.first %][% CLEAR %][% END %][% f %][% END %]" => "123" ok 704 - Line 1062 "[% FOREACH f = [1..3] %][% f %][% IF loop.last %][% CLEAR %][% END %][% END %]" => "" ok 705 - Line 1063 "[% FOREACH f = [1..3] %][% IF loop.last %][% CLEAR %][% END %][% f %][% END %]" => "3" ### post opererative directives ##################### engine_option (normal) ok 706 - Line 1068 "[% GET foo IF 1 %]" => "1" ok 707 - Line 1069 "[% f FOREACH f = [1..3] %]" => "123" ok 708 - Line 1071 "2[% GET foo IF 1 IF 2 %]" => "21" ok 709 - Line 1072 "2[% GET foo IF 1 IF 0 %]" => "2" ok 710 - Line 1073 "[% f FOREACH f = [1..3] IF 1 %]" => "123" ok 711 - Line 1074 "[% f FOREACH f = [1..3] IF 0 %]" => "" ok 712 - Line 1075 "[% f FOREACH f = g FOREACH g = [1..3] %]" => "123" ok 713 - Line 1076 "[% f FOREACH f = g.a FOREACH g = [{a=>1}, {a=>2}, {a=>3}] %]" => "123" ok 714 - Line 1077 "[% f FOREACH f = a FOREACH [{a=>1}, {a=>2}, {a=>3}] %]" => "123" ok 715 - Line 1079 "[% FOREACH f = [1..3] IF 1 %]([% f %])[% END %]" => "(1)(2)(3)" ok 716 - Line 1080 "[% FOREACH f = [1..3] IF 0 %]([% f %])[% END %]" => "" ok 717 - Line 1082 "[% BLOCK bar %][% foo %][% foo = foo - 1 %][% END %][% PROCESS bar WHILE foo %]" => "321" ### capturing ####################################### engine_option (normal) ok 718 - Line 1087 "[% foo = BLOCK %]Hi[% END %][% foo %][% foo %]" => "HiHi" ok 719 - Line 1088 "[% BLOCK foo %]Hi[% END %][% bar = PROCESS foo %]-[% bar %]" => "-Hi" ok 720 - Line 1089 "[% foo = IF 1 %]Hi[% END %][% foo %]" => "Hi" ok 721 - Line 1090 "[% BLOCK foo %]([% i %])[% END %][% wow = PROCESS foo i='bar' %][% wow %]" => "(bar)" ok 722 - Line 1091 "[% BLOCK foo %]([% i %])[% END %][% SET wow = PROCESS foo i='bar' %][% wow %]" => "(bar)" ### TAGS ############################################ engine_option (normal) ok 723 - Line 1096 "[% TAGS asp %]<% 1 + 2 %>" => "3" ok 724 - Line 1097 "[% TAGS default %][% 1 + 2 %]" => "3" ok 725 - Line 1098 "[% TAGS html %]" => "3" ok 726 - Line 1099 "[% TAGS mason %]<% 1 + 2 >" => "3" ok 727 - Line 1100 "[% TAGS metatext %]%% 1 + 2 %%" => "3" ok 728 - Line 1101 "[% TAGS php %]" => "3" ok 729 - Line 1102 "[% TAGS star %][* 1 + 2 *]" => "3" ok 730 - Line 1103 "[% TAGS template %][% 1 + 2 %]" => "3" ok 731 - Line 1104 "[% TAGS template1 %][% 1 + 2 %]" => "3" ok 732 - Line 1105 "[% TAGS template1 %]%% 1 + 2 %%" => "3" ok 733 - Line 1106 "[% TAGS tt2 %][% 1 + 2 %]" => "3" ok 734 - Line 1108 "[% TAGS html %] " => "3" ok 735 - Line 1109 "[% TAGS html %]" => "3" ok 736 - Line 1110 "[% TAGS html %] # " => "3" ok 737 - Line 1111 "[% BLOCK foo %][% TAGS html %] " => "3 3" ok 738 - Line 1112 "[% BLOCK foo %][% TAGS html %][% END %][% PROCESS foo %] [% 1 + 2 %]" => "" ok 739 - Line 1114 "[% TAGS %]" => "3" ok 740 - Line 1116 "[% TAGS [<] [>] %][<] 1 + 2 [>]" => "3" ok 741 - Line 1117 "[% TAGS '[<]' '[>]' %][<] 1 + 2 [>]" => "3" ok 742 - Line 1118 "[% TAGS /[<]/ /[>]/ %]< 1 + 2 >" => "3" ok 743 - Line 1119 "[% TAGS ** ** %]** 1 + 2 **" => "3" ok 744 - Line 1120 "[% TAGS '**' '**' %]** 1 + 2 **" => "3" ok 745 - Line 1121 "[% TAGS /**/ /**/ %]** 1 + 2 **" => "" ok 746 - Line 1123 "[% TAGS html -->" => "3" ok 747 - Line 1124 "[% TAGS html ; 7 -->" => "73" ok 748 - Line 1125 "[% TAGS html ; 7 %]" => "" ### SWITCH / CASE ################################### engine_option (normal) ok 749 - Line 1130 "[% SWITCH 1 %][% END %]hi" => "hi" ok 750 - Line 1131 "[% SWITCH 1 %][% CASE %]bar[% END %]hi" => "barhi" ok 751 - Line 1132 "[% SWITCH 1 %]Pre[% CASE %]bar[% END %]hi" => "barhi" ok 752 - Line 1133 "[% SWITCH 1 %][% CASE DEFAULT %]bar[% END %]hi" => "barhi" ok 753 - Line 1134 "[% SWITCH 1 %][% CASE 0 %]bar[% END %]hi" => "hi" ok 754 - Line 1135 "[% SWITCH 1 %][% CASE 1 %]bar[% END %]hi" => "barhi" ok 755 - Line 1136 "[% SWITCH 1 %][% CASE foo %][% CASE 1 %]bar[% END %]hi" => "barhi" ok 756 - Line 1137 "[% SWITCH 1 %][% CASE [1..10] %]bar[% END %]hi" => "barhi" ok 757 - Line 1138 "[% SWITCH 11 %][% CASE [1..10] %]bar[% END %]hi" => "hi" ok 758 - Line 1140 "[% SWITCH 1.0 %][% CASE [1..10] %]bar[% END %]hi" => "barhi" ### TRY / THROW / CATCH / FINAL ##################### engine_option (normal) ok 759 - Line 1145 "[% TRY %][% END %]hi" => "hi" ok 760 - Line 1146 "[% TRY %]Foo[% END %]hi" => "Foohi" ok 761 - Line 1147 "[% TRY %]Foo[% THROW foo 'for fun' %]bar[% END %]hi" => "" ok 762 - Line 1148 "[% TRY %]Foo[% THROW foo 'for fun' %]bar[% CATCH %][% END %]hi" => "Foohi" ok 763 - Line 1149 "[% TRY %]Foo[% THROW foo 'for fun' %]bar[% CATCH %]there[% END %]hi" => "Footherehi" ok 764 - Line 1150 "[% TRY %]Foo[% THROW foo 'for fun' %]bar[% CATCH foo %]there[% END %]hi" => "Footherehi" ok 765 - Line 1151 "[% TRY %]Foo[% TRY %]Foo[% THROW foo 'for fun' %][% CATCH bar %]one[% END %][% CATCH %]two[% END %]hi" => "FooFootwohi" ok 766 - Line 1152 "[% TRY %]Foo[% TRY %]Foo[% THROW foo 'for fun' %][% CATCH bar %]one[% END %][% CATCH s %]two[% END %]hi" => "" ok 767 - Line 1153 "[% TRY %]Foo[% THROW foo.bar 'for fun' %][% CATCH foo %]one[% CATCH foo.bar %]two[% END %]hi" => "Footwohi" ok 768 - Line 1155 "[% TRY %]Foo[% FINAL %]Bar[% END %]hi" => "FooBarhi" ok 769 - Line 1156 "[% TRY %]Foo[% THROW foo %][% FINAL %]Bar[% CATCH %]one[% END %]hi" => "" ok 770 - Line 1157 "[% TRY %]Foo[% THROW foo %][% CATCH %]one[% FINAL %]Bar[% END %]hi" => "FoooneBarhi" ok 771 - Line 1158 "[% TRY %]Foo[% THROW foo %][% CATCH bar %]one[% FINAL %]Bar[% END %]hi" => "" ok 772 - Line 1160 "[% TRY %][% THROW foo 'bar' %][% CATCH %][% error %][% END %]" => "foo error - bar" ok 773 - Line 1161 "[% TRY %][% THROW foo 'bar' %][% CATCH %][% error.type %][% END %]" => "foo" ok 774 - Line 1162 "[% TRY %][% THROW foo 'bar' %][% CATCH %][% error.info %][% END %]" => "bar" ok 775 - Line 1163 "[% TRY %][% THROW foo %][% CATCH %][% error.type %][% END %]" => "undef" ok 776 - Line 1164 "[% TRY %][% THROW foo %][% CATCH %][% error.info %][% END %]" => "foo" ### named args ###################################### engine_option (normal) ok 777 - Line 1170 "[% foo(bar = 'one', baz = 'two') %]" => "baronebaztwo" ok 778 - Line 1172 "[%bar='ONE'%][% foo($bar = 'one') %]" => "ONEone" ### USE ############################################# engine_option (normal) ok 779 - Line 1178 "[% USE son_of_gun_that_does_not_exist %]one" => "" ok 780 - Line 1179 "[% USE Iterator([3..6]) %]hey[% CALL Iterator.get_first; Iterator.size %]" => "hey4" ok 781 - Line 1180 "[% USE FooTest %]one" => "one" ok 782 - Line 1181 "[% USE FooTest2 %]one" => "one" ok 783 - Line 1182 "[% USE FooTest(bar = 'baz') %]one[% FooTest.bar %]" => "onebarbaz" ok 784 - Line 1183 "[% USE FooTest2(bar = 'baz') %]one[% FooTest2.bar %]" => "onebarbaz" ok 785 - Line 1184 "[% USE FooTest(bar = 'baz') %]one[% FooTest.bar %]" => "onebarbaz" ok 786 - Line 1185 "[% USE d = FooTest(bar = 'baz') %]one[% d.bar %]" => "onebarbaz" ok 787 - Line 1186 "[% USE d.d = FooTest(bar = 'baz') %]one[% d.d.bar %]" => "" ok 788 - Line 1187 "[% USE FooTest(somerand = 8) %]one[% FooTest.somerand %]" => "one8" ok 789 - Line 1189 "[% USE a(bar = 'baz') %]one[% a.seven %]" => "" ok 790 - Line 1190 "[% USE a(bar = 'baz') %]one[% a.seven %]" => "one7" ok 791 - Line 1193 "[% USE FooTest %]three" => "three" ### MACRO ########################################### engine_option (normal) ok 792 - Line 1198 "[% MACRO foo PROCESS bar %][% BLOCK bar %]Hi[% END %][% foo %]" => "Hi" ok 793 - Line 1199 "[% MACRO foo BLOCK %]Hi[% END %][% foo %]" => "Hi" ok 794 - Line 1200 "[% MACRO foo BLOCK %]Hi[% END %][% foo %]" => "Hi" ok 795 - Line 1201 "[% MACRO foo(n) BLOCK %]Hi[% n %][% END %][% foo(2) %]" => "Hi2" ok 796 - Line 1202 "[%n=1%][% MACRO foo(n) BLOCK %]Hi[% n %][% END %][% foo(2) %][%n%]" => "Hi21" ok 797 - Line 1203 "[%n=1%][% MACRO foo BLOCK %]Hi[% n = 2%][% END %][% foo %][%n%]" => "Hi1" ok 798 - Line 1204 "[% MACRO foo(n) FOREACH i=[1..n] %][% i %][% END %][% foo(3) %]" => "123" ok 799 - Line 1206 "[% MACRO f BLOCK %]>[% TRY; f ; CATCH ; "caught" ; END %][% END %][% f %]" => ">>>caught" ok 800 - Line 1209 "[% foo = ->{ 'Hi' } %][% foo %]" => "Hi" ok 801 - Line 1210 "[% foo = ->{ 'Hi'; this } %][% foo(2) %]" => "Hi2" ok 802 - Line 1211 "[% foo = ->(n){ 'Hi'; n } %][% foo(2) %]" => "Hi2" ok 803 - Line 1212 "[%n=1%][% foo = ->(n) { 'Hi' ; n } %][% foo(2) %][%n%]" => "Hi21" ok 804 - Line 1213 "[% foo = ->(n) { FOREACH i=[1..n]; i ; END } %][% foo(3) %]" => "123" ### DEBUG ########################################### engine_option (normal) ok 805 - Line 1219 " # # [% one %]" => " # # # \#\# input text line 3 : [% one %] \#\# # ONE" ok 806 - Line 1220 "[% one %]" => " # \#\# input text line 1 : [% one %] \#\# # ONE" ok 807 - Line 1221 "[% one %] # # " => "(1)ONE # # " ok 808 - Line 1222 "1 # 2 # 3[% one %]" => "1 # 2 # 3(3)ONE" ok 809 - Line 1223 "[% one; # one %]" => "(1)ONE(2)ONE" ok 810 - Line 1225 "[% DEBUG format '($line)' %][% one %]" => " # \#\# input text line 1 : [% DEBUG format '($line)' %] \#\# # (1)ONE" ok 811 - Line 1227 "[% TRY %][% abc %][% CATCH %][% error %][% END %]" => "undef error - abc is undefined # " ok 812 - Line 1229 "[% TRY %][% abc.def %][% CATCH %][% error %][% END %]" => "undef error - abc.def is undefined # " ### constants ####################################### engine_option (normal) ok 813 - Line 1248 "[% constants.harry %]" => "do_this_once" ok 814 - Line 1249 "[% constants.harry.length %]" => "12" ok 815 - Line 1250 "[% SET constants.something = 1 %][% constants.something %]one" => "1one" ok 816 - Line 1251 "[% SET constants.harry = 1 %][% constants.harry %]one" => "do_this_onceone" ok 817 - Line 1252 "[% constants.foo.${constants.bang} %]" => "57" ok 818 - Line 1253 "[% constants.foo.$bam.${constants.bing} %]" => "42" ok 819 - Line 1254 "[% bam = 'somethingelse' %][% constants.foo.$bam.${constants.bing} %]" => "42" ok 820 - Line 1256 "[% constants.${"harry"} %]" => "do_this_once" ok 821 - Line 1257 "[% ${"constants"}.harry %]" => "foo" ok 822 - Line 1259 "[% ${"con${"s"}tants"}.harry %]" => "foo" ### CONTEXT ######################################### engine_option (normal) ok 823 - Line 1265 "[% CALL cctx.call_me %][% cctx.last_context %]" => "list" ok 824 - Line 1266 "[% cctx.array %]" => "ARRAY(0x7f8019873160)" ok 825 - Line 1267 "[% cctx.array2 %]" => "4" ok 826 - Line 1268 "[% cctx.list %]" => "ARRAY(0x7f801989b520)" ok 827 - Line 1269 "[% cctx.scalar %]" => "8" ok 828 - Line 1270 "[% cctx.bang %]" => "bing" ok 829 - Line 1274 "[% CALL cctx.call_me %][% cctx.last_context %]" => "list" ok 830 - Line 1275 "[% CALL @(cctx.call_me) %][% cctx.last_context %]" => "list" ok 831 - Line 1276 "[% CALL $(cctx.call_me) %][% cctx.last_context %]" => "scalar" ok 832 - Line 1277 "[% CALL call_cctx %][% cctx.last_context %]" => "list" ok 833 - Line 1278 "[% CALL @(call_cctx) %][% cctx.last_context %]" => "list" ok 834 - Line 1279 "[% CALL $(call_cctx) %][% cctx.last_context %]" => "scalar" ok 835 - Line 1280 "[% CALL cctx.call_me %][% cctx.last_context %]" => "list" ok 836 - Line 1281 "[% CALL cctx.call_me %][% cctx.last_context.0 %]" => "list" ok 837 - Line 1282 "[% CALL cctx.call_me %][% cctx.last_context %]" => "scalar" ok 838 - Line 1283 "[% cctx.array %]" => "ARRAY(0x7f801989c1b0)" ok 839 - Line 1284 "[% @(cctx.array) %]" => "ARRAY(0x7f801989bc28)" ok 840 - Line 1285 "[% $(cctx.array) %]" => "3" ok 841 - Line 1286 "[% cctx.array2 %]" => "4" ok 842 - Line 1287 "[% @(cctx.array2) %]" => "ARRAY(0x7f801989d8e0)" ok 843 - Line 1288 "[% $(cctx.array2) %]" => "1" ok 844 - Line 1289 "[% cctx.list %]" => "ARRAY(0x7f80188252b8)" ok 845 - Line 1290 "[% @(cctx.list) %]" => "ARRAY(0x7f801989da00)" ok 846 - Line 1291 "[% $(cctx.list) %]" => "7" ok 847 - Line 1292 "[% cctx.scalar %]" => "8" ok 848 - Line 1293 "[% @(cctx.scalar) %]" => "ARRAY(0x7f801989c270)" ok 849 - Line 1294 "[% $(cctx.scalar) %]" => "8" ok 850 - Line 1295 "[% cctx.bang %] ~" => "bing ~" ok 851 - Line 1296 "[% @(cctx.bang) %] ~" => "bing ~" ok 852 - Line 1297 "[% $(cctx.bang) %] ~" => "bing ~" ok 853 - Line 1299 "[% CONFIG CALL_CONTEXT => "list"; CALL cctx.call_me; CONFIG CALL_CONTEXT => "smart" %][% cctx.last_context %]" => "list" ok 854 - Line 1301 "[% CONFIG CALL_CONTEXT => "item"; CALL cctx.call_me %][% cctx.last_context %]" => "scalar" ok 855 - Line 1303 "[% cctx.dataref.0.foo = 7; cctx.dataref.0.foo %]" => "7" ok 856 - Line 1305 "[% @(cctx.dataref).0.foo = 7; cctx.dataref.foo %]" => "7" ok 857 - Line 1307 "[% $(cctx.dataref).0.foo = 7; cctx.dataref.0.foo %]" => "7" ok 858 - Line 1309 "[% CONFIG CALL_CONTEXT => "list"; cctx.dataref.0.foo = 7; CONFIG CALL_CONTEXT => "item"; cctx.dataref.foo %]" => "7" ok 859 - Line 1314 "[% cctxo.bang = 1 %] ~" => " ~" ok 860 - Line 1315 "[% cctxo.dataref.foo = 7; cctxo.dataref.foo %]" => "7" ok 861 - Line 1317 "[% CALL cctxo.call_me %][% cctxo.last_context %]" => "list" ok 862 - Line 1318 "[% CALL @(cctxo.call_me) %][% cctxo.last_context %]" => "list" ok 863 - Line 1319 "[% CALL $(cctxo.call_me) %][% cctxo.last_context %]" => "scalar" ok 864 - Line 1320 "[% CALL call_cctxo %][% cctxo.last_context %]" => "list" ok 865 - Line 1321 "[% CALL @(call_cctxo) %][% cctxo.last_context %]" => "list" ok 866 - Line 1322 "[% CALL $(call_cctxo) %][% cctxo.last_context %]" => "scalar" ok 867 - Line 1323 "[% CALL cctxo.call_me %][% cctxo.last_context %]" => "list" ok 868 - Line 1324 "[% CALL cctxo.call_me %][% cctxo.last_context.0 %]" => "list" ok 869 - Line 1325 "[% CALL cctxo.call_me %][% cctxo.last_context %]" => "scalar" ok 870 - Line 1326 "[% cctxo.array %]" => "ARRAY(0x7f80189c2f58)" ok 871 - Line 1327 "[% @(cctxo.array) %]" => "ARRAY(0x7f801988efc8)" ok 872 - Line 1328 "[% $(cctxo.array) %]" => "3" ok 873 - Line 1329 "[% cctxo.array2 %]" => "4" ok 874 - Line 1330 "[% @(cctxo.array2) %]" => "ARRAY(0x7f80198912a0)" ok 875 - Line 1331 "[% $(cctxo.array2) %]" => "1" ok 876 - Line 1332 "[% cctxo.list %]" => "ARRAY(0x7f801989e078)" ok 877 - Line 1333 "[% @(cctxo.list) %]" => "ARRAY(0x7f801988e9c8)" ok 878 - Line 1334 "[% $(cctxo.list) %]" => "7" ok 879 - Line 1335 "[% cctxo.scalar %]" => "8" ok 880 - Line 1336 "[% @(cctxo.scalar) %]" => "ARRAY(0x7f8019891438)" ok 881 - Line 1337 "[% $(cctxo.scalar) %]" => "8" ok 882 - Line 1338 "[% cctxo.bang %] ~" => "bing ~" ok 883 - Line 1341 "[% SET cctxo.call_me = 2 %][% cctxo.last_context %]" => "list2" ok 884 - Line 1343 "[% CALL @(cctxo.call_me = 3) %][% cctxo.last_context %]" => "list3" ok 885 - Line 1345 "[% CALL $(cctxo.call_me = 4) %][% cctxo.last_context %]" => "scalar4" ### INTERPOLATE ##################################### engine_option (normal) ok 886 - Line 1351 "Foo $one Bar" => "Foo ONE Bar" ok 887 - Line 1352 "[% PERL %] my $n=7; print $n [% END %]" => "7" ok 888 - Line 1353 "[% TRY ; PERL %] my $n=7; print $n [% END ; END %]" => "7" ok 889 - Line 1357 "Foo \ Bar" => "Foo \ Bar" ok 890 - Line 1358 "Foo \\ Bar" => "Foo \\ Bar" ok 891 - Line 1359 "Foo \n Bar" => "Foo \n Bar" ok 892 - Line 1360 "Foo \$a Bar" => "Foo $a Bar" ok 893 - Line 1361 "Foo \\$a Bar" => "Foo \\7 Bar" ok 894 - Line 1362 "Foo \\\$a Bar" => "Foo \\$a Bar" ok 895 - Line 1363 "Foo $a.B Bar" => "Foo 7 Bar" ok 896 - Line 1364 "Foo ${ a.B } Bar" => "Foo 7 Bar" ok 897 - Line 1365 "Foo $a.b.c("hi") Bar" => "Foo Bar" ok 898 - Line 1367 "Foo ${a.b.c("hi")} Bar" => "Foo Bar" ok 899 - Line 1368 "Foo $a Bar $!a Baz" => "Foo 7 Bar 7 Baz" ok 900 - Line 1369 "Foo $a Bar $!{a} Baz" => "Foo 7 Bar 7 Baz" ok 901 - Line 1370 "Foo $a Bar $!a Baz" => "Foo 7 Bar 7 Baz" ok 902 - Line 1371 "Foo $a Bar $!{a} Baz" => "Foo 7 Bar 7 Baz" ok 903 - Line 1372 "Foo $a Bar $!a Baz" => "Foo $a Bar Baz" ok 904 - Line 1373 "Foo ${a} Bar $!{a} Baz" => "Foo ${a} Bar Baz" ### ANYCASE / TRIM ################################## engine_option (normal) ok 905 - Line 1378 "[% GET %]" => "" ok 906 - Line 1379 "[% GET GET %]" => "ONE" ok 907 - Line 1380 "[% get one %]" => "ONE" ok 908 - Line 1381 "[% get %]" => "" ok 909 - Line 1382 "[% get get %]" => "ONE" ok 910 - Line 1384 "[% BLOCK foo %] # hi # [% END %][% PROCESS foo %]" => " # hi # " ok 911 - Line 1385 "[% BLOCK foo %] # hi[% END %][% PROCESS foo %]" => "hi" ok 912 - Line 1386 "[% BLOCK foo %]hi # [% END %][% PROCESS foo %]" => "hi" ok 913 - Line 1387 "[% BLOCK foo %]hi[% nl %][% END %][% PROCESS foo %]" => "hi" ok 914 - Line 1388 "[% BLOCK foo %][% nl %]hi[% END %][% PROCESS foo %]" => "hi" ok 915 - Line 1389 "A[% TRY %] # hi # [% END %]" => "A # hi" ok 916 - Line 1391 "[% FOO %]" => "foo" ### V1DOLLAR ######################################## engine_option (normal) ok 917 - Line 1396 "[% a %]|[% $a %]|[% ${ a } %]|[% ${ "a" } %]" => "A|bar|bar|A" ok 918 - Line 1397 "[% a %]|[% $a %]|[% ${ a } %]|[% ${ "a" } %]" => "A|A|bar|A" ok 919 - Line 1400 "[% a.b.c %]|[% $a.b.c %]|[% a.$b.c %]|[% ${ a.b.c } %]" => "Cb||CB|bar" ok 920 - Line 1401 "[% a.b.c %]|[% $a.b.c %]|[% a.$b.c %]|[% ${ a.b.c } %]" => "Cb|Cb|Cb|bar" ok 921 - Line 1403 "[% "$a" %]/$a/[% "${a}" %]/${a}" => "A/$a/A/${a}" ok 922 - Line 1404 "[% "$a" %]/$a/[% "${a}" %]/${a}" => "A/$a/A/${a}" ok 923 - Line 1405 "[% "$a" %]/$a/[% "${a}" %]/${a}" => "A/A/A/A" ok 924 - Line 1406 "[% "$a" %]/$a/[% "${a}" %]/${a}" => "A/A/A/A" ok 925 - Line 1408 "[% constants.a %]|[% $constants.a %]|[% constants.$a %]" => "A|A|A" ### V2PIPE / V2EQUALS ############################### engine_option (normal) ok 926 - Line 1413 "[%- BLOCK a %]b is [% b %] # [% END %] # [%- PROCESS a b => 237 | repeat(2) %]" => "b is 237 # b is 237 # " ok 927 - Line 1418 "[%- BLOCK a %]b is [% b %] # [% END %] # [%- PROCESS a b => 237 | repeat(2) %]" => "b is 237237 # " ok 928 - Line 1422 "[% ('a' == 'b') || 0 %]" => "0" ok 929 - Line 1423 "[% ('a' != 'b') || 0 %]" => "1" ok 930 - Line 1424 "[% ('a' == 'b') || 0 %]" => "0" ok 931 - Line 1425 "[% ('a' != 'b') || 0 %]" => "1" ok 932 - Line 1426 "[% ('a' == 'b') || 0 %]" => "1" ok 933 - Line 1427 "[% ('a' != 'b') || 0 %]" => "0" ok 934 - Line 1428 "[% ('7' == '7.0') || 0 %]" => "0" ok 935 - Line 1429 "[% ('7' == '7.0') || 0 %]" => "1" ok 936 - Line 1430 "[% (7 == 7.0) || 0 %]" => "1" ok 937 - Line 1431 "[% (7 == 7.0) || 0 %]" => "1" ### configuration ################################### engine_option (normal) ok 938 - Line 1436 "[% a = 7 %]$a" => "7" ok 939 - Line 1437 "[% a = 7 %]$a" => "7" ### PERL ############################################ engine_option (normal) ok 940 - Line 1442 "[% TRY %][% PERL %][% END %][% CATCH ; error; END %]" => "perl error - EVAL_PERL not set" ok 941 - Line 1443 "[% PERL %] print "[% one %]" [% END %]" => "ONE" ok 942 - Line 1444 "[% PERL %] print $stash->get('one') [% END %]" => "ONE" ok 943 - Line 1445 "[% PERL %] print $stash->set('a.b.c', 7) [% END %][% a.b.c %]" => "77" ok 944 - Line 1446 "[% RAWPERL %]$output .= 'interesting'[% END %]" => "interesting" ### recursion prevention ############################ engine_option (normal) ok 945 - Line 1451 "[% BLOCK foo %][% PROCESS bar %][% END %][% BLOCK bar %][% PROCESS foo %][% END %][% PROCESS foo %]" => "" ### META ############################################ engine_option (normal) ok 946 - Line 1456 "[% template.name %]" => "input text" ok 947 - Line 1457 "[% META foo = 'bar' %][% template.foo %]" => "bar" ok 948 - Line 1458 "[% META name = 'bar' %][% template.name %]" => "bar" ok 949 - Line 1459 "[% META foo = 'bar' %][% component.foo %]" => "bar" ok 950 - Line 1460 "[% META foo = 'bar' %][% component = '' %][% component.foo %]|foo" => "|foo" ok 951 - Line 1461 "[% META foo = 'bar' %][% template = '' %][% template.foo %]|foo" => "|foo" ### references ###################################### engine_option (normal) ok 952 - Line 1466 "[% a=3; b=\a; b; a %]" => "33" ok 953 - Line 1467 "[% a=3; b=\a; a=7; b; a %]" => "77" ok 954 - Line 1469 "[% a={}; a.1=7; b=\a.1; b; a.1 %]" => "77" ok 955 - Line 1470 "[% a={}; a.1=7; b=\a.20; a.20=7; b; a.20 %]" => "77" ok 956 - Line 1472 "[% a=[]; a.1=7; b=\a.1; b; a.1 %]" => "77" ok 957 - Line 1473 "[% a=[]; a.1=7; b=\a.20; a.20=7; b; a.20 %]" => "77" ok 958 - Line 1475 "[% \a %]" => "CODE(0x7f80198b0268)" ok 959 - Line 1476 "[% b=\a; b %]" => "a sub []" ok 960 - Line 1477 "[% b=\a(1); b %]" => "a sub [1]" ok 961 - Line 1478 "[% b=\a; b(2) %]" => "a sub [2]" ok 962 - Line 1479 "[% b=\a(1); b(2) %]" => "a sub [1 2]" ok 963 - Line 1480 "[% f=\j.k; j.k=7; f %]" => "7" ok 964 - Line 1482 "[% a = "a" ; f = {a=>"A",b=>"B"} ; foo = \f.$a ; foo %]" => "A" ok 965 - Line 1483 "[% a = "a" ; f = {a=>"A",b=>"B"} ; foo = \f.$a ; a = "b" ; foo %]" => "A" ok 966 - Line 1484 "[% a = "ab" ; f = "abcd"; foo = \f.replace(a, "-AB-") ; a = "cd"; foo %]" => "-AB-cd" ok 967 - Line 1485 "[% a = "ab" ; f = "abcd"; foo = \f.replace(a, "-AB-").replace("-AB-", "*") ; a = "cd"; foo %]" => "*cd" ok 968 - Line 1487 "[% a = "ab" ; f = "abcd"; foo = \f.replace(a, "-AB-") ; f = "ab"; foo %]" => "-AB-cd" ok 969 - Line 1488 "[% a = "ab" ; f = "abcd"; foo = \f.replace(a, "-AB-").replace("-AB-", "*") ; f = "ab"; foo %]" => "*cd" ### reserved words ################################## engine_option (normal) ok 970 - Line 1499 "[% GET %]" => "" ok 971 - Line 1500 "[% GET GET %]" => "named_get" ok 972 - Line 1501 "[% GET get %]" => "lower_named_get" ok 973 - Line 1502 "[% GET ${'GET'} %]" => "bar" ok 974 - Line 1504 "[% GET = 1 %][% GET GET %]" => "" ok 975 - Line 1505 "[% SET GET = 1 %][% GET GET %]" => "1" ok 976 - Line 1507 "[% GET $hold_get %]" => "named_get" ok 977 - Line 1508 "[% GET $GET %]" => "value of named_get" ok 978 - Line 1509 "[% BLOCK GET %]hi[% END %][% PROCESS GET %]" => "hi" ok 979 - Line 1510 "[% BLOCK foo %]hi[% END %][% PROCESS foo a = GET %]" => "hi" ok 980 - Line 1511 "[% BLOCK foo %]hi[% END %][% PROCESS foo GET = 1 %]" => "" ok 981 - Line 1512 "[% BLOCK foo %]hi[% END %][% PROCESS foo IF GET %]" => "hi" ### embedded items ################################## engine_option (normal) ok 982 - Line 1517 "[% " \" " %]" => " " " ok 983 - Line 1518 "[% " \$foo " %]" => " $foo " ok 984 - Line 1519 "[% " \${foo} " %]" => " ${foo} " ok 985 - Line 1520 "[% " \n " %]" => " # " ok 986 - Line 1521 "[% " \t " %]" => " " ok 987 - Line 1522 "[% " \r " %]" => " " ok 988 - Line 1524 "[% 'foo\'bar' %]" => "foo'bar" ok 989 - Line 1525 "[% "foo\"bar" %]" => "foo"bar" ok 990 - Line 1526 "[% qw(foo \)).1 %]" => ")" ok 991 - Line 1527 "[% qw|foo \||.1 %]" => "|" ok 992 - Line 1529 "[% ' \' ' %]" => " ' " ok 993 - Line 1530 "[% ' \r ' %]" => " \r " ok 994 - Line 1531 "[% ' \n ' %]" => " \n " ok 995 - Line 1532 "[% ' \t ' %]" => " \t " ok 996 - Line 1533 "[% ' $foo ' %]" => " $foo " ok 997 - Line 1535 "[% A = "bar" ; ${ "A" } %]" => "bar" ok 998 - Line 1536 "[% A = "bar" ; "(${ A })" %]" => "(bar)" ok 999 - Line 1537 "[% A = "bar" ; ${ {a => "A"}.a } %]" => "bar" ok 1000 - Line 1538 "[% A = "bar" ; "(${ {a => "A"}.a })" %]" => "(A)" ok 1001 - Line 1539 "[% A = "bar" ; "(${ ${ {a => "A"}.a } })" %]" => "(bar)" ok 1002 - Line 1540 "[% A = "bar" %](${ {a => "A"}.a })" => "(A)" ok 1003 - Line 1541 "[% A = "bar" %](${ ${ {a => "A"}.a } })" => "(bar)" ok 1004 - Line 1543 "[% "[%" %]" => "[%" ok 1005 - Line 1544 "[% "%]" %]" => "%]" ok 1006 - Line 1545 "[% a = "[% %]" %][% a %]" => "[% %]" ok 1007 - Line 1546 "[% qw([% 1 + 2 %]).join %]" => "[% 1 + 2 %]" ### STRICT ########################################## engine_option (normal) ok 1008 - Line 1550 "[% TRY; foo; CATCH; error; END %]" => "var.undef error - undefined variable: foo in input text" ok 1009 - Line 1551 "[% TRY; foo.bar(1); CATCH; error; END %]" => "var.undef error - undefined variable: foo.bar(1) in input text" ok 1010 - Line 1552 "[% TRY; 1 IF foo.bar.baz; CATCH; error; END %]" => "var.undef error - undefined variable: foo.bar.baz in input text" ok 1011 - Line 1554 "[% foo.bar() %]ok" => "ok" ok 1012 - Line 1555 "[% foo.baz() %]ok" => "" ### EVALUATE ######################################## engine_option (normal) ok 1013 - Line 1561 "[% foo | eval %]" => "baz" ok 1014 - Line 1563 "[% "[% 1 + 2 %]" | eval %]" => "3" ok 1015 - Line 1564 "[% qw([% 1 + 2 %]).join.eval %]" => "3" ok 1016 - Line 1566 "[% f = ">[% TRY; f.eval ; CATCH; 'caught' ; END %]"; f.eval %]" => ">>>>>caught" ok 1017 - Line 1567 "[% f = ">[% TRY; f.eval ; CATCH; 'caught' ; END %]"; f.eval; f.eval %]" => ">>>>>caught>>>>>caught" ok 1018 - Line 1568 "[% f = ">[% TRY; f.eval ; CATCH; 'foo' ; END %]"; f.eval;f.eval %]" => ">>foo>>foo" ok 1019 - Line 1569 "[% '\#set($foo = 12)'|eval(syntax => 'velocity') %]|[% foo %]" => "|12" ok 1020 - Line 1571 "[% f = ">[% TRY; f.eval ; CATCH; 'caught' ; END %]"; EVALUATE f %]" => ">>>>>caught" ok 1021 - Line 1572 "[% f = ">[% TRY; f.eval ; CATCH; 'foo' ; END %]"; EVALUATE f; EVALUATE f %]" => ">>foo>>foo" ok 1022 - Line 1573 "[% EVALUATE '\#set($foo = 12)' syntax => 'velocity' %]|[% foo %]" => "|12" ok 1023 - Line 1575 "[% TRY; '[% bar %]'.eval(STRICT => 1); CATCH; error; END %]" => "var.undef error - undefined variable: bar in input text" ok 1024 - Line 1576 "[% TRY; CONFIG STRICT => 1; '[% bar %]'.eval(STRICT => 0); CATCH; error; END %]" => "eval_strict error - Cannot disable STRICT once it is enabled" ok 1025 - Line 1577 "[% TRY; '[% bar %]'.eval(STRICT => 1); CATCH; error.type; END; bing %] - ok" => "var.undef - ok" ### DUMP ############################################ engine_option (normal) ok 1026 - Line 1585 "[% DUMP a %]" => "DUMP: File "input text" line 1 # a = undef; # " ok 1027 - Line 1586 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 a = undef;" ok 1028 - Line 1587 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 a = 's';" ok 1029 - Line 1588 "[% # p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 2 a = 's';" ok 1030 - Line 1589 "[% p = DUMP a, b; p.collapse %]" => "DUMP: File "input text" line 1 a, b = [ 's', undef ];" ok 1031 - Line 1590 "[% p = DUMP a Useqq => 'b'; p.collapse %]" => "DUMP: File "input text" line 1 a Useqq => 'b' = [ 's', { 'Useqq' => 'b' } ];" ok 1032 - Line 1591 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 a = "s";" ok 1033 - Line 1592 "[% p = DUMP a; p.collapse %]|foo" => "|foo" ok 1034 - Line 1593 "[% p = DUMP _a, b; p.collapse %]" => "DUMP: File "input text" line 1 _a, b = [ undef, 'c' ];" ok 1035 - Line 1594 "[% p = DUMP {a => 'b'}; p.collapse %]" => "DUMP: File "input text" line 1 {a => 'b'} = { 'a' => 'b' };" ok 1036 - Line 1595 "[% p = DUMP _a; p.collapse %]" => "DUMP: File "input text" line 1 _a = undef;" ok 1037 - Line 1596 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 a = { 'b' => 'c' };" ok 1038 - Line 1597 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 a = {};" ok 1039 - Line 1598 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 a = {};" ok 1040 - Line 1599 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 Dump(7)" ok 1041 - Line 1600 "[% p = DUMP a; p.collapse %]" => "a = 's';" ok 1042 - Line 1601 "[% p = DUMP a; p.collapse %]" => "
a = 's'; 
" ok 1043 - Line 1603 "[% p = DUMP a; p.collapse %]" => "
a = 's'; 
" ok 1044 - Line 1604 "[% p = DUMP a; p.collapse %]" => "a = 's';" ok 1045 - Line 1606 "[% SET global; p = DUMP; p.collapse %]" => "DUMP: File "input text" line 1 EntireStash = { 'a' => 'b', 'global' => undef };" ok 1046 - Line 1607 "[% SET global; p = DUMP; p.collapse %]" => "DUMP: File "input text" line 1 EntireStash = { 'a' => 'b', 'global' => undef };" ok 1047 - Line 1608 "[% SET global; p = DUMP; p.collapse %]" => "DUMP: File "input text" line 1" ### SYNTAX ########################################## engine_option (normal) ok 1048 - Line 1615 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "" ok 1049 - Line 1616 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "b is 237237" ok 1050 - Line 1617 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "b is 237237" ok 1051 - Line 1618 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "b is 237237" ok 1052 - Line 1619 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "b is 237b is 237" ok 1053 - Line 1620 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "b is 237b is 237" ok 1054 - Line 1621 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "b is 237b is 237" ok 1055 - Line 1624 "[% a %]|[% $a %]|[% ${ a } %]|[% ${ "a" } %]" => "A|bar|bar|A" ok 1056 - Line 1625 "[% a %]|[% $a %]|[% ${ a } %]|[% ${ "a" } %]" => "A|bar|bar|A" ok 1057 - Line 1626 "[% a %]|[% $a %]|[% ${ a } %]|[% ${ "a" } %]" => "A|A|bar|A" ok 1058 - Line 1628 "" => "FOO" ok 1059 - Line 1629 "" => "7 8" ok 1060 - Line 1630 "" => "1" ok 1061 - Line 1631 "" => "1" ok 1062 - Line 1632 "d" => "" ok 1063 - Line 1634 "[% ""|eval(syntax => 'hte') %] = [% 6 %]" => "6 = 6" ok 1064 - Line 1635 "[% ""|eval(syntax => 'ht') %] = [% 6 %]" => "" ok 1065 - Line 1636 "[% ""|eval(syntax => 'ht') %] = [% 12 %]" => "12 = 12" ### CONFIG ########################################## engine_option (normal) ok 1066 - Line 1644 "[% CONFIG ANYCASE => 1 %][% get 234 %]" => "234" ok 1067 - Line 1645 "[% CONFIG anycase => 1 %][% get 234 %]" => "234" ok 1068 - Line 1646 "[% CONFIG PRE_CHOMP => '-' %] # [% 234 %]" => "234" ok 1069 - Line 1647 "[% CONFIG POST_CHOMP => '-' %][% 234 %] # " => "234" ok 1070 - Line 1648 "[% CONFIG INTERPOLATE => 1 %]${ 234 }" => "234" ok 1071 - Line 1649 "[% CONFIG V1DOLLAR => 1 %][% a = 234 %][% $a %]" => "234" ok 1072 - Line 1650 "[% CONFIG V2PIPE => 1 %][% BLOCK a %]b is [% b %][% END %][% PROCESS a b => 234 | repeat(2) %]" => "b is 234b is 234" ok 1073 - Line 1651 "[% CONFIG V2EQUALS => 1 %][% ('7' == '7.0') || 0 %]" => "0" ok 1074 - Line 1652 "[% CONFIG V2EQUALS => 0 %][% ('7' == '7.0') || 0 %]" => "1" ok 1075 - Line 1654 "[% CONFIG BOGUS => 2 %]bar" => "" ok 1076 - Line 1656 "[% CONFIG ANYCASE %]|[% CONFIG ANYCASE => 1 %][% CONFIG ANYCASE %]" => "CONFIG ANYCASE = undef|CONFIG ANYCASE = 1" ok 1077 - Line 1657 "[% CONFIG ANYCASE %]|[% CONFIG ANYCASE => 1 %][% CONFIG ANYCASE %]" => "CONFIG ANYCASE = undef|CONFIG ANYCASE = 1" ok 1078 - Line 1659 "[% "[% GET 1+2+3 %]" | eval %] = [% get 6 %]" => "" ok 1079 - Line 1660 "[% CONFIG ANYCASE => 1 %][% get 6 %]" => "6" ok 1080 - Line 1661 "[% CONFIG ANYCASE => 1 %][% "[% get 1+2+3 %]" | eval %] = [% get 6 %]" => "6 = 6" ok 1081 - Line 1662 "[% "[% CONFIG ANYCASE => 1 %][% get 1+2+3 %]" | eval %] = [% get 6 %]" => "" ok 1082 - Line 1663 "[% "[% CONFIG ANYCASE => 1 %][% get 1+2+3 %]" | eval %] = [% GET 6 %]" => "6 = 6" ok 1083 - Line 1664 "[% CONFIG SYNTAX => 'hte' %][% ""|eval %] = [% 6 %]" => "6 = 6" ok 1084 - Line 1665 "[% "[% get 1+2+3 %]" | eval(ANYCASE => 1) %] = [% GET 6 %]" => "6 = 6" ok 1085 - Line 1667 "[% CONFIG DUMP %]|[% CONFIG DUMP => 0 %][% DUMP %]bar" => "CONFIG DUMP = undef|bar" ok 1086 - Line 1668 "[% CONFIG DUMP => {Useqq=>1, header=>0, html=>0} %][% DUMP 'foo' %]" => "'foo' = "foo"; # " ok 1087 - Line 1669 "[% CONFIG VMETHOD_FUNCTIONS => 0 %][% sprintf('%d %d', 7, 8) %] d" => " d" ok 1088 - Line 1670 "[% TRY; foo; CONFIG STRICT => 1; bar; CATCH; error; END %]" => "var.undef error - undefined variable: bar in input text" ok 1089 - Line 1671 "[% TRY; foo; CONFIG STRICT => 1; CONFIG STRICT => 0; bar; CATCH; error; END %]" => "config.strict error - Cannot disable STRICT once it is enabled" ok 1090 - Line 1672 "[% BLOCK foo; CONFIG STRICT => 1; baz; END; TRY; bam; PROCESS foo; bar; CATCH; error.type; END; bing %] - ok" => "var.undef - ok" ok 1091 - Line 1674 "[% CONFIG AUTO_FILTER => "html"; foo %]" => "&" ### DONE ############################################ engine_option (normal) ### GET ############################################# engine_option (compile_perl) ok 1092 - Line 156 "[% foo %]" => "" ok 1093 - Line 157 "[% foo %]" => "7" ok 1094 - Line 158 "[% foo %]" => "7" ok 1095 - Line 159 "[% foo %]" => "7" ok 1096 - Line 160 "[% foo %]" => "Stash" ok 1097 - Line 161 "[% foo %]" => "V" ok 1098 - Line 162 "[% bar %]" => "" ok 1099 - Line 163 "[% foo %]" => "Stash" ok 1100 - Line 164 "[% bar %]" => "" ok 1101 - Line 165 "[% foo %]" => "Stash" ok 1102 - Line 166 "[% foo %]" => "Stash" ok 1103 - Line 167 "[% foo %][% foo %][% foo %]" => "777" ok 1104 - Line 168 "[% foo() %]" => "7" ok 1105 - Line 169 "[% foo.bar %]" => "" ok 1106 - Line 170 "[% foo.bar %]" => "" ok 1107 - Line 171 "[% foo.bar %]" => "7" ok 1108 - Line 172 "[% foo().bar %]" => "7" ok 1109 - Line 173 "[% foo.0 %]" => "7" ok 1110 - Line 174 "[% foo.10 %]" => "" ok 1111 - Line 175 "[% foo %]" => "7" ok 1112 - Line 176 "[% foo(7) %]" => "7" ok 1113 - Line 177 "[% foo.length %]" => "1" ok 1114 - Line 178 "[% foo.0 %]" => "7" ok 1115 - Line 179 "[% foo(bar) %]" => "7" ok 1116 - Line 180 "[% foo(bar.baz) %]" => "7" ok 1117 - Line 181 "[% foo.seven %]" => "7" ok 1118 - Line 182 "[% foo.seven() %]" => "7" ok 1119 - Line 183 "[% foo.seven.length %]" => "1" ok 1120 - Line 184 "[% foo.echo(7) %]" => "7" ok 1121 - Line 185 "[% foo.many.0 %]" => "1" ok 1122 - Line 186 "[% foo.many.10 %]" => "" ok 1123 - Line 187 "[% foo.nomethod %]" => "" ok 1124 - Line 188 "[% foo.nomethod.0 %]" => "" ok 1125 - Line 190 "[% GET foo %]" => "" ok 1126 - Line 191 "[% GET foo %]" => "7" ok 1127 - Line 192 "[% GET foo.bar %]" => "" ok 1128 - Line 193 "[% GET foo.bar %]" => "" ok 1129 - Line 194 "[% GET foo.bar %]" => "7" ok 1130 - Line 195 "[% GET foo.0 %]" => "7" ok 1131 - Line 196 "[% GET foo %]" => "7" ok 1132 - Line 197 "[% GET foo(7) %]" => "7" ok 1133 - Line 199 "[% $name %]" => "" ok 1134 - Line 200 "[% $name %]" => "7" ok 1135 - Line 201 "[% $name.bar %]" => "" ok 1136 - Line 202 "[% $name.bar %]" => "" ok 1137 - Line 203 "[% $name.bar %]" => "7" ok 1138 - Line 204 "[% $name().bar %]" => "7" ok 1139 - Line 205 "[% $name.0 %]" => "7" ok 1140 - Line 206 "[% $name %]" => "7" ok 1141 - Line 207 "[% $name(7) %]" => "7" ok 1142 - Line 209 "[% GET $name %]" => "" ok 1143 - Line 210 "[% GET $name %]" => "7" ok 1144 - Line 211 "[% GET $name.bar %]" => "" ok 1145 - Line 212 "[% GET $name.bar %]" => "" ok 1146 - Line 213 "[% GET $name.bar %]" => "7" ok 1147 - Line 214 "[% GET $name.0 %]" => "7" ok 1148 - Line 215 "[% GET $name %]" => "7" ok 1149 - Line 216 "[% GET $name(7) %]" => "7" ok 1150 - Line 218 "[% $name %]" => "" ok 1151 - Line 219 "[% GET $name %]" => "" ok 1152 - Line 221 "[% ${name} %]" => "" ok 1153 - Line 222 "[% ${name} %]" => "7" ok 1154 - Line 223 "[% ${name}.bar %]" => "" ok 1155 - Line 224 "[% ${name}.bar %]" => "" ok 1156 - Line 225 "[% ${name}.bar %]" => "7" ok 1157 - Line 226 "[% ${name}().bar %]" => "7" ok 1158 - Line 227 "[% ${name}.0 %]" => "7" ok 1159 - Line 228 "[% ${name} %]" => "7" ok 1160 - Line 229 "[% ${name}(7) %]" => "7" ok 1161 - Line 231 "[% GET ${name} %]" => "" ok 1162 - Line 232 "[% GET ${name} %]" => "7" ok 1163 - Line 233 "[% GET ${name}.bar %]" => "" ok 1164 - Line 234 "[% GET ${name}.bar %]" => "" ok 1165 - Line 235 "[% GET ${name}.bar %]" => "7" ok 1166 - Line 236 "[% GET ${name}.0 %]" => "7" ok 1167 - Line 237 "[% GET ${name} %]" => "7" ok 1168 - Line 238 "[% GET ${name}(7) %]" => "7" ok 1169 - Line 240 "[% ${name} %]" => "" ok 1170 - Line 241 "[% GET ${name} %]" => "" ok 1171 - Line 242 "[% GET ${'foo'} %]" => "bar" ok 1172 - Line 244 "[% foo.$name %]" => "" ok 1173 - Line 245 "[% foo.$name %]" => "7" ok 1174 - Line 246 "[% foo.$name.baz %]" => "" ok 1175 - Line 248 "[% "hi" %]" => "hi" ok 1176 - Line 249 "[% "hi %]" => "" ok 1177 - Line 250 "[% 'hi' %]" => "hi" ok 1178 - Line 251 "[% 'hi %]" => "" ok 1179 - Line 252 "[% "$foo" %]" => "7" ok 1180 - Line 253 "[% "hi $foo" %]" => "hi 7" ok 1181 - Line 254 "[% "hi ${foo}" %]" => "hi 7" ok 1182 - Line 255 "[% 'hi $foo' %]" => "hi $foo" ok 1183 - Line 256 "[% 'hi ${foo}' %]" => "hi ${foo}" ok 1184 - Line 257 "[% 7 %]" => "7" ok 1185 - Line 258 "[% -7 %]" => "-7" ok 1186 - Line 260 "[% "hi ${foo.seven}" %]" => "hi 7" ok 1187 - Line 261 "[% "hi ${foo.echo(7)}" %]" => "hi 7" ok 1188 - Line 263 "[% _foo %]2" => "2" ok 1189 - Line 264 "[% $bar %]2" => "2" ok 1190 - Line 265 "[% __foo %]2" => "2" ok 1191 - Line 267 "[% qw/Foo Bar Baz/.0 %]" => "Foo" ok 1192 - Line 268 "[% [0..10].-1 %]" => "10" ok 1193 - Line 269 "[% [0..10].${ 2.3 } %]" => "2" ok 1194 - Line 271 "[% (1 + 2)() %]" => "" ok 1195 - Line 272 "[% (1 + 2) %]" => "3" ok 1196 - Line 273 "[% (a) %]" => "2" ok 1197 - Line 274 "[% ('foo') %]" => "foo" ok 1198 - Line 275 "[% (a(2)) %]" => "2" ok 1199 - Line 278 "[% JS 3 %]" => "3" ok 1200 - Line 279 "[% JS 3 %]" => "43" ok 1201 - Line 280 "[% JS; 3; END %]" => "" ### SET ############################################# engine_option (compile_perl) ok 1202 - Line 285 "[% SET foo bar %][% foo %]" => "" ok 1203 - Line 286 "[% SET foo = 1 %][% foo %]" => "1" ok 1204 - Line 287 "[% SET foo = 1 bar = 2 %][% foo %][% bar %]" => "12" ok 1205 - Line 288 "[% SET foo bar = 1 %][% foo %]" => "" ok 1206 - Line 289 "[% SET foo = 1 ; bar = 1 %][% foo %]" => "1" ok 1207 - Line 290 "[% SET foo = 1 %][% SET foo %][% foo %]" => "" ok 1208 - Line 292 "[% SET foo = [] %][% foo.0 %]" => "" ok 1209 - Line 293 "[% SET foo = [1, 2, 3] %][% foo.1 %]" => "2" ok 1210 - Line 294 "[% SET foo = {} %][% foo.0 %]" => "" ok 1211 - Line 295 "[% SET foo = {1 => 2} %][% foo.1 %]" => "2" ok 1212 - Line 296 "[% SET foo = {'1' => 2} %][% foo.1 %]" => "2" ok 1213 - Line 298 "[% SET name = 1 %][% SET foo = name %][% foo %]" => "1" ok 1214 - Line 299 "[% SET name = 1 %][% SET foo = $name %][% foo %]" => "" ok 1215 - Line 300 "[% SET name = 1 %][% SET foo = ${name} %][% foo %]" => "" ok 1216 - Line 301 "[% SET name = 1 %][% SET foo = "$name" %][% foo %]" => "1" ok 1217 - Line 302 "[% SET name = 1 foo = name %][% foo %]" => "1" ok 1218 - Line 303 "[% SET name = 1 %][% SET foo = {$name => 2} %][% foo.1 %]" => "2" ok 1219 - Line 304 "[% SET name = 1 %][% SET foo = {"$name" => 2} %][% foo.1 %]" => "2" ok 1220 - Line 305 "[% SET name = 1 %][% SET foo = {${name} => 2} %][% foo.1 %]" => "2" ok 1221 - Line 307 "[% SET name = 7 %][% SET foo = {'2' => name} %][% foo.2 %]" => "7" ok 1222 - Line 308 "[% SET name = 7 %][% SET foo = {'2' => "$name"} %][% foo.2 %]" => "7" ok 1223 - Line 310 "[% SET name = 7 %][% SET foo = [1, name, 3] %][% foo.1 %]" => "7" ok 1224 - Line 311 "[% SET name = 7 %][% SET foo = [1, "$name", 3] %][% foo.1 %]" => "7" ok 1225 - Line 313 "[% SET foo = { bar => { baz => [0, 7, 2] } } %][% foo.bar.baz.1 %]" => "7" ok 1226 - Line 315 "[% SET foo.bar = 1 %][% foo.bar %]" => "1" ok 1227 - Line 316 "[% SET foo.bar.baz.bing = 1 %][% foo.bar.baz.bing %]" => "1" ok 1228 - Line 317 "[% SET foo.bar.2 = 1 %][% foo.bar.2 %] [% foo.bar.size %]" => "1 1" ok 1229 - Line 318 "[% SET foo.bar = [] %][% SET foo.bar.2 = 1 %][% foo.bar.2 %] [% foo.bar.size %]" => "1 3" ok 1230 - Line 320 "[% SET name = 'two' %][% SET $name = 3 %][% two %]" => "3" ok 1231 - Line 321 "[% SET name = 'two' %][% SET ${name} = 3 %][% two %]" => "3" ok 1232 - Line 322 "[% SET name = 2 %][% SET foo.$name = 3 %][% foo.2 %]" => "3" ok 1233 - Line 323 "[% SET name = 2 %][% SET foo.$name = 3 %][% foo.$name %]" => "3" ok 1234 - Line 324 "[% SET name = 2 %][% SET foo.${name} = 3 %][% foo.2 %]" => "3" ok 1235 - Line 325 "[% SET name = 2 %][% SET foo.${name} = 3 %][% foo.2 %]" => "3" ok 1236 - Line 326 "[% SET name = 'two' %][% SET $name.foo = 3 %][% two.foo %]" => "3" ok 1237 - Line 327 "[% SET name = 'two' %][% SET ${name}.foo = 3 %][% two.foo %]" => "3" ok 1238 - Line 328 "[% SET name = 'two' %][% SET foo.$name.foo = 3 %][% foo.two.foo %]" => "3" ok 1239 - Line 329 "[% SET name = 'two' %][% SET foo.${name}.foo = 3 %][% foo.two.foo %]" => "3" ok 1240 - Line 331 "[% SET foo = [1..10] %][% foo.6 %]" => "7" ok 1241 - Line 332 "[% SET foo = [10..1] %][% foo.6 %]" => "" ok 1242 - Line 333 "[% SET foo = [-10..-1] %][% foo.6 %]" => "-4" ok 1243 - Line 334 "[% SET foo = [1..10, 21..30] %][% foo.12 %]" => "23" ok 1244 - Line 335 "[% SET foo = [..100] bar = 7 %][% bar %][% foo.0 %]" => "" ok 1245 - Line 336 "[% SET foo = [100..] bar = 7 %][% bar %][% foo.0 %]" => "" ok 1246 - Line 337 "[% SET foo = ['a'..'z'] %][% foo.6 %]" => "g" ok 1247 - Line 338 "[% SET foo = ['z'..'a'] %][% foo.6 %]" => "" ok 1248 - Line 339 "[% SET foo = ['a'..'z'].reverse %][% foo.6 %]" => "t" ok 1249 - Line 341 "[% foo = 1 %][% foo %]" => "1" ok 1250 - Line 342 "[% foo = 1 ; bar = 2 %][% foo %][% bar %]" => "12" ok 1251 - Line 343 "[% foo.bar = 2 %][% foo.bar %]" => "2" ok 1252 - Line 345 "[% a = "a" %]|[% (b = a) %]|[% a %]|[% b %]" => "|a|a|a" ok 1253 - Line 346 "[% a = "a" %][% (c = (b = a)) %][% a %][% b %][% c %]" => "aaaa" ok 1254 - Line 348 "[% a = qw{Foo Bar Baz} ; a.2 %]" => "Baz" ok 1255 - Line 350 "[% _foo = 1 %][% _foo %]2" => "2" ok 1256 - Line 351 "[% foo._bar %]2" => "2" ### multiple statements in same tag ################# engine_option (compile_perl) ok 1257 - Line 356 "[% foo; %]" => "1" ok 1258 - Line 357 "[% GET foo; %]" => "1" ok 1259 - Line 358 "[% GET foo; GET foo %]" => "11" ok 1260 - Line 359 "[% GET foo GET foo %]" => "11" ok 1261 - Line 360 "[% GET foo GET foo %]" => "" ok 1262 - Line 362 "[% foo = 1 bar = 2 %][% foo %][% bar %]" => "12" ok 1263 - Line 363 "[% foo = 1 bar = 2 %][% foo = 3 bar %][% foo %][% bar %]" => "232" ok 1264 - Line 364 "[% a = 1 a = a + 2 a %]" => "3" ok 1265 - Line 366 "[% foo = 1 bar = 2 %][% foo %][% bar %]" => "" ok 1266 - Line 367 "[% foo = 1 bar = 2 %][% foo = 3 bar %][% foo %][% bar %]" => "" ok 1267 - Line 368 "[% a = 1 a = a + 2 a %]" => "" ### CALL / DEFAULT ################################## engine_option (compile_perl) ok 1268 - Line 374 "[% DEFAULT foo = 7 %][% foo %]" => "7" ok 1269 - Line 375 "[% SET foo = 5 %][% DEFAULT foo = 7 %][% foo %]" => "5" ok 1270 - Line 376 "[% DEFAULT foo.bar.baz.bing = 6 %][% foo.bar.baz.bing %]" => "6" ok 1271 - Line 379 "[% foo %]" => "hi" ok 1272 - Line 380 "[% GET foo %]" => "hi" ok 1273 - Line 381 "[% CALL foo %]" => "" ok 1274 - CALL method actually called var ### scalar vmethods ################################# engine_option (compile_perl) ok 1275 - Line 388 "[% n.0 %]" => "7" ok 1276 - Line 389 "[% n.abs %]" => "7" ok 1277 - Line 390 "[% n.abs %]" => "7" ok 1278 - Line 391 "[% n.atan2.substr(0, 6) %]" => "1.5707" ok 1279 - Line 392 "[% (4 * n.atan2(1)).substr(0, 7) %]" => "3.14159" ok 1280 - Line 393 "[% n.chunk(3).join %]" => "abc def g" ok 1281 - Line 394 "[% n.chunk(-3).join %]" => "a bcd efg" ok 1282 - Line 395 "[% n|collapse %]" => "a b" ok 1283 - Line 396 "[% n.cos.substr(0,5) %]" => "1" ok 1284 - Line 397 "[% n.cos.substr(0,5) %]" => "0.707" ok 1285 - Line 398 "[% n.defined %]" => "1" ok 1286 - Line 399 "[% n.defined %]" => "" ok 1287 - Line 400 "[% n.defined %]" => "1" ok 1288 - Line 401 "[% n.dquote %]" => "(\n|\\|\")" ok 1289 - Line 402 "[% n.exp.substr(0,5) %]" => "2.718" ok 1290 - Line 403 "[% n.exp.log.substr(0,5) %]" => "8" ok 1291 - Line 404 "[% n.fmt %]" => "7" ok 1292 - Line 405 "[% n.fmt('%02d') %]" => "07" ok 1293 - Line 406 "[% n.fmt('%0*d', 3) %]" => "007" ok 1294 - Line 407 "[% n.fmt('(%s)') %]" => "(a # b)" ok 1295 - Line 408 "[% n|format('%02d') %]" => "07" ok 1296 - Line 409 "[% n|format('%0*d', 3) %]" => "007" ok 1297 - Line 410 "[% n|format('(%s)') %]" => "(a) # (b)" ok 1298 - Line 411 "[% n.hash.items.1 %]" => "b" ok 1299 - Line 412 "[% n.hex %]" => "255" ok 1300 - Line 413 "[% n|html %]" => "&<>"'" ok 1301 - Line 414 "[% n|html_entity %]" => "&" ok 1302 - Line 415 "[% n|xml %]" => "&<>"'" ok 1303 - Line 416 "[% n|indent %]" => " a # b" ok 1304 - Line 417 "[% n|indent(2) %]" => " a # b" ok 1305 - Line 418 "[% n|indent('wow ') %]" => "wow a # wow b" ok 1306 - Line 419 "[% n.int %]" => "123" ok 1307 - Line 420 "[% n.int %]" => "123" ok 1308 - Line 421 "[% n.int %]" => "0" ok 1309 - Line 422 "[% n.item %]" => "7" ok 1310 - Line 423 "[% n.lc %]" => "abc" ok 1311 - Line 424 "[% n|lcfirst %]" => "fOO" ok 1312 - Line 425 "[% n.length %]" => "3" ok 1313 - Line 426 "[% n.list.0 %]" => "abc" ok 1314 - Line 427 "[% n.log.substr(0,5) %]" => "4.605" ok 1315 - Line 428 "[% n|lower %]" => "abc" ok 1316 - Line 429 "[% n.match('foo').join %]" => "" ok 1317 - Line 430 "[% n.match('foo').join %]" => "1" ok 1318 - Line 431 "[% n.match('foo',1).join %]" => "foo" ok 1319 - Line 432 "[% n.match('(foo)').join %]" => "foo" ok 1320 - Line 433 "[% n.match('(foo)').join %]" => "foo" ok 1321 - Line 434 "[% n.match('(foo)',1).join %]" => "foo foo" ok 1322 - Line 435 "[% n.null %]" => "" ok 1323 - Line 436 "[% n.oct %]" => "255" ok 1324 - Line 437 "[% n.rand %]" => "1.5264831683424" ok 1325 - Line 438 "[% n.rand %]" => "0.335701955774084" ok 1326 - Line 439 "[% n.remove('bc') %]" => "a" ok 1327 - Line 440 "[% n.remove('bc') %]" => "aa" ok 1328 - Line 441 "[% n.repeat %]" => "1" ok 1329 - Line 442 "[% n.repeat(0) %]" => "" ok 1330 - Line 443 "[% n.repeat(1) %]" => "1" ok 1331 - Line 444 "[% n.repeat(2) %]" => "11" ok 1332 - Line 445 "[% n.repeat(2,'|') %]" => "1|1" ok 1333 - Line 446 "[% n.replace('foo', 'bar') %]" => "barbar" ok 1334 - Line 447 "[% n.replace('(foo)', 'bar$1') %]" => "barfoobarfoo" ok 1335 - Line 448 "[% n.replace('foo', 'bar', 0) %]" => "barfoo" ok 1336 - Line 449 "[% n.search('foo') %]" => "" ok 1337 - Line 450 "[% n.search('foo') %]" => "1" ok 1338 - Line 451 "[% n.sin.substr(0,5) %]" => "0" ok 1339 - Line 452 "[% n.sin.substr(0,5) %]" => "1" ok 1340 - Line 453 "[% n.size %]" => "1" ok 1341 - Line 454 "[% n.split.join('|') %]" => "abc" ok 1342 - Line 455 "[% n.split.join('|') %]" => "a|b|c" ok 1343 - Line 456 "[% n.split.join('|') %]" => "a|b|c" ok 1344 - Line 457 "[% n.split(u,2).join('|') %]" => "a|b c" ok 1345 - Line 459 "[% n.split('/').join('|') %]" => "a|b|c" ok 1346 - Line 460 "[% n.split('/', 2).join('|') %]" => "a|b/c" ok 1347 - Line 461 "[% n.sprintf(7) %]" => "7" ok 1348 - Line 462 "[% n.sprintf(3, 7, 12) %]" => "007 12" ok 1349 - Line 463 "[% n.sqrt %]" => "3" ok 1350 - Line 464 "[% n.squote %]" => "( # |\\|\')" ok 1351 - Line 465 "[% n.srand; 12 %]" => "12" ok 1352 - Line 466 "[% n.stderr %]" => "" ok 1353 - Line 467 "[% n|trim %]" => "a b" ok 1354 - Line 468 "[% n.uc %]" => "FOO" ok 1355 - Line 469 "[% n|ucfirst %]" => "Foo" ok 1356 - Line 470 "[% n|upper %]" => "FOO" ok 1357 - Line 471 "[% n|uri %]" => "a%20b" ok 1358 - Line 473 "[% n.fmt('%c') %]" => "B" ok 1359 - Line 474 "[% n.fmt('%3X') %]" => " C" ok 1360 - Line 475 "[% n.fmt('%-3X') %]" => "C " ok 1361 - Line 476 "[% n.fmt('%03X') %]" => "00C" ok 1362 - Line 477 "[% n.fmt('%03X') %]" => "00C" ok 1363 - Line 478 "[% n.fmt('%\#03X') %]" => "0XC" ok 1364 - Line 479 "[% n.fmt('%\#07X') %]" => "0X0000C" ok 1365 - Line 481 "[% n.fmt('%o') %]" => "10" ok 1366 - Line 482 "[% n.fmt('%\#o') %]" => "010" ok 1367 - Line 483 "[% n.fmt('%\#o') %]" => "0" ok 1368 - Line 485 "[% n.fmt('%02d') %]" => "07" ok 1369 - Line 486 "[% n.fmt('%04.2d') %]" => " 07" ok 1370 - Line 487 "[% n.fmt('%+04.2d') %]" => " +07" ok 1371 - Line 488 "[% n.fmt('% 04.2d') %]" => " 07" ok 1372 - Line 489 "[% n.fmt('% +04.2d') %]" => " +07" ok 1373 - Line 490 "[% n.fmt('%02f') %]" => "7.000000" ok 1374 - Line 491 "[% n.fmt('%04.2f') %]" => "7.00" ok 1375 - Line 492 "[% n.fmt('%05.2f') %]" => "07.00" ok 1376 - Line 493 "[% n.fmt('% 5.2f') %]" => " 7.00" ok 1377 - Line 494 "[% n.fmt('%+04.2f') %]" => "+7.00" ok 1378 - Line 495 "[% n.fmt('% 04.2f') %]" => " 7.00" ok 1379 - Line 496 "[% n.fmt('% +6.2f') %]" => " +7.00" ok 1380 - Line 497 "[% n.fmt('%0+6.2f') %]" => "+07.00" ok 1381 - Line 498 "[% n.fmt('%.5g') %]" => "12345" ok 1382 - Line 499 "[% n.fmt('%.5g') %]" => "1.2346e+06" ### list vmethods ################################### engine_option (compile_perl) ok 1383 - Line 504 "[% a.defined %]" => "1" ok 1384 - Line 505 "[% a.defined(1) %]" => "1" ok 1385 - Line 506 "[% a.defined(3) %]" => "" ok 1386 - Line 507 "[% a.first %]" => "2" ok 1387 - Line 508 "[% a.first(3).join %]" => "2 3 4" ok 1388 - Line 509 "[% a.fmt %]" => "2 3" ok 1389 - Line 510 "[% a.fmt('%02d') %]" => "02 03" ok 1390 - Line 511 "[% a.fmt('%02d',' ') %]" => "02 03" ok 1391 - Line 512 "[% a.fmt('%02d','|') %]" => "02|03" ok 1392 - Line 513 "[% a.fmt('%0*d','|', 3) %]" => "002|003" ok 1393 - Line 514 "[% a.grep.join %]" => "2 3" ok 1394 - Line 515 "[% a.grep(2).join %]" => "2" ok 1395 - Line 516 "[% a.grep(->(n){n % 2}).join %]" => "3 5 7" ok 1396 - Line 517 "[% a.hash.items.join %]" => "2 3" ok 1397 - Line 518 "[% a.hash(5).items.sort.join %]" => "2 3 5 6" ok 1398 - Line 519 "[% a.import(5) %]|[% a.join %]" => "|2 3" ok 1399 - Line 521 "[% a.import([5]) %]|[% a.join %]" => "|2 3 5" ok 1400 - Line 523 "[% a.item %]" => "2" ok 1401 - Line 524 "[% a.item(1) %]" => "3" ok 1402 - Line 525 "[% a.join %]" => "2 3" ok 1403 - Line 526 "[% a.join('|') %]" => "2|3" ok 1404 - Line 527 "[% a.last %]" => "10" ok 1405 - Line 528 "[% a.last(3).join %]" => "8 9 10" ok 1406 - Line 529 "[% a.list.join %]" => "2 3" ok 1407 - Line 530 "[% a.map(->(n){ n.repeat(3) }).join %]" => "222 333" ok 1408 - Line 531 "[% a.max %]" => "1" ok 1409 - Line 532 "[% a.merge(5).join %]" => "2 3" ok 1410 - Line 533 "[% a.merge([5]).join %]" => "2 3 5" ok 1411 - Line 534 "[% a.merge([5]).null %][% a.join %]" => "2 3" ok 1412 - Line 535 "[% a.nsort.join %]" => "1 2 3" ok 1413 - Line 536 "[% a.nsort('b').0.b %]" => "7" ok 1414 - Line 537 "[% a.pop %][% a.join %]" => "32" ok 1415 - Line 538 "[% a.push(3) %][% a.join %]" => "2 3 3" ok 1416 - Line 539 "[% a.pick %]" => "2" ok 1417 - Line 540 "[% a.pick(5).join('') %]" => "23223" ok 1418 - Line 541 "[% a.reverse.join %]" => "3 2" ok 1419 - Line 542 "[% a.shift %][% a.join %]" => "23" ok 1420 - Line 543 "[% a.size %]" => "2" ok 1421 - Line 544 "[% a.slice.join %]" => "2 3 4 5" ok 1422 - Line 545 "[% a.slice(2).join %]" => "4 5" ok 1423 - Line 546 "[% a.slice(0,2).join %]" => "2 3 4" ok 1424 - Line 547 "[% a.sort.join %]" => "1 2 3" ok 1425 - Line 548 "[% a.sort('b').0.b %]" => "wee" ok 1426 - Line 549 "[% c.sort(->(a,b){ a.k cmp b.k }).map(->{this.k}).join %]" => "a wee wow" ok 1427 - Line 550 "[% a.splice.join %]|[% a.join %]" => "2 3 4 5|" ok 1428 - Line 551 "[% a.splice(2).join %]|[% a.join %]" => "4 5|2 3" ok 1429 - Line 552 "[% a.splice(0,2).join %]|[% a.join %]" => "2 3|4 5" ok 1430 - Line 553 "[% a.splice(0,2,'hrm').join %]|[% a.join %]" => "2 3|hrm 4 5" ok 1431 - Line 554 "[% a.unique.join %]" => "2 3" ok 1432 - Line 555 "[% a.unshift(3) %][% a.join %]" => "3 2 3" ### hash vmethods ################################### engine_option (compile_perl) ok 1433 - Line 560 "[% h.defined %]" => "1" ok 1434 - Line 561 "[% h.defined('a') %]" => "1" ok 1435 - Line 562 "[% h.defined('b') %]" => "" ok 1436 - Line 563 "[% h.defined('a') %]" => "" ok 1437 - Line 564 "[% h.delete('a') %]|[% h.keys.0 %]" => "|b" ok 1438 - Line 565 "[% h.delete('a', 'b').join %]|[% h.keys.0 %]" => "|" ok 1439 - Line 566 "[% h.delete('a', 'c').join %]|[% h.keys.0 %]" => "|b" ok 1440 - Line 567 "[% h.each.sort.join %]" => "1 2 a b" ok 1441 - Line 568 "[% h.exists('a') %]" => "1" ok 1442 - Line 569 "[% h.exists('b') %]" => "" ok 1443 - Line 570 "[% h.exists('a') %]" => "1" ok 1444 - Line 571 "[% h.fmt %]" => "b B # c C" ok 1445 - Line 572 "[% h.fmt('%s => %s') %]" => "b => B # c => C" ok 1446 - Line 573 "[% h.fmt('%s => %s', '|') %]" => "b => B|c => C" ok 1447 - Line 574 "[% h.fmt('%*s=>%s', '|', 3) %]" => " b=>B| c=>C" ok 1448 - Line 575 "[% h.fmt('%*s=>%*s', '|', 3, 4) %]" => " b=> B| c=> C" ok 1449 - Line 576 "[% h.hash.fmt %]" => "b B # c C" ok 1450 - Line 577 "[% h.import('a') %]|[% h.items.sort.join %]" => "|b B c C" ok 1451 - Line 578 "[% h.import({'b' => 'boo'}) %]|[% h.items.sort.join %]" => "|b boo c C" ok 1452 - Line 579 "[% h.item('a') %]" => "A" ok 1453 - Line 580 "[% h.item('_a') %]" => "" ok 1454 - Line 581 "[% h.items.sort.join %]" => "1 2 a b" ok 1455 - Line 582 "[% h.keys.sort.join %]" => "a b" ok 1456 - Line 583 "[% h.list('each').sort.join %]" => "1 2 a b" ok 1457 - Line 584 "[% h.list('keys').sort.join %]" => "a b" ok 1458 - Line 585 "[% h.list('pairs').0.items.sort.join %]" => "1 a key value" ok 1459 - Line 586 "[% h.list('values').sort.join %]" => "1 2" ok 1460 - Line 587 "[% h.null %]" => "" ok 1461 - Line 588 "[% h.nsort.join %]" => "b a" ok 1462 - Line 589 "[% h.pairs.0.items.sort.join %]" => "1 a key value" ok 1463 - Line 590 "[% h.size %]" => "2" ok 1464 - Line 591 "[% h.sort.join %]" => "b a" ok 1465 - Line 592 "[% h.values.sort.join %]" => "1 2" ### vmethods as functions ########################### engine_option (compile_perl) ok 1466 - Line 597 "[% sprintf('%d %d', 7, 8) %] d" => "7 8 d" ok 1467 - Line 598 "[% sprintf('%d %d', 7, 8) %] d" => "7 8 d" ok 1468 - Line 599 "[% sprintf('%d %d', 7, 8) %] d" => " d" ok 1469 - Line 600 "[% int(2.234) %]" => "2" ok 1470 - Line 602 "[% int(2.234) ; int = 44; int(2.234) ; SET int; int(2.234) %]" => "2442" ### more virtual methods / filters ################## engine_option (compile_perl) ok 1471 - Line 607 "[% [0 .. 10].reverse.1 %]" => "9" ok 1472 - Line 608 "[% {a => 'A'}.a %]" => "A" ok 1473 - Line 609 "[% 'This is a string'.length %]" => "16" ok 1474 - Line 610 "[% 123.length %]" => "3" ok 1475 - Line 611 "[% 123.2.length %]" => "5" ok 1476 - Line 612 "[% -123.2.length %]" => "-5" ok 1477 - Line 613 "[% (-123.2).length %]" => "6" ok 1478 - Line 614 "[% a = 23; a.0 %]" => "23" ok 1479 - Line 615 "[% 1.rand %]" => "0.15075242533052" ok 1480 - Line 617 "[% n.size %]" => "SIZE" ok 1481 - Line 618 "[% n|size %]" => "2" ok 1482 - Line 620 "[% "1" | indent(2) %]" => " 1" ok 1483 - Line 622 "[% n FILTER size %]" => "1" ok 1484 - Line 624 "[% n FILTER repeat %]" => "1" ok 1485 - Line 625 "[% n FILTER repeat(0) %]" => "" ok 1486 - Line 626 "[% n FILTER repeat(1) %]" => "1" ok 1487 - Line 627 "[% n FILTER repeat(2) %]" => "11" ok 1488 - Line 628 "[% n FILTER repeat(2,'|') %]" => "1|1" ok 1489 - Line 630 "[% n FILTER echo = repeat(2) %][% n FILTER echo %]" => "1111" ok 1490 - Line 631 "[% n FILTER echo = repeat(2) %][% n | echo %]" => "1111" ok 1491 - Line 632 "[% n FILTER echo = repeat(2) %][% n|echo.length %]" => "112" ok 1492 - Line 633 "[% n FILTER echo = repeat(2) %][% n FILTER $foo %]" => "1111" ok 1493 - Line 634 "[% n FILTER echo = repeat(2) %][% n | $foo %]" => "1111" ok 1494 - Line 635 "[% n FILTER echo = repeat(2) %][% n|$foo.length %]" => "112" ok 1495 - Line 637 "[% "hi" FILTER $foo %]" => "hihi" ok 1496 - Line 638 "[% FILTER $foo %]hi[% END %]" => "hihi" ok 1497 - Line 639 "[% "hi" FILTER foo %]" => "hihi" ok 1498 - Line 640 "[% "hi" FILTER foo %]" => "hihi" ok 1499 - Line 641 "[% "hi" FILTER foo(2) %]" => "hihi" ok 1500 - Line 643 "[% ["0".."9"].pick %]" => "9" ok 1501 - Line 645 "[% ' ' | uri %]" => "%20" ok 1502 - Line 647 "[% "one".fmt %]" => "one" ok 1503 - Line 648 "[% 2.fmt("%02d") %]" => "02" ok 1504 - Line 650 "[% [1..3].fmt %]" => "1 2 3" ok 1505 - Line 651 "[% [1..3].fmt("%02d") %]" => "01 02 03" ok 1506 - Line 652 "[% [1..3].fmt("%s", ", ") %]" => "1, 2, 3" ok 1507 - Line 654 "[% {a => "B", c => "D"}.fmt %]" => "a B # c D" ok 1508 - Line 655 "[% {a => "B", c => "D"}.fmt("%s:%s") %]" => "a:B # c:D" ok 1509 - Line 656 "[% {a => "B", c => "D"}.fmt("%s:%s", "; ") %]" => "a:B; c:D" ok 1510 - Line 658 "[% 1|format("%s") %]" => "1" ok 1511 - Line 659 "[% 1|format("%*s", 6) %]" => " 1" ok 1512 - Line 660 "[% 1|format("%-*s", 6) %]" => "1 " ok 1513 - Line 662 "[% 1.fmt("%-*s", 6) %]" => "1 " ok 1514 - Line 663 "[% [1,2].fmt("%-*s", "|", 6) %]" => "1 |2 " ok 1515 - Line 664 "[% {1=>2,3=>4}.fmt("%*s:%*s", "|", 3, 3) %]" => " 1: 2| 3: 4" ok 1516 - Line 666 "[% foo %]" => "&" ok 1517 - Line 667 "[% "&" %]" => "&" ok 1518 - Line 668 "[% foo | none %]" => "&" ok 1519 - Line 669 "[% foo.bar %]" => "&" ok 1520 - Line 670 "[% foo.bar | none %]" => "&" ok 1521 - Line 671 "[% GET foo %]" => "&" ok 1522 - Line 672 "[% GET "&" %]" => "&" ok 1523 - Line 673 "[% GET foo | none %]" => "&" ok 1524 - Line 674 "[% Text.length(foo) %]" => "1" ### virtual objects ################################# engine_option (compile_perl) ok 1525 - Line 679 "[% a = "foobar" %][% Text.length(a) %]" => "6" ok 1526 - Line 680 "[% a = [1 .. 10] %][% List.size(a) %]" => "10" ok 1527 - Line 681 "[% a = {a=>"A", b=>"B"} ; Hash.size(a) %]" => "2" ok 1528 - Line 683 "[% a = Text.new("This is a string") %][% a.length %]" => "16" ok 1529 - Line 684 "[% a = List.new("one", "two", "three") %][% a.size %]" => "3" ok 1530 - Line 685 "[% a = Hash.new("one", "ONE") %][% a.one %]" => "ONE" ok 1531 - Line 686 "[% a = Hash.new(one = "ONE") %][% a.one %]" => "ONE" ok 1532 - Line 687 "[% a = Hash.new(one => "ONE") %][% a.one %]" => "ONE" ok 1533 - Line 689 "[% {a => 1, b => 2} | Hash.keys | List.sort | List.join(", ") %]" => "a, b" ### chomping ######################################## engine_option (compile_perl) ok 1534 - Line 694 " [% foo %]" => " " ok 1535 - Line 695 " [%- foo %]" => "" ok 1536 - Line 696 " # [%- foo %]" => "" ok 1537 - Line 697 " # [%- foo %]" => "" ok 1538 - Line 698 " # # [%- foo %]" => " # " ok 1539 - Line 699 " # # [%- foo %]" => " # " ok 1540 - Line 700 " # [%- foo %]" => " " ok 1541 - Line 701 " # # [%- foo %]" => " # " ok 1542 - Line 703 "[% 7 %] " => "7 " ok 1543 - Line 704 "[% 7 -%] " => "7 " ok 1544 - Line 705 "[% 7 -%] # " => "7" ok 1545 - Line 706 "[% 7 -%] # " => "7" ok 1546 - Line 707 "[% 7 -%] # " => "7 " ok 1547 - Line 708 "[% 7 -%] # # # " => "7 # # " ok 1548 - Line 709 "[% 7 -%] # " => "7 " ### string operators ################################ engine_option (compile_perl) ok 1549 - Line 714 "[% a = "foo"; a _ "bar" %]" => "foobar" ok 1550 - Line 715 "[% a = "foo"; a ~ "bar" %]" => "foobar" ok 1551 - Line 716 "[% a = "foo"; a ~= "bar"; a %]" => "foobar" ok 1552 - Line 717 "[% "b" gt "c" %]<<<" => "<<<" ok 1553 - Line 718 "[% "b" gt "a" %]<<<" => "1<<<" ok 1554 - Line 719 "[% "b" ge "c" %]<<<" => "<<<" ok 1555 - Line 720 "[% "b" ge "b" %]<<<" => "1<<<" ok 1556 - Line 721 "[% "b" lt "c" %]<<<" => "1<<<" ok 1557 - Line 722 "[% "b" lt "a" %]<<<" => "<<<" ok 1558 - Line 723 "[% "b" le "a" %]<<<" => "<<<" ok 1559 - Line 724 "[% "b" le "b" %]<<<" => "1<<<" ok 1560 - Line 725 "[% "a" cmp "b" %]<<<" => "-1<<<" ok 1561 - Line 726 "[% "b" cmp "b" %]<<<" => "0<<<" ok 1562 - Line 727 "[% "c" cmp "b" %]<<<" => "1<<<" ### math operators ################################## engine_option (compile_perl) ok 1563 - Line 732 "[% 1 + 2 %]" => "3" ok 1564 - Line 733 "[% 1 + 2 + 3 %]" => "6" ok 1565 - Line 734 "[% (1 + 2) %]" => "3" ok 1566 - Line 735 "[% 2 - 1 %]" => "1" ok 1567 - Line 736 "[% -1 + 2 %]" => "1" ok 1568 - Line 737 "[% -1+2 %]" => "1" ok 1569 - Line 738 "[% 2 - 1 %]" => "1" ok 1570 - Line 739 "[% 2-1 %]" => "1" ok 1571 - Line 740 "[% 2 - -1 %]" => "3" ok 1572 - Line 741 "[% 4 * 2 %]" => "8" ok 1573 - Line 742 "[% 4 / 2 %]" => "2" ok 1574 - Line 743 "[% 10 / 3 %]" => "3.33333333333333" ok 1575 - Line 744 "[% 10 div 3 %]" => "3" ok 1576 - Line 745 "[% 2 ** 3 %]" => "8" ok 1577 - Line 746 "[% 1 + 2 * 3 %]" => "7" ok 1578 - Line 747 "[% 3 * 2 + 1 %]" => "7" ok 1579 - Line 748 "[% (1 + 2) * 3 %]" => "9" ok 1580 - Line 749 "[% 3 * (1 + 2) %]" => "9" ok 1581 - Line 750 "[% 1 + 2 ** 3 %]" => "9" ok 1582 - Line 751 "[% 2 * 2 ** 3 %]" => "16" ok 1583 - Line 752 "[% SET foo = 1 %][% foo + 2 %]" => "3" ok 1584 - Line 753 "[% SET foo = 1 %][% (foo + 2) %]" => "3" ok 1585 - Line 755 "[% a = 1; (a += 2) %]" => "3" ok 1586 - Line 756 "[% a = 1; (a -= 2) %]" => "-1" ok 1587 - Line 757 "[% a = 4; (a /= 2) %]" => "2" ok 1588 - Line 758 "[% a = 1; (a *= 2) %]" => "2" ok 1589 - Line 759 "[% a = 3; (a **= 2) %]" => "9" ok 1590 - Line 760 "[% a = 1; (a %= 2) %]" => "1" ok 1591 - Line 761 "[% a = 1; (a += 2 + 3) %]" => "6" ok 1592 - Line 762 "[% a = 1; b = 2; (a += b += 3) %]|[% a %]|[% b %]" => "6|6|5" ok 1593 - Line 763 "[% a = 1; b = 2; (a += (b += 3)) %]|[% a %]|[% b %]" => "6|6|5" ok 1594 - Line 765 "[% a += 1 %]-[% a %]-[% a += 1 %]-[% a %]" => "-1--2" ok 1595 - Line 766 "[% (a += 1) %]-[% (a += 1) %]" => "1-2" ok 1596 - Line 768 "[% a = 2; a -= 3; a %]" => "-1" ok 1597 - Line 769 "[% a = 2; a *= 3; a %]" => "6" ok 1598 - Line 770 "[% a = 2; a /= .5; a %]" => "4" ok 1599 - Line 771 "[% a = 8; a %= 3; a %]" => "2" ok 1600 - Line 772 "[% a = 2; a **= 3; a %]" => "8" ok 1601 - Line 774 "[% a = 1 %][% ++a %][% a %]" => "22" ok 1602 - Line 775 "[% a = 1 %][% a++ %][% a %]" => "12" ok 1603 - Line 776 "[% a = 1 %][% --a %][% a %]" => "00" ok 1604 - Line 777 "[% a = 1 %][% a-- %][% a %]" => "10" ok 1605 - Line 778 "[% a++ FOR [1..3] %]" => "012" ok 1606 - Line 779 "[% --a FOR [1..3] %]" => "-1-2-3" ok 1607 - Line 781 "[% 2 > 3 %]<<<" => "<<<" ok 1608 - Line 782 "[% 2 > 1 %]<<<" => "1<<<" ok 1609 - Line 783 "[% 2 >= 3 %]<<<" => "<<<" ok 1610 - Line 784 "[% 2 >= 2 %]<<<" => "1<<<" ok 1611 - Line 785 "[% 2 < 3 %]<<<" => "1<<<" ok 1612 - Line 786 "[% 2 < 1 %]<<<" => "<<<" ok 1613 - Line 787 "[% 2 <= 1 %]<<<" => "<<<" ok 1614 - Line 788 "[% 2 <= 2 %]<<<" => "1<<<" ok 1615 - Line 789 "[% 1 <=> 2 %]<<<" => "-1<<<" ok 1616 - Line 790 "[% 2 <=> 2 %]<<<" => "0<<<" ok 1617 - Line 791 "[% 3 <=> 2 %]<<<" => "1<<<" ### boolean operators ############################### engine_option (compile_perl) ok 1618 - Line 796 "[% 5 && 6 %]" => "6" ok 1619 - Line 797 "[% 5 || 6 %]" => "5" ok 1620 - Line 798 "[% 0 || 6 %]" => "6" ok 1621 - Line 799 "[% 0 && 6 %]" => "0" ok 1622 - Line 800 "[% 0 && 0 %]" => "0" ok 1623 - Line 801 "[% 5 && 6 && 7%]" => "7" ok 1624 - Line 802 "[% 0 || 1 || 2 %]" => "1" ok 1625 - Line 804 "[% 5 + (0 || 5) %]" => "10" ok 1626 - Line 807 "[% 1 ? 2 : 3 %]" => "2" ok 1627 - Line 808 "[% 0 ? 2 : 3 %]" => "3" ok 1628 - Line 809 "[% 0 ? (1 ? 2 : 3) : 4 %]" => "4" ok 1629 - Line 810 "[% 0 ? 1 ? 2 : 3 : 4 %]" => "4" ok 1630 - Line 812 "[% t = 1 || 0 ? 3 : 4 %][% t %]" => "3" ok 1631 - Line 813 "[% t = 0 or 1 ? 3 : 4 %][% t %]" => "3" ok 1632 - Line 814 "[% t = 1 or 0 ? 3 : 4 %][% t %]" => "1" ok 1633 - Line 816 "[% 0 ? 2 : 3 %]" => "3" ok 1634 - Line 817 "[% 1 ? 2 : 3 %]" => "2" ok 1635 - Line 818 "[% 0 ? 1 ? 2 : 3 : 4 %]" => "4" ok 1636 - Line 819 "[% t = 0 ? 1 ? [1..4] : [2..4] : [3..4] %][% t.0 %]" => "3" ok 1637 - Line 820 "[% t = 1 || 0 ? 0 : 1 || 2 ? 2 : 3 %][% t %]" => "0" ok 1638 - Line 821 "[% t = 0 or 0 ? 0 : 1 or 2 ? 2 : 3 %][% t %]" => "1" ok 1639 - Line 822 "[% t = 0 or 0 ? 0 : 0 or 2 ? 2 : 3 %][% t %]" => "2" ok 1640 - Line 824 "[% 0 ? 1 ? 1 + 2 * 3 : 1 + 2 * 4 : 1 + 2 * 5 %]" => "11" ok 1641 - Line 826 "[% foo //= 2 ; foo %]" => "2" ok 1642 - Line 827 "[% foo = 3; foo //= 2; foo %]" => "3" ok 1643 - Line 828 "[% foo = 3; SET foo; foo //= 2; foo %]" => "2" ok 1644 - Line 830 "[% 5 // 6 %]" => "5" ok 1645 - Line 831 "[% foo // 6 %]" => "6" ok 1646 - Line 832 "[% foo // 6 %]" => "6" ok 1647 - Line 833 "[% foo // 6 %]" => "" ok 1648 - Line 834 "[% foo // 6 %]" => "bar" ok 1649 - Line 836 "[% foo err 6 %]" => "6" ok 1650 - Line 837 "[% foo ERR 6 %]" => "6" ### regex ########################################### engine_option (compile_perl) ok 1651 - Line 843 "[% 'foo'.match(/foo/) ? 1 : 0 %]" => "1" ok 1652 - Line 844 "[% 'foo'.match(/foo) ? 1 : 0 %]" => "" ok 1653 - Line 845 "[% 'foo'.match(/fo o/x) ? 1 : 0 %]" => "1" ok 1654 - Line 846 "[% 'foo'.match(/Foo/i) ? 1 : 0 %]" => "1" ok 1655 - Line 847 "[% 'f # o'.match(/f.o/s) ? 1 : 0 %]" => "1" ok 1656 - Line 848 "[% ' # foo'.match(/^foo/m) ? 1 : 0 %]" => "1" ok 1657 - Line 849 "[% 'foo'.match(/foo/e) ? 1 : 0 %]" => "" ok 1658 - Line 850 "[% 'foo'.match(/foo/g) ? 1 : 0 %]" => "" ok 1659 - Line 851 "[% 'foo'.match(/foo) ? 1 : 0 %]" => "" ok 1660 - Line 852 "[% 'foo'.match(/foo**/) ? 1 : 0 %]" => "" ok 1661 - Line 853 "[% 'fo/o'.match(/fo\/o/) ? 1 : 0 %]" => "1" ok 1662 - Line 854 "[% 'foobar'.match(/(f\w\w)/).0 %]" => "foo" ### BLOCK / PROCESS / INCLUDE / WRAPPER ############# engine_option (compile_perl) ok 1663 - Line 860 "[% PROCESS foo %]one" => "" ok 1664 - Line 861 "[% BLOCK foo %]one" => "" ok 1665 - Line 862 "[% BLOCK foo %][% END %]one" => "one" ok 1666 - Line 863 "[% BLOCK %][% END %]one" => "one" ok 1667 - Line 864 "[% BLOCK foo %]hi there[% END %]one" => "one" ok 1668 - Line 865 "[% BLOCK foo %][% BLOCK foo %][% END %][% END %]" => "" ok 1669 - Line 866 "[% BLOCK foo %]hi there[% END %][% PROCESS foo %]" => "hi there" ok 1670 - Line 867 "[% PROCESS foo %][% BLOCK foo %]hi there[% END %]" => "hi there" ok 1671 - Line 868 "[% BLOCK foo %]hi there[% END %][% PROCESS foo foo %]" => "hi therehi there" ok 1672 - Line 869 "[% BLOCK foo %]hi there[% END %][% PROCESS foo, foo %]" => "hi therehi there" ok 1673 - Line 870 "[% BLOCK foo %]hi there[% END %][% PROCESS foo + foo %]" => "hi therehi there" ok 1674 - Line 871 "[% BLOCK foo %]hi [% one %] there[% END %][% PROCESS foo %]" => "hi ONE there" ok 1675 - Line 872 "[% BLOCK foo %]hi [% IF 1 %]Yes[% END %] there[% END %]<<[% PROCESS foo %]>>" => "<>" ok 1676 - Line 873 "[% BLOCK foo %]hi [% one %] there[% END %][% PROCESS foo one = 'two' %]" => "hi two there" ok 1677 - Line 874 "[% BLOCK foo %]hi [% one.two %] there[% END %][% PROCESS foo one.two = 'two' %]" => "hi two there" ok 1678 - Line 875 "[% BLOCK foo %]hi [% one.two %] there[% END %][% PROCESS foo + foo one.two = 'two' %]" => "hi two therehi two there" ok 1679 - Line 876 "[% BLOCK foo %][% BLOCK bar %]hi [% one %] there[% END %][% END %][% PROCESS foo/bar one => 'two' %]" => "hi two there" ok 1680 - Line 878 "[% BLOCK b %]Ta-Da[% END %][% self = {a => 'b'} %][% PROCESS $self.a self = 'blah' %]" => "Ta-Da" ok 1681 - Line 879 "[% BLOCK b %]Ta-Da[% END %][% self = {a => 'b'} %][% INCLUDE $self.a self = 'blah' %]" => "Ta-Da" ok 1682 - Line 880 "[% BLOCK b %]Ta-Da[% END %][% self = 'b' %][% PROCESS $self self = 'blah'; self %]" => "Ta-Dablah" ok 1683 - Line 881 "[% BLOCK b %]Ta-Da[% END %][% self = 'b' %][% INCLUDE $self self = 'blah'; self %]" => "Ta-Dab" ok 1684 - Line 883 "[% BLOCK foo %]hi [% one %] there[% END %][% PROCESS foo one = 'two' %][% one %]" => "hi two theretwo" ok 1685 - Line 884 "[% BLOCK foo %]hi [% one %] there[% END %][% INCLUDE foo one = 'two' %][% one %]" => "hi two there" ok 1686 - Line 886 "[% BLOCK foo %]FOO[% IF ! a ; a = 1; PROCESS bar; END %][% END %][% BLOCK bar %]BAR[% PROCESS foo %][% END %][% PROCESS foo %]" => "" ok 1687 - Line 888 "[% BLOCK foo %]FOO[% IF ! a ; a = 1; PROCESS bar; END %][% END %][% BLOCK bar %]BAR[% PROCESS foo %][% END %][% PROCESS foo %]" => "FOOBARFOO" ok 1688 - Line 890 "[% BLOCK foo %]([% content %])[% END %][% WRAPPER foo %]hi there[% END %]" => "(hi there)" ok 1689 - Line 891 "[% BLOCK foo %]([% one = 1; content %])[% END %][% WRAPPER foo %]hi there[% END %][% one %]" => "(hi there)won" ok 1690 - Line 893 "[% a = 23; PROCESS $foo %]" => "bar 23 baz" ### IF / UNLESS / ELSIF / ELSE ###################### engine_option (compile_perl) ok 1691 - Line 898 "[% IF 1 %]Yes[% END %]" => "Yes" ok 1692 - Line 899 "[% IF 0 %]Yes[% END %]" => "" ok 1693 - Line 900 "[% IF 0 %]Yes[% ELSE %]No[% END %]" => "No" ok 1694 - Line 901 "[% IF 0 %]Yes[% ELSIF 1 %]No[% END %]" => "No" ok 1695 - Line 902 "[% IF 0 %]Yes[% ELSIF 0 %]No[% END %]" => "" ok 1696 - Line 903 "[% IF 0 %]Yes[% ELSIF 0 %]No[% ELSE %]hmm[% END %]" => "hmm" ok 1697 - Line 905 "[% UNLESS 1 %]Yes[% END %]" => "" ok 1698 - Line 906 "[% UNLESS 0 %]Yes[% END %]" => "Yes" ok 1699 - Line 907 "[% UNLESS 0 %]Yes[% ELSE %]No[% END %]" => "Yes" ok 1700 - Line 908 "[% UNLESS 1 %]Yes[% ELSIF 1 %]No[% END %]" => "No" ok 1701 - Line 909 "[% UNLESS 1 %]Yes[% ELSIF 0 %]No[% END %]" => "" ok 1702 - Line 910 "[% UNLESS 1 %]Yes[% ELSIF 0 %]No[% ELSE %]hmm[% END %]" => "hmm" ### comments ######################################## engine_option (compile_perl) ok 1703 - Line 915 "[%\# one %]f" => "f" ok 1704 - Line 916 "[%\# # one %]f" => "f" ok 1705 - Line 917 "[%-\# # one %]f" => "f" ok 1706 - Line 918 "[% \# # one %]f" => "ONEf" ok 1707 - Line 919 "[% \# one %] # one %]f" => " # one %]f" ok 1708 - Line 921 "[%\# BLOCK one %]" => "" ok 1709 - Line 922 "[%\# BLOCK one %]two" => "two" ok 1710 - Line 923 "[%\# BLOCK one %]two[% END %]" => "" ok 1711 - Line 924 "[%\# BLOCK one %]two[% END %]three" => "" ok 1712 - Line 925 "[% %]" => "" ok 1713 - Line 926 "[% # \# Some comment # CALL 1 -%] # foo" => "foo" ### FOREACH / NEXT / LAST ########################### engine_option (compile_perl) ok 1714 - Line 934 "[% FOREACH foo %]" => "" ok 1715 - Line 935 "[% FOREACH foo %][% END %]" => "" ok 1716 - Line 936 "[% FOREACH foo %]bar[% END %]" => "" ok 1717 - Line 937 "[% FOREACH foo %]bar[% END %]" => "bar" ok 1718 - Line 938 "[% FOREACH f IN foo %]bar[% f %][% END %]" => "bar1bar2" ok 1719 - Line 939 "[% FOREACH f = foo %]bar[% f %][% END %]" => "bar1bar2" ok 1720 - Line 940 "[% FOREACH f = [1,2] %]bar[% f %][% END %]" => "bar1bar2" ok 1721 - Line 941 "[% FOREACH f = [1..3] %]bar[% f %][% END %]" => "bar1bar2bar3" ok 1722 - Line 942 "[% FOREACH f = [{a=>'A'},{a=>'B'}] %]bar[% f.a %][% END %]" => "barAbarB" ok 1723 - Line 943 "[% FOREACH [{a=>'A'},{a=>'B'}] %]bar[% a %][% END %]" => "barAbarB" ok 1724 - Line 944 "[% FOREACH [{a=>'A'},{a=>'B'}] %]bar[% a %][% END %][% a %]" => "barAbarB" ok 1725 - Line 945 "[% FOREACH f = [1..3] %][% loop.count %]/[% loop.size %] [% END %]" => "1/3 2/3 3/3 " ok 1726 - Line 946 "[% FOREACH f = [1..3] %][% IF loop.first %][% f %][% END %][% END %]" => "1" ok 1727 - Line 947 "[% FOREACH f = [1..3] %][% IF loop.last %][% f %][% END %][% END %]" => "3" ok 1728 - Line 948 "[% FOREACH f = [1..3] %][% IF loop.first %][% NEXT %][% END %][% f %][% END %]" => "23" ok 1729 - Line 949 "[% FOREACH f = [1..3] %][% IF loop.first %][% LAST %][% END %][% f %][% END %]" => "" ok 1730 - Line 950 "[% FOREACH f = [1..3] %][% f %][% IF loop.first %][% NEXT %][% END %][% END %]" => "123" ok 1731 - Line 951 "[% FOREACH f = [1..3] %][% f %][% IF loop.first %][% LAST %][% END %][% END %]" => "1" ok 1732 - Line 952 "[% loop.odd FOREACH [1..5] %]" => "10101" ok 1733 - Line 953 "[% loop.even FOREACH [1..5] %]" => "01010" ok 1734 - Line 954 "[% loop.parity FOREACH [1..5] %]" => "oddevenoddevenodd" ok 1735 - Line 956 "[% a = ["Red", "Blue"] ; FOR [0..3] ; a.${ loop.index % a.size } ; END %]" => "RedBlueRedBlue" ok 1736 - Line 961 "[% foo = 1 %][% FOREACH [1..10] %][% foo %][% foo = 2 %][% END %]" => "1222222222" ok 1737 - Line 962 "[% f = 1 %][% FOREACH i = [1..10] %][% i %][% f = 2 %][% END %][% f %]" => "123456789102" ok 1738 - Line 963 "[% f = 1 %][% FOREACH [1..10] %][% f = 2 %][% END %][% f %]" => "1" ok 1739 - Line 964 "[% f = 1 %][% FOREACH f = [1..10] %][% f %][% END %][% f %]" => "1234567891010" ok 1740 - Line 965 "[% FOREACH [1] %][% SET a = 1 %][% END %][% a %]" => "" ok 1741 - Line 966 "[% a %][% FOREACH [1] %][% SET a = 1 %][% END %][% a %]" => "" ok 1742 - Line 967 "[% a = 2 %][% FOREACH [1] %][% SET a = 1 %][% END %][% a %]" => "2" ok 1743 - Line 968 "[% a = 2 %][% FOREACH [1] %][% a = 1 %][% END %][% a %]" => "2" ok 1744 - Line 969 "[% a = 2 %][% FOREACH i = [1] %][% a = 1 %][% END %][% a %]" => "1" ok 1745 - Line 970 "[% FOREACH i = [1] %][% SET a = 1 %][% END %][% a %]" => "1" ok 1746 - Line 971 "[% f.b = 1 %][% FOREACH f.b = [1..10] %][% f.b %][% END %][% f.b %]" => "1234567891010" ok 1747 - Line 972 "[% a = 1 %][% FOREACH [{a=>'A'},{a=>'B'}] %]bar[% a %][% END %][% a %]" => "barAbarB1" ok 1748 - Line 973 "[% FOREACH [1..3] %][% loop.size %][% END %][% loop.size %]" => "333" ok 1749 - Line 974 "[% FOREACH i = [1..3] %][% loop.size %][% END %][% loop.size %]" => "333" ok 1750 - Line 977 "[% FOREACH f = [1..3]; 1; END %]" => "111" ok 1751 - Line 978 "[% FOREACH f = [1..3]; f; END %]" => "123" ok 1752 - Line 979 "[% FOREACH f = [1..3]; "$f"; END %]" => "123" ok 1753 - Line 980 "[% FOREACH f = [1..3]; f + 1; END %]" => "234" ok 1754 - Line 981 "[% FOREACH f IN [2,3,4]; FOREACH g IN [6,7,8]; f;g;", "; END; END %]" => "26, 27, 28, 36, 37, 38, 46, 47, 48, " ok 1755 - Line 992 "[% FOREACH i IN foo; i.n; END %]" => "123" ok 1756 - Line 993 "[% FOREACH i IN foo; i.n; END %]" => "1" ok 1757 - Line 994 "[% FOREACH i IN foo; i.n; END %]" => "123" ok 1758 - Line 995 "[% FOREACH i IN foo; i.n; END %]" => "1" ok 1759 - Line 997 "[% FOREACH i IN foo; i.n; END %]" => "123" ok 1760 - Line 998 "[% FOREACH i IN foo; i.n; END %]" => "1" ok 1761 - Line 999 "[% FOREACH i IN foo; i.n; END %]" => "123" ok 1762 - Line 1000 "[% FOREACH i IN foo; i.n; END %]" => "1" ### LOOP ############################################ engine_option (compile_perl) ok 1763 - Line 1005 "[% var = [{key => 'a'}, {key => 'b'}] -%] # [% LOOP var -%] # ([% key %]) # [% END %]" => " (a) # (b) # " ok 1764 - Line 1014 "[% var = [{key => 'a'}, {key => 'b'}, {key => 'c'}] -%] # [% LOOP var -%] # ([% key; '|'; __first__; '|'; __last__; '|'; __inner__; '|'; __odd__ %]) # [% END -%]" => "(a|1|0|0|1) # (b|0|0|1|0) # (c|0|1|0|1) # " ### WHILE ########################################### engine_option (compile_perl) ok 1765 - Line 1026 "[% WHILE foo %]" => "" ok 1766 - Line 1027 "[% WHILE foo %][% END %]" => "" ok 1767 - Line 1028 "[% WHILE (foo = foo - 1) %][% END %]" => "" ok 1768 - Line 1029 "[% WHILE (foo = foo - 1) %][% foo %][% END %]" => "21" ok 1769 - Line 1030 "[% WHILE foo %][% foo %][% foo = foo - 1 %][% END %]" => "321" ok 1770 - Line 1032 "[% WHILE 1 %][% foo %][% foo = foo - 1 %][% LAST IF foo == 1 %][% END %]" => "32" ok 1771 - Line 1033 "[% f = 10; WHILE f; f = f - 1 ; f ; END %]" => "9876543210" ok 1772 - Line 1034 "[% f = 10; WHILE f; f = f - 1 ; f ; END ; f %]" => "98765432100" ok 1773 - Line 1035 "[% f = 10; a = 2; WHILE f; f = f - 1 ; f ; a=3; END ; a%]" => "98765432103" ok 1774 - Line 1037 "[% f = 10; WHILE (g=f); f = f - 1 ; f ; END %]" => "9876543210" ok 1775 - Line 1038 "[% f = 10; WHILE (g=f); f = f - 1 ; f ; END ; f %]" => "98765432100" ok 1776 - Line 1039 "[% f = 10; a = 2; WHILE (g=f); f = f - 1 ; f ; a=3; END ; a%]" => "98765432103" ok 1777 - Line 1040 "[% f = 10; a = 2; WHILE (a=f); f = f - 1 ; f ; a=3; END ; a%]" => "98765432100" ### STOP / RETURN / CLEAR ########################### engine_option (compile_perl) ok 1778 - Line 1045 "[% STOP %]" => "" ok 1779 - Line 1046 "One[% STOP %]Two" => "One" ok 1780 - Line 1047 "[% BLOCK foo %]One[% STOP %]Two[% END %]First[% PROCESS foo %]Last" => "FirstOne" ok 1781 - Line 1048 "[% FOREACH f = [1..3] %][% f %][% IF loop.first %][% STOP %][% END %][% END %]" => "1" ok 1782 - Line 1049 "[% FOREACH f = [1..3] %][% IF loop.first %][% STOP %][% END %][% f %][% END %]" => "" ok 1783 - Line 1051 "[% RETURN %]" => "" ok 1784 - Line 1052 "One[% RETURN %]Two" => "One" ok 1785 - Line 1053 "[% BLOCK foo %]One[% RETURN %]Two[% END %]First[% PROCESS foo %]Last" => "FirstOneLast" ok 1786 - Line 1054 "[% FOREACH f = [1..3] %][% f %][% IF loop.first %][% RETURN %][% END %][% END %]" => "1" ok 1787 - Line 1055 "[% FOREACH f = [1..3] %][% IF loop.first %][% RETURN %][% END %][% f %][% END %]" => "" ok 1788 - Line 1057 "[% CLEAR %]" => "" ok 1789 - Line 1058 "One[% CLEAR %]Two" => "Two" ok 1790 - Line 1059 "[% BLOCK foo %]One[% CLEAR %]Two[% END %]First[% PROCESS foo %]Last" => "FirstTwoLast" ok 1791 - Line 1060 "[% FOREACH f = [1..3] %][% f %][% IF loop.first %][% CLEAR %][% END %][% END %]" => "23" ok 1792 - Line 1061 "[% FOREACH f = [1..3] %][% IF loop.first %][% CLEAR %][% END %][% f %][% END %]" => "123" ok 1793 - Line 1062 "[% FOREACH f = [1..3] %][% f %][% IF loop.last %][% CLEAR %][% END %][% END %]" => "" ok 1794 - Line 1063 "[% FOREACH f = [1..3] %][% IF loop.last %][% CLEAR %][% END %][% f %][% END %]" => "3" ### post opererative directives ##################### engine_option (compile_perl) ok 1795 - Line 1068 "[% GET foo IF 1 %]" => "1" ok 1796 - Line 1069 "[% f FOREACH f = [1..3] %]" => "123" ok 1797 - Line 1071 "2[% GET foo IF 1 IF 2 %]" => "21" ok 1798 - Line 1072 "2[% GET foo IF 1 IF 0 %]" => "2" ok 1799 - Line 1073 "[% f FOREACH f = [1..3] IF 1 %]" => "123" ok 1800 - Line 1074 "[% f FOREACH f = [1..3] IF 0 %]" => "" ok 1801 - Line 1075 "[% f FOREACH f = g FOREACH g = [1..3] %]" => "123" ok 1802 - Line 1076 "[% f FOREACH f = g.a FOREACH g = [{a=>1}, {a=>2}, {a=>3}] %]" => "123" ok 1803 - Line 1077 "[% f FOREACH f = a FOREACH [{a=>1}, {a=>2}, {a=>3}] %]" => "123" ok 1804 - Line 1079 "[% FOREACH f = [1..3] IF 1 %]([% f %])[% END %]" => "(1)(2)(3)" ok 1805 - Line 1080 "[% FOREACH f = [1..3] IF 0 %]([% f %])[% END %]" => "" ok 1806 - Line 1082 "[% BLOCK bar %][% foo %][% foo = foo - 1 %][% END %][% PROCESS bar WHILE foo %]" => "321" ### capturing ####################################### engine_option (compile_perl) ok 1807 - Line 1087 "[% foo = BLOCK %]Hi[% END %][% foo %][% foo %]" => "HiHi" ok 1808 - Line 1088 "[% BLOCK foo %]Hi[% END %][% bar = PROCESS foo %]-[% bar %]" => "-Hi" ok 1809 - Line 1089 "[% foo = IF 1 %]Hi[% END %][% foo %]" => "Hi" ok 1810 - Line 1090 "[% BLOCK foo %]([% i %])[% END %][% wow = PROCESS foo i='bar' %][% wow %]" => "(bar)" ok 1811 - Line 1091 "[% BLOCK foo %]([% i %])[% END %][% SET wow = PROCESS foo i='bar' %][% wow %]" => "(bar)" ### TAGS ############################################ engine_option (compile_perl) ok 1812 - Line 1096 "[% TAGS asp %]<% 1 + 2 %>" => "3" ok 1813 - Line 1097 "[% TAGS default %][% 1 + 2 %]" => "3" ok 1814 - Line 1098 "[% TAGS html %]" => "3" ok 1815 - Line 1099 "[% TAGS mason %]<% 1 + 2 >" => "3" ok 1816 - Line 1100 "[% TAGS metatext %]%% 1 + 2 %%" => "3" ok 1817 - Line 1101 "[% TAGS php %]" => "3" ok 1818 - Line 1102 "[% TAGS star %][* 1 + 2 *]" => "3" ok 1819 - Line 1103 "[% TAGS template %][% 1 + 2 %]" => "3" ok 1820 - Line 1104 "[% TAGS template1 %][% 1 + 2 %]" => "3" ok 1821 - Line 1105 "[% TAGS template1 %]%% 1 + 2 %%" => "3" ok 1822 - Line 1106 "[% TAGS tt2 %][% 1 + 2 %]" => "3" ok 1823 - Line 1108 "[% TAGS html %] " => "3" ok 1824 - Line 1109 "[% TAGS html %]" => "3" ok 1825 - Line 1110 "[% TAGS html %] # " => "3" ok 1826 - Line 1111 "[% BLOCK foo %][% TAGS html %] " => "3 3" ok 1827 - Line 1112 "[% BLOCK foo %][% TAGS html %][% END %][% PROCESS foo %] [% 1 + 2 %]" => "" ok 1828 - Line 1114 "[% TAGS %]" => "3" ok 1829 - Line 1116 "[% TAGS [<] [>] %][<] 1 + 2 [>]" => "3" ok 1830 - Line 1117 "[% TAGS '[<]' '[>]' %][<] 1 + 2 [>]" => "3" ok 1831 - Line 1118 "[% TAGS /[<]/ /[>]/ %]< 1 + 2 >" => "3" ok 1832 - Line 1119 "[% TAGS ** ** %]** 1 + 2 **" => "3" ok 1833 - Line 1120 "[% TAGS '**' '**' %]** 1 + 2 **" => "3" ok 1834 - Line 1121 "[% TAGS /**/ /**/ %]** 1 + 2 **" => "" ok 1835 - Line 1123 "[% TAGS html -->" => "3" ok 1836 - Line 1124 "[% TAGS html ; 7 -->" => "73" ok 1837 - Line 1125 "[% TAGS html ; 7 %]" => "" ### SWITCH / CASE ################################### engine_option (compile_perl) ok 1838 - Line 1130 "[% SWITCH 1 %][% END %]hi" => "hi" ok 1839 - Line 1131 "[% SWITCH 1 %][% CASE %]bar[% END %]hi" => "barhi" ok 1840 - Line 1132 "[% SWITCH 1 %]Pre[% CASE %]bar[% END %]hi" => "barhi" ok 1841 - Line 1133 "[% SWITCH 1 %][% CASE DEFAULT %]bar[% END %]hi" => "barhi" ok 1842 - Line 1134 "[% SWITCH 1 %][% CASE 0 %]bar[% END %]hi" => "hi" ok 1843 - Line 1135 "[% SWITCH 1 %][% CASE 1 %]bar[% END %]hi" => "barhi" ok 1844 - Line 1136 "[% SWITCH 1 %][% CASE foo %][% CASE 1 %]bar[% END %]hi" => "barhi" ok 1845 - Line 1137 "[% SWITCH 1 %][% CASE [1..10] %]bar[% END %]hi" => "barhi" ok 1846 - Line 1138 "[% SWITCH 11 %][% CASE [1..10] %]bar[% END %]hi" => "hi" ok 1847 - Line 1140 "[% SWITCH 1.0 %][% CASE [1..10] %]bar[% END %]hi" => "barhi" ### TRY / THROW / CATCH / FINAL ##################### engine_option (compile_perl) ok 1848 - Line 1145 "[% TRY %][% END %]hi" => "hi" ok 1849 - Line 1146 "[% TRY %]Foo[% END %]hi" => "Foohi" ok 1850 - Line 1147 "[% TRY %]Foo[% THROW foo 'for fun' %]bar[% END %]hi" => "" ok 1851 - Line 1148 "[% TRY %]Foo[% THROW foo 'for fun' %]bar[% CATCH %][% END %]hi" => "Foohi" ok 1852 - Line 1149 "[% TRY %]Foo[% THROW foo 'for fun' %]bar[% CATCH %]there[% END %]hi" => "Footherehi" ok 1853 - Line 1150 "[% TRY %]Foo[% THROW foo 'for fun' %]bar[% CATCH foo %]there[% END %]hi" => "Footherehi" ok 1854 - Line 1151 "[% TRY %]Foo[% TRY %]Foo[% THROW foo 'for fun' %][% CATCH bar %]one[% END %][% CATCH %]two[% END %]hi" => "FooFootwohi" ok 1855 - Line 1152 "[% TRY %]Foo[% TRY %]Foo[% THROW foo 'for fun' %][% CATCH bar %]one[% END %][% CATCH s %]two[% END %]hi" => "" ok 1856 - Line 1153 "[% TRY %]Foo[% THROW foo.bar 'for fun' %][% CATCH foo %]one[% CATCH foo.bar %]two[% END %]hi" => "Footwohi" ok 1857 - Line 1155 "[% TRY %]Foo[% FINAL %]Bar[% END %]hi" => "FooBarhi" ok 1858 - Line 1156 "[% TRY %]Foo[% THROW foo %][% FINAL %]Bar[% CATCH %]one[% END %]hi" => "" ok 1859 - Line 1157 "[% TRY %]Foo[% THROW foo %][% CATCH %]one[% FINAL %]Bar[% END %]hi" => "FoooneBarhi" ok 1860 - Line 1158 "[% TRY %]Foo[% THROW foo %][% CATCH bar %]one[% FINAL %]Bar[% END %]hi" => "" ok 1861 - Line 1160 "[% TRY %][% THROW foo 'bar' %][% CATCH %][% error %][% END %]" => "foo error - bar" ok 1862 - Line 1161 "[% TRY %][% THROW foo 'bar' %][% CATCH %][% error.type %][% END %]" => "foo" ok 1863 - Line 1162 "[% TRY %][% THROW foo 'bar' %][% CATCH %][% error.info %][% END %]" => "bar" ok 1864 - Line 1163 "[% TRY %][% THROW foo %][% CATCH %][% error.type %][% END %]" => "undef" ok 1865 - Line 1164 "[% TRY %][% THROW foo %][% CATCH %][% error.info %][% END %]" => "foo" ### named args ###################################### engine_option (compile_perl) ok 1866 - Line 1170 "[% foo(bar = 'one', baz = 'two') %]" => "baronebaztwo" ok 1867 - Line 1172 "[%bar='ONE'%][% foo($bar = 'one') %]" => "ONEone" ### USE ############################################# engine_option (compile_perl) ok 1868 - Line 1178 "[% USE son_of_gun_that_does_not_exist %]one" => "" ok 1869 - Line 1179 "[% USE Iterator([3..6]) %]hey[% CALL Iterator.get_first; Iterator.size %]" => "hey4" ok 1870 - Line 1180 "[% USE FooTest %]one" => "one" ok 1871 - Line 1181 "[% USE FooTest2 %]one" => "one" ok 1872 - Line 1182 "[% USE FooTest(bar = 'baz') %]one[% FooTest.bar %]" => "onebarbaz" ok 1873 - Line 1183 "[% USE FooTest2(bar = 'baz') %]one[% FooTest2.bar %]" => "onebarbaz" ok 1874 - Line 1184 "[% USE FooTest(bar = 'baz') %]one[% FooTest.bar %]" => "onebarbaz" ok 1875 - Line 1185 "[% USE d = FooTest(bar = 'baz') %]one[% d.bar %]" => "onebarbaz" ok 1876 - Line 1186 "[% USE d.d = FooTest(bar = 'baz') %]one[% d.d.bar %]" => "" ok 1877 - Line 1187 "[% USE FooTest(somerand = 8) %]one[% FooTest.somerand %]" => "one8" ok 1878 - Line 1189 "[% USE a(bar = 'baz') %]one[% a.seven %]" => "" ok 1879 - Line 1190 "[% USE a(bar = 'baz') %]one[% a.seven %]" => "one7" ok 1880 - Line 1193 "[% USE FooTest %]three" => "three" ### MACRO ########################################### engine_option (compile_perl) ok 1881 - Line 1198 "[% MACRO foo PROCESS bar %][% BLOCK bar %]Hi[% END %][% foo %]" => "Hi" ok 1882 - Line 1199 "[% MACRO foo BLOCK %]Hi[% END %][% foo %]" => "Hi" ok 1883 - Line 1200 "[% MACRO foo BLOCK %]Hi[% END %][% foo %]" => "Hi" ok 1884 - Line 1201 "[% MACRO foo(n) BLOCK %]Hi[% n %][% END %][% foo(2) %]" => "Hi2" ok 1885 - Line 1202 "[%n=1%][% MACRO foo(n) BLOCK %]Hi[% n %][% END %][% foo(2) %][%n%]" => "Hi21" ok 1886 - Line 1203 "[%n=1%][% MACRO foo BLOCK %]Hi[% n = 2%][% END %][% foo %][%n%]" => "Hi1" ok 1887 - Line 1204 "[% MACRO foo(n) FOREACH i=[1..n] %][% i %][% END %][% foo(3) %]" => "123" ok 1888 - Line 1206 "[% MACRO f BLOCK %]>[% TRY; f ; CATCH ; "caught" ; END %][% END %][% f %]" => ">>>caught" ok 1889 - Line 1209 "[% foo = ->{ 'Hi' } %][% foo %]" => "Hi" ok 1890 - Line 1210 "[% foo = ->{ 'Hi'; this } %][% foo(2) %]" => "Hi2" ok 1891 - Line 1211 "[% foo = ->(n){ 'Hi'; n } %][% foo(2) %]" => "Hi2" ok 1892 - Line 1212 "[%n=1%][% foo = ->(n) { 'Hi' ; n } %][% foo(2) %][%n%]" => "Hi21" ok 1893 - Line 1213 "[% foo = ->(n) { FOREACH i=[1..n]; i ; END } %][% foo(3) %]" => "123" ### DEBUG ########################################### engine_option (compile_perl) ok 1894 - Line 1219 " # # [% one %]" => " # # # \#\# input text line 3 : [% one %] \#\# # ONE" ok 1895 - Line 1220 "[% one %]" => " # \#\# input text line 1 : [% one %] \#\# # ONE" ok 1896 - Line 1221 "[% one %] # # " => "(1)ONE # # " ok 1897 - Line 1222 "1 # 2 # 3[% one %]" => "1 # 2 # 3(3)ONE" ok 1898 - Line 1223 "[% one; # one %]" => "(1)ONE(2)ONE" ok 1899 - Line 1225 "[% DEBUG format '($line)' %][% one %]" => " # \#\# input text line 1 : [% DEBUG format '($line)' %] \#\# # (1)ONE" ok 1900 - Line 1227 "[% TRY %][% abc %][% CATCH %][% error %][% END %]" => "undef error - abc is undefined # " ok 1901 - Line 1229 "[% TRY %][% abc.def %][% CATCH %][% error %][% END %]" => "undef error - abc.def is undefined # " ### constants ####################################### engine_option (compile_perl) ok 1902 - Line 1248 "[% constants.harry %]" => "do_this_once" ok 1903 - Line 1249 "[% constants.harry.length %]" => "12" ok 1904 - Line 1250 "[% SET constants.something = 1 %][% constants.something %]one" => "1one" ok 1905 - Line 1251 "[% SET constants.harry = 1 %][% constants.harry %]one" => "do_this_onceone" ok 1906 - Line 1252 "[% constants.foo.${constants.bang} %]" => "57" ok 1907 - Line 1253 "[% constants.foo.$bam.${constants.bing} %]" => "42" ok 1908 - Line 1254 "[% bam = 'somethingelse' %][% constants.foo.$bam.${constants.bing} %]" => "42" ok 1909 - Line 1256 "[% constants.${"harry"} %]" => "do_this_once" ok 1910 - Line 1257 "[% ${"constants"}.harry %]" => "foo" ok 1911 - Line 1259 "[% ${"con${"s"}tants"}.harry %]" => "foo" ### CONTEXT ######################################### engine_option (compile_perl) ok 1912 - Line 1265 "[% CALL cctx.call_me %][% cctx.last_context %]" => "list" ok 1913 - Line 1266 "[% cctx.array %]" => "ARRAY(0x7f8018a7e2c8)" ok 1914 - Line 1267 "[% cctx.array2 %]" => "4" ok 1915 - Line 1268 "[% cctx.list %]" => "ARRAY(0x7f8018a8b738)" ok 1916 - Line 1269 "[% cctx.scalar %]" => "8" ok 1917 - Line 1270 "[% cctx.bang %]" => "bing" ok 1918 - Line 1274 "[% CALL cctx.call_me %][% cctx.last_context %]" => "list" ok 1919 - Line 1275 "[% CALL @(cctx.call_me) %][% cctx.last_context %]" => "list" ok 1920 - Line 1276 "[% CALL $(cctx.call_me) %][% cctx.last_context %]" => "scalar" ok 1921 - Line 1277 "[% CALL call_cctx %][% cctx.last_context %]" => "list" ok 1922 - Line 1278 "[% CALL @(call_cctx) %][% cctx.last_context %]" => "list" ok 1923 - Line 1279 "[% CALL $(call_cctx) %][% cctx.last_context %]" => "scalar" ok 1924 - Line 1280 "[% CALL cctx.call_me %][% cctx.last_context %]" => "list" ok 1925 - Line 1281 "[% CALL cctx.call_me %][% cctx.last_context.0 %]" => "list" ok 1926 - Line 1282 "[% CALL cctx.call_me %][% cctx.last_context %]" => "scalar" ok 1927 - Line 1283 "[% cctx.array %]" => "ARRAY(0x7f8018a8f408)" ok 1928 - Line 1284 "[% @(cctx.array) %]" => "ARRAY(0x7f8018a8f180)" ok 1929 - Line 1285 "[% $(cctx.array) %]" => "3" ok 1930 - Line 1286 "[% cctx.array2 %]" => "4" ok 1931 - Line 1287 "[% @(cctx.array2) %]" => "ARRAY(0x7f8018a8f588)" ok 1932 - Line 1288 "[% $(cctx.array2) %]" => "1" ok 1933 - Line 1289 "[% cctx.list %]" => "ARRAY(0x7f8018a8f060)" ok 1934 - Line 1290 "[% @(cctx.list) %]" => "ARRAY(0x7f8018a8f7e0)" ok 1935 - Line 1291 "[% $(cctx.list) %]" => "7" ok 1936 - Line 1292 "[% cctx.scalar %]" => "8" ok 1937 - Line 1293 "[% @(cctx.scalar) %]" => "ARRAY(0x7f8018a9cc78)" ok 1938 - Line 1294 "[% $(cctx.scalar) %]" => "8" ok 1939 - Line 1295 "[% cctx.bang %] ~" => "bing ~" ok 1940 - Line 1296 "[% @(cctx.bang) %] ~" => "bing ~" ok 1941 - Line 1297 "[% $(cctx.bang) %] ~" => "bing ~" ok 1942 - Line 1299 "[% CONFIG CALL_CONTEXT => "list"; CALL cctx.call_me; CONFIG CALL_CONTEXT => "smart" %][% cctx.last_context %]" => "list" ok 1943 - Line 1301 "[% CONFIG CALL_CONTEXT => "item"; CALL cctx.call_me %][% cctx.last_context %]" => "scalar" ok 1944 - Line 1303 "[% cctx.dataref.0.foo = 7; cctx.dataref.0.foo %]" => "7" ok 1945 - Line 1305 "[% @(cctx.dataref).0.foo = 7; cctx.dataref.foo %]" => "7" ok 1946 - Line 1307 "[% $(cctx.dataref).0.foo = 7; cctx.dataref.0.foo %]" => "7" ok 1947 - Line 1309 "[% CONFIG CALL_CONTEXT => "list"; cctx.dataref.0.foo = 7; CONFIG CALL_CONTEXT => "item"; cctx.dataref.foo %]" => "7" ok 1948 - Line 1314 "[% cctxo.bang = 1 %] ~" => " ~" ok 1949 - Line 1315 "[% cctxo.dataref.foo = 7; cctxo.dataref.foo %]" => "7" ok 1950 - Line 1317 "[% CALL cctxo.call_me %][% cctxo.last_context %]" => "list" ok 1951 - Line 1318 "[% CALL @(cctxo.call_me) %][% cctxo.last_context %]" => "list" ok 1952 - Line 1319 "[% CALL $(cctxo.call_me) %][% cctxo.last_context %]" => "scalar" ok 1953 - Line 1320 "[% CALL call_cctxo %][% cctxo.last_context %]" => "list" ok 1954 - Line 1321 "[% CALL @(call_cctxo) %][% cctxo.last_context %]" => "list" ok 1955 - Line 1322 "[% CALL $(call_cctxo) %][% cctxo.last_context %]" => "scalar" ok 1956 - Line 1323 "[% CALL cctxo.call_me %][% cctxo.last_context %]" => "list" ok 1957 - Line 1324 "[% CALL cctxo.call_me %][% cctxo.last_context.0 %]" => "list" ok 1958 - Line 1325 "[% CALL cctxo.call_me %][% cctxo.last_context %]" => "scalar" ok 1959 - Line 1326 "[% cctxo.array %]" => "ARRAY(0x7f80199f8248)" ok 1960 - Line 1327 "[% @(cctxo.array) %]" => "ARRAY(0x7f8018a9f200)" ok 1961 - Line 1328 "[% $(cctxo.array) %]" => "3" ok 1962 - Line 1329 "[% cctxo.array2 %]" => "4" ok 1963 - Line 1330 "[% @(cctxo.array2) %]" => "ARRAY(0x7f8018a9f578)" ok 1964 - Line 1331 "[% $(cctxo.array2) %]" => "1" ok 1965 - Line 1332 "[% cctxo.list %]" => "ARRAY(0x7f8018a9dbc0)" ok 1966 - Line 1333 "[% @(cctxo.list) %]" => "ARRAY(0x7f8018a9f848)" ok 1967 - Line 1334 "[% $(cctxo.list) %]" => "7" ok 1968 - Line 1335 "[% cctxo.scalar %]" => "8" ok 1969 - Line 1336 "[% @(cctxo.scalar) %]" => "ARRAY(0x7f8018a9faa0)" ok 1970 - Line 1337 "[% $(cctxo.scalar) %]" => "8" ok 1971 - Line 1338 "[% cctxo.bang %] ~" => "bing ~" ok 1972 - Line 1341 "[% SET cctxo.call_me = 2 %][% cctxo.last_context %]" => "list2" ok 1973 - Line 1343 "[% CALL @(cctxo.call_me = 3) %][% cctxo.last_context %]" => "list3" ok 1974 - Line 1345 "[% CALL $(cctxo.call_me = 4) %][% cctxo.last_context %]" => "scalar4" ### INTERPOLATE ##################################### engine_option (compile_perl) ok 1975 - Line 1351 "Foo $one Bar" => "Foo ONE Bar" ok 1976 - Line 1352 "[% PERL %] my $n=7; print $n [% END %]" => "7" ok 1977 - Line 1353 "[% TRY ; PERL %] my $n=7; print $n [% END ; END %]" => "7" ok 1978 - Line 1357 "Foo \ Bar" => "Foo \ Bar" ok 1979 - Line 1358 "Foo \\ Bar" => "Foo \\ Bar" ok 1980 - Line 1359 "Foo \n Bar" => "Foo \n Bar" ok 1981 - Line 1360 "Foo \$a Bar" => "Foo $a Bar" ok 1982 - Line 1361 "Foo \\$a Bar" => "Foo \\7 Bar" ok 1983 - Line 1362 "Foo \\\$a Bar" => "Foo \\$a Bar" ok 1984 - Line 1363 "Foo $a.B Bar" => "Foo 7 Bar" ok 1985 - Line 1364 "Foo ${ a.B } Bar" => "Foo 7 Bar" ok 1986 - Line 1365 "Foo $a.b.c("hi") Bar" => "Foo Bar" ok 1987 - Line 1367 "Foo ${a.b.c("hi")} Bar" => "Foo Bar" ok 1988 - Line 1368 "Foo $a Bar $!a Baz" => "Foo 7 Bar 7 Baz" ok 1989 - Line 1369 "Foo $a Bar $!{a} Baz" => "Foo 7 Bar 7 Baz" ok 1990 - Line 1370 "Foo $a Bar $!a Baz" => "Foo 7 Bar 7 Baz" ok 1991 - Line 1371 "Foo $a Bar $!{a} Baz" => "Foo 7 Bar 7 Baz" ok 1992 - Line 1372 "Foo $a Bar $!a Baz" => "Foo $a Bar Baz" ok 1993 - Line 1373 "Foo ${a} Bar $!{a} Baz" => "Foo ${a} Bar Baz" ### ANYCASE / TRIM ################################## engine_option (compile_perl) ok 1994 - Line 1378 "[% GET %]" => "" ok 1995 - Line 1379 "[% GET GET %]" => "ONE" ok 1996 - Line 1380 "[% get one %]" => "ONE" ok 1997 - Line 1381 "[% get %]" => "" ok 1998 - Line 1382 "[% get get %]" => "ONE" ok 1999 - Line 1384 "[% BLOCK foo %] # hi # [% END %][% PROCESS foo %]" => " # hi # " ok 2000 - Line 1385 "[% BLOCK foo %] # hi[% END %][% PROCESS foo %]" => "hi" ok 2001 - Line 1386 "[% BLOCK foo %]hi # [% END %][% PROCESS foo %]" => "hi" ok 2002 - Line 1387 "[% BLOCK foo %]hi[% nl %][% END %][% PROCESS foo %]" => "hi" ok 2003 - Line 1388 "[% BLOCK foo %][% nl %]hi[% END %][% PROCESS foo %]" => "hi" ok 2004 - Line 1389 "A[% TRY %] # hi # [% END %]" => "A # hi" ok 2005 - Line 1391 "[% FOO %]" => "foo" ### V1DOLLAR ######################################## engine_option (compile_perl) ok 2006 - Line 1396 "[% a %]|[% $a %]|[% ${ a } %]|[% ${ "a" } %]" => "A|bar|bar|A" ok 2007 - Line 1397 "[% a %]|[% $a %]|[% ${ a } %]|[% ${ "a" } %]" => "A|A|bar|A" ok 2008 - Line 1400 "[% a.b.c %]|[% $a.b.c %]|[% a.$b.c %]|[% ${ a.b.c } %]" => "Cb||CB|bar" ok 2009 - Line 1401 "[% a.b.c %]|[% $a.b.c %]|[% a.$b.c %]|[% ${ a.b.c } %]" => "Cb|Cb|Cb|bar" ok 2010 - Line 1403 "[% "$a" %]/$a/[% "${a}" %]/${a}" => "A/$a/A/${a}" ok 2011 - Line 1404 "[% "$a" %]/$a/[% "${a}" %]/${a}" => "A/$a/A/${a}" ok 2012 - Line 1405 "[% "$a" %]/$a/[% "${a}" %]/${a}" => "A/A/A/A" ok 2013 - Line 1406 "[% "$a" %]/$a/[% "${a}" %]/${a}" => "A/A/A/A" ok 2014 - Line 1408 "[% constants.a %]|[% $constants.a %]|[% constants.$a %]" => "A|A|A" ### V2PIPE / V2EQUALS ############################### engine_option (compile_perl) ok 2015 - Line 1413 "[%- BLOCK a %]b is [% b %] # [% END %] # [%- PROCESS a b => 237 | repeat(2) %]" => "b is 237 # b is 237 # " ok 2016 - Line 1418 "[%- BLOCK a %]b is [% b %] # [% END %] # [%- PROCESS a b => 237 | repeat(2) %]" => "b is 237237 # " ok 2017 - Line 1422 "[% ('a' == 'b') || 0 %]" => "0" ok 2018 - Line 1423 "[% ('a' != 'b') || 0 %]" => "1" ok 2019 - Line 1424 "[% ('a' == 'b') || 0 %]" => "0" ok 2020 - Line 1425 "[% ('a' != 'b') || 0 %]" => "1" ok 2021 - Line 1426 "[% ('a' == 'b') || 0 %]" => "1" ok 2022 - Line 1427 "[% ('a' != 'b') || 0 %]" => "0" ok 2023 - Line 1428 "[% ('7' == '7.0') || 0 %]" => "0" ok 2024 - Line 1429 "[% ('7' == '7.0') || 0 %]" => "1" ok 2025 - Line 1430 "[% (7 == 7.0) || 0 %]" => "1" ok 2026 - Line 1431 "[% (7 == 7.0) || 0 %]" => "1" ### configuration ################################### engine_option (compile_perl) ok 2027 - Line 1436 "[% a = 7 %]$a" => "7" ok 2028 - Line 1437 "[% a = 7 %]$a" => "7" ### PERL ############################################ engine_option (compile_perl) ok 2029 - Line 1442 "[% TRY %][% PERL %][% END %][% CATCH ; error; END %]" => "perl error - EVAL_PERL not set" ok 2030 - Line 1443 "[% PERL %] print "[% one %]" [% END %]" => "ONE" ok 2031 - Line 1444 "[% PERL %] print $stash->get('one') [% END %]" => "ONE" ok 2032 - Line 1445 "[% PERL %] print $stash->set('a.b.c', 7) [% END %][% a.b.c %]" => "77" ok 2033 - Line 1446 "[% RAWPERL %]$output .= 'interesting'[% END %]" => "interesting" ### recursion prevention ############################ engine_option (compile_perl) ok 2034 - Line 1451 "[% BLOCK foo %][% PROCESS bar %][% END %][% BLOCK bar %][% PROCESS foo %][% END %][% PROCESS foo %]" => "" ### META ############################################ engine_option (compile_perl) ok 2035 - Line 1456 "[% template.name %]" => "input text" ok 2036 - Line 1457 "[% META foo = 'bar' %][% template.foo %]" => "bar" ok 2037 - Line 1458 "[% META name = 'bar' %][% template.name %]" => "bar" ok 2038 - Line 1459 "[% META foo = 'bar' %][% component.foo %]" => "bar" ok 2039 - Line 1460 "[% META foo = 'bar' %][% component = '' %][% component.foo %]|foo" => "|foo" ok 2040 - Line 1461 "[% META foo = 'bar' %][% template = '' %][% template.foo %]|foo" => "|foo" ### references ###################################### engine_option (compile_perl) ok 2041 - Line 1466 "[% a=3; b=\a; b; a %]" => "33" ok 2042 - Line 1467 "[% a=3; b=\a; a=7; b; a %]" => "77" ok 2043 - Line 1469 "[% a={}; a.1=7; b=\a.1; b; a.1 %]" => "77" ok 2044 - Line 1470 "[% a={}; a.1=7; b=\a.20; a.20=7; b; a.20 %]" => "77" ok 2045 - Line 1472 "[% a=[]; a.1=7; b=\a.1; b; a.1 %]" => "77" ok 2046 - Line 1473 "[% a=[]; a.1=7; b=\a.20; a.20=7; b; a.20 %]" => "77" ok 2047 - Line 1475 "[% \a %]" => "CODE(0x7f8018aa8330)" ok 2048 - Line 1476 "[% b=\a; b %]" => "a sub []" ok 2049 - Line 1477 "[% b=\a(1); b %]" => "a sub [1]" ok 2050 - Line 1478 "[% b=\a; b(2) %]" => "a sub [2]" ok 2051 - Line 1479 "[% b=\a(1); b(2) %]" => "a sub [1 2]" ok 2052 - Line 1480 "[% f=\j.k; j.k=7; f %]" => "7" ok 2053 - Line 1482 "[% a = "a" ; f = {a=>"A",b=>"B"} ; foo = \f.$a ; foo %]" => "A" ok 2054 - Line 1483 "[% a = "a" ; f = {a=>"A",b=>"B"} ; foo = \f.$a ; a = "b" ; foo %]" => "A" ok 2055 - Line 1484 "[% a = "ab" ; f = "abcd"; foo = \f.replace(a, "-AB-") ; a = "cd"; foo %]" => "-AB-cd" ok 2056 - Line 1485 "[% a = "ab" ; f = "abcd"; foo = \f.replace(a, "-AB-").replace("-AB-", "*") ; a = "cd"; foo %]" => "*cd" ok 2057 - Line 1487 "[% a = "ab" ; f = "abcd"; foo = \f.replace(a, "-AB-") ; f = "ab"; foo %]" => "-AB-cd" ok 2058 - Line 1488 "[% a = "ab" ; f = "abcd"; foo = \f.replace(a, "-AB-").replace("-AB-", "*") ; f = "ab"; foo %]" => "*cd" ### reserved words ################################## engine_option (compile_perl) ok 2059 - Line 1499 "[% GET %]" => "" ok 2060 - Line 1500 "[% GET GET %]" => "named_get" ok 2061 - Line 1501 "[% GET get %]" => "lower_named_get" ok 2062 - Line 1502 "[% GET ${'GET'} %]" => "bar" ok 2063 - Line 1504 "[% GET = 1 %][% GET GET %]" => "" ok 2064 - Line 1505 "[% SET GET = 1 %][% GET GET %]" => "1" ok 2065 - Line 1507 "[% GET $hold_get %]" => "named_get" ok 2066 - Line 1508 "[% GET $GET %]" => "value of named_get" ok 2067 - Line 1509 "[% BLOCK GET %]hi[% END %][% PROCESS GET %]" => "hi" ok 2068 - Line 1510 "[% BLOCK foo %]hi[% END %][% PROCESS foo a = GET %]" => "hi" ok 2069 - Line 1511 "[% BLOCK foo %]hi[% END %][% PROCESS foo GET = 1 %]" => "" ok 2070 - Line 1512 "[% BLOCK foo %]hi[% END %][% PROCESS foo IF GET %]" => "hi" ### embedded items ################################## engine_option (compile_perl) ok 2071 - Line 1517 "[% " \" " %]" => " " " ok 2072 - Line 1518 "[% " \$foo " %]" => " $foo " ok 2073 - Line 1519 "[% " \${foo} " %]" => " ${foo} " ok 2074 - Line 1520 "[% " \n " %]" => " # " ok 2075 - Line 1521 "[% " \t " %]" => " " ok 2076 - Line 1522 "[% " \r " %]" => " " ok 2077 - Line 1524 "[% 'foo\'bar' %]" => "foo'bar" ok 2078 - Line 1525 "[% "foo\"bar" %]" => "foo"bar" ok 2079 - Line 1526 "[% qw(foo \)).1 %]" => ")" ok 2080 - Line 1527 "[% qw|foo \||.1 %]" => "|" ok 2081 - Line 1529 "[% ' \' ' %]" => " ' " ok 2082 - Line 1530 "[% ' \r ' %]" => " \r " ok 2083 - Line 1531 "[% ' \n ' %]" => " \n " ok 2084 - Line 1532 "[% ' \t ' %]" => " \t " ok 2085 - Line 1533 "[% ' $foo ' %]" => " $foo " ok 2086 - Line 1535 "[% A = "bar" ; ${ "A" } %]" => "bar" ok 2087 - Line 1536 "[% A = "bar" ; "(${ A })" %]" => "(bar)" ok 2088 - Line 1537 "[% A = "bar" ; ${ {a => "A"}.a } %]" => "bar" ok 2089 - Line 1538 "[% A = "bar" ; "(${ {a => "A"}.a })" %]" => "(A)" ok 2090 - Line 1539 "[% A = "bar" ; "(${ ${ {a => "A"}.a } })" %]" => "(bar)" ok 2091 - Line 1540 "[% A = "bar" %](${ {a => "A"}.a })" => "(A)" ok 2092 - Line 1541 "[% A = "bar" %](${ ${ {a => "A"}.a } })" => "(bar)" ok 2093 - Line 1543 "[% "[%" %]" => "[%" ok 2094 - Line 1544 "[% "%]" %]" => "%]" ok 2095 - Line 1545 "[% a = "[% %]" %][% a %]" => "[% %]" ok 2096 - Line 1546 "[% qw([% 1 + 2 %]).join %]" => "[% 1 + 2 %]" ### STRICT ########################################## engine_option (compile_perl) ok 2097 - Line 1550 "[% TRY; foo; CATCH; error; END %]" => "var.undef error - undefined variable: foo in input text" ok 2098 - Line 1551 "[% TRY; foo.bar(1); CATCH; error; END %]" => "var.undef error - undefined variable: foo.bar(1) in input text" ok 2099 - Line 1552 "[% TRY; 1 IF foo.bar.baz; CATCH; error; END %]" => "var.undef error - undefined variable: foo.bar.baz in input text" ok 2100 - Line 1554 "[% foo.bar() %]ok" => "ok" ok 2101 - Line 1555 "[% foo.baz() %]ok" => "" ### EVALUATE ######################################## engine_option (compile_perl) ok 2102 - Line 1561 "[% foo | eval %]" => "baz" ok 2103 - Line 1563 "[% "[% 1 + 2 %]" | eval %]" => "3" ok 2104 - Line 1564 "[% qw([% 1 + 2 %]).join.eval %]" => "3" ok 2105 - Line 1566 "[% f = ">[% TRY; f.eval ; CATCH; 'caught' ; END %]"; f.eval %]" => ">>>>>caught" ok 2106 - Line 1567 "[% f = ">[% TRY; f.eval ; CATCH; 'caught' ; END %]"; f.eval; f.eval %]" => ">>>>>caught>>>>>caught" ok 2107 - Line 1568 "[% f = ">[% TRY; f.eval ; CATCH; 'foo' ; END %]"; f.eval;f.eval %]" => ">>foo>>foo" ok 2108 - Line 1569 "[% '\#set($foo = 12)'|eval(syntax => 'velocity') %]|[% foo %]" => "|12" ok 2109 - Line 1571 "[% f = ">[% TRY; f.eval ; CATCH; 'caught' ; END %]"; EVALUATE f %]" => ">>>>>caught" ok 2110 - Line 1572 "[% f = ">[% TRY; f.eval ; CATCH; 'foo' ; END %]"; EVALUATE f; EVALUATE f %]" => ">>foo>>foo" ok 2111 - Line 1573 "[% EVALUATE '\#set($foo = 12)' syntax => 'velocity' %]|[% foo %]" => "|12" ok 2112 - Line 1575 "[% TRY; '[% bar %]'.eval(STRICT => 1); CATCH; error; END %]" => "var.undef error - undefined variable: bar in input text" ok 2113 - Line 1576 "[% TRY; CONFIG STRICT => 1; '[% bar %]'.eval(STRICT => 0); CATCH; error; END %]" => "eval_strict error - Cannot disable STRICT once it is enabled" ok 2114 - Line 1577 "[% TRY; '[% bar %]'.eval(STRICT => 1); CATCH; error.type; END; bing %] - ok" => "var.undef - ok" ### DUMP ############################################ engine_option (compile_perl) ok 2115 - Line 1585 "[% DUMP a %]" => "DUMP: File "input text" line 1 # a = undef; # " ok 2116 - Line 1586 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 a = undef;" ok 2117 - Line 1587 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 a = 's';" ok 2118 - Line 1588 "[% # p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 2 a = 's';" ok 2119 - Line 1589 "[% p = DUMP a, b; p.collapse %]" => "DUMP: File "input text" line 1 a, b = [ 's', undef ];" ok 2120 - Line 1590 "[% p = DUMP a Useqq => 'b'; p.collapse %]" => "DUMP: File "input text" line 1 a Useqq => 'b' = [ 's', { 'Useqq' => 'b' } ];" ok 2121 - Line 1591 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 a = "s";" ok 2122 - Line 1592 "[% p = DUMP a; p.collapse %]|foo" => "|foo" ok 2123 - Line 1593 "[% p = DUMP _a, b; p.collapse %]" => "DUMP: File "input text" line 1 _a, b = [ undef, 'c' ];" ok 2124 - Line 1594 "[% p = DUMP {a => 'b'}; p.collapse %]" => "DUMP: File "input text" line 1 {a => 'b'} = { 'a' => 'b' };" ok 2125 - Line 1595 "[% p = DUMP _a; p.collapse %]" => "DUMP: File "input text" line 1 _a = undef;" ok 2126 - Line 1596 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 a = { 'b' => 'c' };" ok 2127 - Line 1597 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 a = {};" ok 2128 - Line 1598 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 a = {};" ok 2129 - Line 1599 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 Dump(7)" ok 2130 - Line 1600 "[% p = DUMP a; p.collapse %]" => "a = 's';" ok 2131 - Line 1601 "[% p = DUMP a; p.collapse %]" => "
a = 's'; 
" ok 2132 - Line 1603 "[% p = DUMP a; p.collapse %]" => "
a = 's'; 
" ok 2133 - Line 1604 "[% p = DUMP a; p.collapse %]" => "a = 's';" ok 2134 - Line 1606 "[% SET global; p = DUMP; p.collapse %]" => "DUMP: File "input text" line 1 EntireStash = { 'a' => 'b', 'global' => undef };" ok 2135 - Line 1607 "[% SET global; p = DUMP; p.collapse %]" => "DUMP: File "input text" line 1 EntireStash = { 'a' => 'b', 'global' => undef };" ok 2136 - Line 1608 "[% SET global; p = DUMP; p.collapse %]" => "DUMP: File "input text" line 1" ### SYNTAX ########################################## engine_option (compile_perl) ok 2137 - Line 1615 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "" ok 2138 - Line 1616 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "b is 237237" ok 2139 - Line 1617 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "b is 237237" ok 2140 - Line 1618 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "b is 237237" ok 2141 - Line 1619 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "b is 237b is 237" ok 2142 - Line 1620 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "b is 237b is 237" ok 2143 - Line 1621 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "b is 237b is 237" ok 2144 - Line 1624 "[% a %]|[% $a %]|[% ${ a } %]|[% ${ "a" } %]" => "A|bar|bar|A" ok 2145 - Line 1625 "[% a %]|[% $a %]|[% ${ a } %]|[% ${ "a" } %]" => "A|bar|bar|A" ok 2146 - Line 1626 "[% a %]|[% $a %]|[% ${ a } %]|[% ${ "a" } %]" => "A|A|bar|A" ok 2147 - Line 1628 "" => "FOO" ok 2148 - Line 1629 "" => "7 8" ok 2149 - Line 1630 "" => "1" ok 2150 - Line 1631 "" => "1" ok 2151 - Line 1632 "d" => "" ok 2152 - Line 1634 "[% ""|eval(syntax => 'hte') %] = [% 6 %]" => "6 = 6" ok 2153 - Line 1635 "[% ""|eval(syntax => 'ht') %] = [% 6 %]" => "" ok 2154 - Line 1636 "[% ""|eval(syntax => 'ht') %] = [% 12 %]" => "12 = 12" ### CONFIG ########################################## engine_option (compile_perl) ok 2155 - Line 1644 "[% CONFIG ANYCASE => 1 %][% get 234 %]" => "234" ok 2156 - Line 1645 "[% CONFIG anycase => 1 %][% get 234 %]" => "234" ok 2157 - Line 1646 "[% CONFIG PRE_CHOMP => '-' %] # [% 234 %]" => "234" ok 2158 - Line 1647 "[% CONFIG POST_CHOMP => '-' %][% 234 %] # " => "234" ok 2159 - Line 1648 "[% CONFIG INTERPOLATE => 1 %]${ 234 }" => "234" ok 2160 - Line 1649 "[% CONFIG V1DOLLAR => 1 %][% a = 234 %][% $a %]" => "234" ok 2161 - Line 1650 "[% CONFIG V2PIPE => 1 %][% BLOCK a %]b is [% b %][% END %][% PROCESS a b => 234 | repeat(2) %]" => "b is 234b is 234" ok 2162 - Line 1651 "[% CONFIG V2EQUALS => 1 %][% ('7' == '7.0') || 0 %]" => "0" ok 2163 - Line 1652 "[% CONFIG V2EQUALS => 0 %][% ('7' == '7.0') || 0 %]" => "1" ok 2164 - Line 1654 "[% CONFIG BOGUS => 2 %]bar" => "" ok 2165 - Line 1656 "[% CONFIG ANYCASE %]|[% CONFIG ANYCASE => 1 %][% CONFIG ANYCASE %]" => "CONFIG ANYCASE = undef|CONFIG ANYCASE = 1" ok 2166 - Line 1657 "[% CONFIG ANYCASE %]|[% CONFIG ANYCASE => 1 %][% CONFIG ANYCASE %]" => "CONFIG ANYCASE = undef|CONFIG ANYCASE = 1" ok 2167 - Line 1659 "[% "[% GET 1+2+3 %]" | eval %] = [% get 6 %]" => "" ok 2168 - Line 1660 "[% CONFIG ANYCASE => 1 %][% get 6 %]" => "6" ok 2169 - Line 1661 "[% CONFIG ANYCASE => 1 %][% "[% get 1+2+3 %]" | eval %] = [% get 6 %]" => "6 = 6" ok 2170 - Line 1662 "[% "[% CONFIG ANYCASE => 1 %][% get 1+2+3 %]" | eval %] = [% get 6 %]" => "" ok 2171 - Line 1663 "[% "[% CONFIG ANYCASE => 1 %][% get 1+2+3 %]" | eval %] = [% GET 6 %]" => "6 = 6" ok 2172 - Line 1664 "[% CONFIG SYNTAX => 'hte' %][% ""|eval %] = [% 6 %]" => "6 = 6" ok 2173 - Line 1665 "[% "[% get 1+2+3 %]" | eval(ANYCASE => 1) %] = [% GET 6 %]" => "6 = 6" ok 2174 - Line 1667 "[% CONFIG DUMP %]|[% CONFIG DUMP => 0 %][% DUMP %]bar" => "CONFIG DUMP = undef|bar" ok 2175 - Line 1668 "[% CONFIG DUMP => {Useqq=>1, header=>0, html=>0} %][% DUMP 'foo' %]" => "'foo' = "foo"; # " ok 2176 - Line 1669 "[% CONFIG VMETHOD_FUNCTIONS => 0 %][% sprintf('%d %d', 7, 8) %] d" => " d" ok 2177 - Line 1670 "[% TRY; foo; CONFIG STRICT => 1; bar; CATCH; error; END %]" => "var.undef error - undefined variable: bar in input text" ok 2178 - Line 1671 "[% TRY; foo; CONFIG STRICT => 1; CONFIG STRICT => 0; bar; CATCH; error; END %]" => "config.strict error - Cannot disable STRICT once it is enabled" ok 2179 - Line 1672 "[% BLOCK foo; CONFIG STRICT => 1; baz; END; TRY; bam; PROCESS foo; bar; CATCH; error.type; END; bing %] - ok" => "var.undef - ok" ok 2180 - Line 1674 "[% CONFIG AUTO_FILTER => "html"; foo %]" => "&" ### DONE ############################################ engine_option (compile_perl) ### GET ############################################# engine_option (stream) ok 2181 - Line 156 "[% foo %]" => "" ok 2182 - Line 157 "[% foo %]" => "7" ok 2183 - Line 158 "[% foo %]" => "7" ok 2184 - Line 159 "[% foo %]" => "7" ok 2185 - Line 160 "[% foo %]" => "Stash" ok 2186 - Line 161 "[% foo %]" => "V" ok 2187 - Line 162 "[% bar %]" => "" ok 2188 - Line 163 "[% foo %]" => "Stash" ok 2189 - Line 164 "[% bar %]" => "" ok 2190 - Line 165 "[% foo %]" => "Stash" ok 2191 - Line 166 "[% foo %]" => "Stash" ok 2192 - Line 167 "[% foo %][% foo %][% foo %]" => "777" ok 2193 - Line 168 "[% foo() %]" => "7" ok 2194 - Line 169 "[% foo.bar %]" => "" ok 2195 - Line 170 "[% foo.bar %]" => "" ok 2196 - Line 171 "[% foo.bar %]" => "7" ok 2197 - Line 172 "[% foo().bar %]" => "7" ok 2198 - Line 173 "[% foo.0 %]" => "7" ok 2199 - Line 174 "[% foo.10 %]" => "" ok 2200 - Line 175 "[% foo %]" => "7" ok 2201 - Line 176 "[% foo(7) %]" => "7" ok 2202 - Line 177 "[% foo.length %]" => "1" ok 2203 - Line 178 "[% foo.0 %]" => "7" ok 2204 - Line 179 "[% foo(bar) %]" => "7" ok 2205 - Line 180 "[% foo(bar.baz) %]" => "7" ok 2206 - Line 181 "[% foo.seven %]" => "7" ok 2207 - Line 182 "[% foo.seven() %]" => "7" ok 2208 - Line 183 "[% foo.seven.length %]" => "1" ok 2209 - Line 184 "[% foo.echo(7) %]" => "7" ok 2210 - Line 185 "[% foo.many.0 %]" => "1" ok 2211 - Line 186 "[% foo.many.10 %]" => "" ok 2212 - Line 187 "[% foo.nomethod %]" => "" ok 2213 - Line 188 "[% foo.nomethod.0 %]" => "" ok 2214 - Line 190 "[% GET foo %]" => "" ok 2215 - Line 191 "[% GET foo %]" => "7" ok 2216 - Line 192 "[% GET foo.bar %]" => "" ok 2217 - Line 193 "[% GET foo.bar %]" => "" ok 2218 - Line 194 "[% GET foo.bar %]" => "7" ok 2219 - Line 195 "[% GET foo.0 %]" => "7" ok 2220 - Line 196 "[% GET foo %]" => "7" ok 2221 - Line 197 "[% GET foo(7) %]" => "7" ok 2222 - Line 199 "[% $name %]" => "" ok 2223 - Line 200 "[% $name %]" => "7" ok 2224 - Line 201 "[% $name.bar %]" => "" ok 2225 - Line 202 "[% $name.bar %]" => "" ok 2226 - Line 203 "[% $name.bar %]" => "7" ok 2227 - Line 204 "[% $name().bar %]" => "7" ok 2228 - Line 205 "[% $name.0 %]" => "7" ok 2229 - Line 206 "[% $name %]" => "7" ok 2230 - Line 207 "[% $name(7) %]" => "7" ok 2231 - Line 209 "[% GET $name %]" => "" ok 2232 - Line 210 "[% GET $name %]" => "7" ok 2233 - Line 211 "[% GET $name.bar %]" => "" ok 2234 - Line 212 "[% GET $name.bar %]" => "" ok 2235 - Line 213 "[% GET $name.bar %]" => "7" ok 2236 - Line 214 "[% GET $name.0 %]" => "7" ok 2237 - Line 215 "[% GET $name %]" => "7" ok 2238 - Line 216 "[% GET $name(7) %]" => "7" ok 2239 - Line 218 "[% $name %]" => "" ok 2240 - Line 219 "[% GET $name %]" => "" ok 2241 - Line 221 "[% ${name} %]" => "" ok 2242 - Line 222 "[% ${name} %]" => "7" ok 2243 - Line 223 "[% ${name}.bar %]" => "" ok 2244 - Line 224 "[% ${name}.bar %]" => "" ok 2245 - Line 225 "[% ${name}.bar %]" => "7" ok 2246 - Line 226 "[% ${name}().bar %]" => "7" ok 2247 - Line 227 "[% ${name}.0 %]" => "7" ok 2248 - Line 228 "[% ${name} %]" => "7" ok 2249 - Line 229 "[% ${name}(7) %]" => "7" ok 2250 - Line 231 "[% GET ${name} %]" => "" ok 2251 - Line 232 "[% GET ${name} %]" => "7" ok 2252 - Line 233 "[% GET ${name}.bar %]" => "" ok 2253 - Line 234 "[% GET ${name}.bar %]" => "" ok 2254 - Line 235 "[% GET ${name}.bar %]" => "7" ok 2255 - Line 236 "[% GET ${name}.0 %]" => "7" ok 2256 - Line 237 "[% GET ${name} %]" => "7" ok 2257 - Line 238 "[% GET ${name}(7) %]" => "7" ok 2258 - Line 240 "[% ${name} %]" => "" ok 2259 - Line 241 "[% GET ${name} %]" => "" ok 2260 - Line 242 "[% GET ${'foo'} %]" => "bar" ok 2261 - Line 244 "[% foo.$name %]" => "" ok 2262 - Line 245 "[% foo.$name %]" => "7" ok 2263 - Line 246 "[% foo.$name.baz %]" => "" ok 2264 - Line 248 "[% "hi" %]" => "hi" ok 2265 - Line 249 "[% "hi %]" => "" ok 2266 - Line 250 "[% 'hi' %]" => "hi" ok 2267 - Line 251 "[% 'hi %]" => "" ok 2268 - Line 252 "[% "$foo" %]" => "7" ok 2269 - Line 253 "[% "hi $foo" %]" => "hi 7" ok 2270 - Line 254 "[% "hi ${foo}" %]" => "hi 7" ok 2271 - Line 255 "[% 'hi $foo' %]" => "hi $foo" ok 2272 - Line 256 "[% 'hi ${foo}' %]" => "hi ${foo}" ok 2273 - Line 257 "[% 7 %]" => "7" ok 2274 - Line 258 "[% -7 %]" => "-7" ok 2275 - Line 260 "[% "hi ${foo.seven}" %]" => "hi 7" ok 2276 - Line 261 "[% "hi ${foo.echo(7)}" %]" => "hi 7" ok 2277 - Line 263 "[% _foo %]2" => "2" ok 2278 - Line 264 "[% $bar %]2" => "2" ok 2279 - Line 265 "[% __foo %]2" => "2" ok 2280 - Line 267 "[% qw/Foo Bar Baz/.0 %]" => "Foo" ok 2281 - Line 268 "[% [0..10].-1 %]" => "10" ok 2282 - Line 269 "[% [0..10].${ 2.3 } %]" => "2" ok 2283 - Line 271 "[% (1 + 2)() %]" => "" ok 2284 - Line 272 "[% (1 + 2) %]" => "3" ok 2285 - Line 273 "[% (a) %]" => "2" ok 2286 - Line 274 "[% ('foo') %]" => "foo" ok 2287 - Line 275 "[% (a(2)) %]" => "2" ok 2288 - Line 278 "[% JS 3 %]" => "3" ok 2289 - Line 279 "[% JS 3 %]" => "43" ok 2290 - Line 280 "[% JS; 3; END %]" => "" ### SET ############################################# engine_option (stream) ok 2291 - Line 285 "[% SET foo bar %][% foo %]" => "" ok 2292 - Line 286 "[% SET foo = 1 %][% foo %]" => "1" ok 2293 - Line 287 "[% SET foo = 1 bar = 2 %][% foo %][% bar %]" => "12" ok 2294 - Line 288 "[% SET foo bar = 1 %][% foo %]" => "" ok 2295 - Line 289 "[% SET foo = 1 ; bar = 1 %][% foo %]" => "1" ok 2296 - Line 290 "[% SET foo = 1 %][% SET foo %][% foo %]" => "" ok 2297 - Line 292 "[% SET foo = [] %][% foo.0 %]" => "" ok 2298 - Line 293 "[% SET foo = [1, 2, 3] %][% foo.1 %]" => "2" ok 2299 - Line 294 "[% SET foo = {} %][% foo.0 %]" => "" ok 2300 - Line 295 "[% SET foo = {1 => 2} %][% foo.1 %]" => "2" ok 2301 - Line 296 "[% SET foo = {'1' => 2} %][% foo.1 %]" => "2" ok 2302 - Line 298 "[% SET name = 1 %][% SET foo = name %][% foo %]" => "1" ok 2303 - Line 299 "[% SET name = 1 %][% SET foo = $name %][% foo %]" => "" ok 2304 - Line 300 "[% SET name = 1 %][% SET foo = ${name} %][% foo %]" => "" ok 2305 - Line 301 "[% SET name = 1 %][% SET foo = "$name" %][% foo %]" => "1" ok 2306 - Line 302 "[% SET name = 1 foo = name %][% foo %]" => "1" ok 2307 - Line 303 "[% SET name = 1 %][% SET foo = {$name => 2} %][% foo.1 %]" => "2" ok 2308 - Line 304 "[% SET name = 1 %][% SET foo = {"$name" => 2} %][% foo.1 %]" => "2" ok 2309 - Line 305 "[% SET name = 1 %][% SET foo = {${name} => 2} %][% foo.1 %]" => "2" ok 2310 - Line 307 "[% SET name = 7 %][% SET foo = {'2' => name} %][% foo.2 %]" => "7" ok 2311 - Line 308 "[% SET name = 7 %][% SET foo = {'2' => "$name"} %][% foo.2 %]" => "7" ok 2312 - Line 310 "[% SET name = 7 %][% SET foo = [1, name, 3] %][% foo.1 %]" => "7" ok 2313 - Line 311 "[% SET name = 7 %][% SET foo = [1, "$name", 3] %][% foo.1 %]" => "7" ok 2314 - Line 313 "[% SET foo = { bar => { baz => [0, 7, 2] } } %][% foo.bar.baz.1 %]" => "7" ok 2315 - Line 315 "[% SET foo.bar = 1 %][% foo.bar %]" => "1" ok 2316 - Line 316 "[% SET foo.bar.baz.bing = 1 %][% foo.bar.baz.bing %]" => "1" ok 2317 - Line 317 "[% SET foo.bar.2 = 1 %][% foo.bar.2 %] [% foo.bar.size %]" => "1 1" ok 2318 - Line 318 "[% SET foo.bar = [] %][% SET foo.bar.2 = 1 %][% foo.bar.2 %] [% foo.bar.size %]" => "1 3" ok 2319 - Line 320 "[% SET name = 'two' %][% SET $name = 3 %][% two %]" => "3" ok 2320 - Line 321 "[% SET name = 'two' %][% SET ${name} = 3 %][% two %]" => "3" ok 2321 - Line 322 "[% SET name = 2 %][% SET foo.$name = 3 %][% foo.2 %]" => "3" ok 2322 - Line 323 "[% SET name = 2 %][% SET foo.$name = 3 %][% foo.$name %]" => "3" ok 2323 - Line 324 "[% SET name = 2 %][% SET foo.${name} = 3 %][% foo.2 %]" => "3" ok 2324 - Line 325 "[% SET name = 2 %][% SET foo.${name} = 3 %][% foo.2 %]" => "3" ok 2325 - Line 326 "[% SET name = 'two' %][% SET $name.foo = 3 %][% two.foo %]" => "3" ok 2326 - Line 327 "[% SET name = 'two' %][% SET ${name}.foo = 3 %][% two.foo %]" => "3" ok 2327 - Line 328 "[% SET name = 'two' %][% SET foo.$name.foo = 3 %][% foo.two.foo %]" => "3" ok 2328 - Line 329 "[% SET name = 'two' %][% SET foo.${name}.foo = 3 %][% foo.two.foo %]" => "3" ok 2329 - Line 331 "[% SET foo = [1..10] %][% foo.6 %]" => "7" ok 2330 - Line 332 "[% SET foo = [10..1] %][% foo.6 %]" => "" ok 2331 - Line 333 "[% SET foo = [-10..-1] %][% foo.6 %]" => "-4" ok 2332 - Line 334 "[% SET foo = [1..10, 21..30] %][% foo.12 %]" => "23" ok 2333 - Line 335 "[% SET foo = [..100] bar = 7 %][% bar %][% foo.0 %]" => "" ok 2334 - Line 336 "[% SET foo = [100..] bar = 7 %][% bar %][% foo.0 %]" => "" ok 2335 - Line 337 "[% SET foo = ['a'..'z'] %][% foo.6 %]" => "g" ok 2336 - Line 338 "[% SET foo = ['z'..'a'] %][% foo.6 %]" => "" ok 2337 - Line 339 "[% SET foo = ['a'..'z'].reverse %][% foo.6 %]" => "t" ok 2338 - Line 341 "[% foo = 1 %][% foo %]" => "1" ok 2339 - Line 342 "[% foo = 1 ; bar = 2 %][% foo %][% bar %]" => "12" ok 2340 - Line 343 "[% foo.bar = 2 %][% foo.bar %]" => "2" ok 2341 - Line 345 "[% a = "a" %]|[% (b = a) %]|[% a %]|[% b %]" => "|a|a|a" ok 2342 - Line 346 "[% a = "a" %][% (c = (b = a)) %][% a %][% b %][% c %]" => "aaaa" ok 2343 - Line 348 "[% a = qw{Foo Bar Baz} ; a.2 %]" => "Baz" ok 2344 - Line 350 "[% _foo = 1 %][% _foo %]2" => "2" ok 2345 - Line 351 "[% foo._bar %]2" => "2" ### multiple statements in same tag ################# engine_option (stream) ok 2346 - Line 356 "[% foo; %]" => "1" ok 2347 - Line 357 "[% GET foo; %]" => "1" ok 2348 - Line 358 "[% GET foo; GET foo %]" => "11" ok 2349 - Line 359 "[% GET foo GET foo %]" => "11" ok 2350 - Line 360 "[% GET foo GET foo %]" => "" ok 2351 - Line 362 "[% foo = 1 bar = 2 %][% foo %][% bar %]" => "12" ok 2352 - Line 363 "[% foo = 1 bar = 2 %][% foo = 3 bar %][% foo %][% bar %]" => "232" ok 2353 - Line 364 "[% a = 1 a = a + 2 a %]" => "3" ok 2354 - Line 366 "[% foo = 1 bar = 2 %][% foo %][% bar %]" => "" ok 2355 - Line 367 "[% foo = 1 bar = 2 %][% foo = 3 bar %][% foo %][% bar %]" => "" ok 2356 - Line 368 "[% a = 1 a = a + 2 a %]" => "" ### CALL / DEFAULT ################################## engine_option (stream) ok 2357 - Line 374 "[% DEFAULT foo = 7 %][% foo %]" => "7" ok 2358 - Line 375 "[% SET foo = 5 %][% DEFAULT foo = 7 %][% foo %]" => "5" ok 2359 - Line 376 "[% DEFAULT foo.bar.baz.bing = 6 %][% foo.bar.baz.bing %]" => "6" ok 2360 - Line 379 "[% foo %]" => "hi" ok 2361 - Line 380 "[% GET foo %]" => "hi" ok 2362 - Line 381 "[% CALL foo %]" => "" ok 2363 - CALL method actually called var ### scalar vmethods ################################# engine_option (stream) ok 2364 - Line 388 "[% n.0 %]" => "7" ok 2365 - Line 389 "[% n.abs %]" => "7" ok 2366 - Line 390 "[% n.abs %]" => "7" ok 2367 - Line 391 "[% n.atan2.substr(0, 6) %]" => "1.5707" ok 2368 - Line 392 "[% (4 * n.atan2(1)).substr(0, 7) %]" => "3.14159" ok 2369 - Line 393 "[% n.chunk(3).join %]" => "abc def g" ok 2370 - Line 394 "[% n.chunk(-3).join %]" => "a bcd efg" ok 2371 - Line 395 "[% n|collapse %]" => "a b" ok 2372 - Line 396 "[% n.cos.substr(0,5) %]" => "1" ok 2373 - Line 397 "[% n.cos.substr(0,5) %]" => "0.707" ok 2374 - Line 398 "[% n.defined %]" => "1" ok 2375 - Line 399 "[% n.defined %]" => "" ok 2376 - Line 400 "[% n.defined %]" => "1" ok 2377 - Line 401 "[% n.dquote %]" => "(\n|\\|\")" ok 2378 - Line 402 "[% n.exp.substr(0,5) %]" => "2.718" ok 2379 - Line 403 "[% n.exp.log.substr(0,5) %]" => "8" ok 2380 - Line 404 "[% n.fmt %]" => "7" ok 2381 - Line 405 "[% n.fmt('%02d') %]" => "07" ok 2382 - Line 406 "[% n.fmt('%0*d', 3) %]" => "007" ok 2383 - Line 407 "[% n.fmt('(%s)') %]" => "(a # b)" ok 2384 - Line 408 "[% n|format('%02d') %]" => "07" ok 2385 - Line 409 "[% n|format('%0*d', 3) %]" => "007" ok 2386 - Line 410 "[% n|format('(%s)') %]" => "(a) # (b)" ok 2387 - Line 411 "[% n.hash.items.1 %]" => "b" ok 2388 - Line 412 "[% n.hex %]" => "255" ok 2389 - Line 413 "[% n|html %]" => "&<>"'" ok 2390 - Line 414 "[% n|html_entity %]" => "&" ok 2391 - Line 415 "[% n|xml %]" => "&<>"'" ok 2392 - Line 416 "[% n|indent %]" => " a # b" ok 2393 - Line 417 "[% n|indent(2) %]" => " a # b" ok 2394 - Line 418 "[% n|indent('wow ') %]" => "wow a # wow b" ok 2395 - Line 419 "[% n.int %]" => "123" ok 2396 - Line 420 "[% n.int %]" => "123" ok 2397 - Line 421 "[% n.int %]" => "0" ok 2398 - Line 422 "[% n.item %]" => "7" ok 2399 - Line 423 "[% n.lc %]" => "abc" ok 2400 - Line 424 "[% n|lcfirst %]" => "fOO" ok 2401 - Line 425 "[% n.length %]" => "3" ok 2402 - Line 426 "[% n.list.0 %]" => "abc" ok 2403 - Line 427 "[% n.log.substr(0,5) %]" => "4.605" ok 2404 - Line 428 "[% n|lower %]" => "abc" ok 2405 - Line 429 "[% n.match('foo').join %]" => "" ok 2406 - Line 430 "[% n.match('foo').join %]" => "1" ok 2407 - Line 431 "[% n.match('foo',1).join %]" => "foo" ok 2408 - Line 432 "[% n.match('(foo)').join %]" => "foo" ok 2409 - Line 433 "[% n.match('(foo)').join %]" => "foo" ok 2410 - Line 434 "[% n.match('(foo)',1).join %]" => "foo foo" ok 2411 - Line 435 "[% n.null %]" => "" ok 2412 - Line 436 "[% n.oct %]" => "255" ok 2413 - Line 437 "[% n.rand %]" => "1.5264831683424" ok 2414 - Line 438 "[% n.rand %]" => "0.335701955774084" ok 2415 - Line 439 "[% n.remove('bc') %]" => "a" ok 2416 - Line 440 "[% n.remove('bc') %]" => "aa" ok 2417 - Line 441 "[% n.repeat %]" => "1" ok 2418 - Line 442 "[% n.repeat(0) %]" => "" ok 2419 - Line 443 "[% n.repeat(1) %]" => "1" ok 2420 - Line 444 "[% n.repeat(2) %]" => "11" ok 2421 - Line 445 "[% n.repeat(2,'|') %]" => "1|1" ok 2422 - Line 446 "[% n.replace('foo', 'bar') %]" => "barbar" ok 2423 - Line 447 "[% n.replace('(foo)', 'bar$1') %]" => "barfoobarfoo" ok 2424 - Line 448 "[% n.replace('foo', 'bar', 0) %]" => "barfoo" ok 2425 - Line 449 "[% n.search('foo') %]" => "" ok 2426 - Line 450 "[% n.search('foo') %]" => "1" ok 2427 - Line 451 "[% n.sin.substr(0,5) %]" => "0" ok 2428 - Line 452 "[% n.sin.substr(0,5) %]" => "1" ok 2429 - Line 453 "[% n.size %]" => "1" ok 2430 - Line 454 "[% n.split.join('|') %]" => "abc" ok 2431 - Line 455 "[% n.split.join('|') %]" => "a|b|c" ok 2432 - Line 456 "[% n.split.join('|') %]" => "a|b|c" ok 2433 - Line 457 "[% n.split(u,2).join('|') %]" => "a|b c" ok 2434 - Line 459 "[% n.split('/').join('|') %]" => "a|b|c" ok 2435 - Line 460 "[% n.split('/', 2).join('|') %]" => "a|b/c" ok 2436 - Line 461 "[% n.sprintf(7) %]" => "7" ok 2437 - Line 462 "[% n.sprintf(3, 7, 12) %]" => "007 12" ok 2438 - Line 463 "[% n.sqrt %]" => "3" ok 2439 - Line 464 "[% n.squote %]" => "( # |\\|\')" ok 2440 - Line 465 "[% n.srand; 12 %]" => "12" ok 2441 - Line 466 "[% n.stderr %]" => "" ok 2442 - Line 467 "[% n|trim %]" => "a b" ok 2443 - Line 468 "[% n.uc %]" => "FOO" ok 2444 - Line 469 "[% n|ucfirst %]" => "Foo" ok 2445 - Line 470 "[% n|upper %]" => "FOO" ok 2446 - Line 471 "[% n|uri %]" => "a%20b" ok 2447 - Line 473 "[% n.fmt('%c') %]" => "B" ok 2448 - Line 474 "[% n.fmt('%3X') %]" => " C" ok 2449 - Line 475 "[% n.fmt('%-3X') %]" => "C " ok 2450 - Line 476 "[% n.fmt('%03X') %]" => "00C" ok 2451 - Line 477 "[% n.fmt('%03X') %]" => "00C" ok 2452 - Line 478 "[% n.fmt('%\#03X') %]" => "0XC" ok 2453 - Line 479 "[% n.fmt('%\#07X') %]" => "0X0000C" ok 2454 - Line 481 "[% n.fmt('%o') %]" => "10" ok 2455 - Line 482 "[% n.fmt('%\#o') %]" => "010" ok 2456 - Line 483 "[% n.fmt('%\#o') %]" => "0" ok 2457 - Line 485 "[% n.fmt('%02d') %]" => "07" ok 2458 - Line 486 "[% n.fmt('%04.2d') %]" => " 07" ok 2459 - Line 487 "[% n.fmt('%+04.2d') %]" => " +07" ok 2460 - Line 488 "[% n.fmt('% 04.2d') %]" => " 07" ok 2461 - Line 489 "[% n.fmt('% +04.2d') %]" => " +07" ok 2462 - Line 490 "[% n.fmt('%02f') %]" => "7.000000" ok 2463 - Line 491 "[% n.fmt('%04.2f') %]" => "7.00" ok 2464 - Line 492 "[% n.fmt('%05.2f') %]" => "07.00" ok 2465 - Line 493 "[% n.fmt('% 5.2f') %]" => " 7.00" ok 2466 - Line 494 "[% n.fmt('%+04.2f') %]" => "+7.00" ok 2467 - Line 495 "[% n.fmt('% 04.2f') %]" => " 7.00" ok 2468 - Line 496 "[% n.fmt('% +6.2f') %]" => " +7.00" ok 2469 - Line 497 "[% n.fmt('%0+6.2f') %]" => "+07.00" ok 2470 - Line 498 "[% n.fmt('%.5g') %]" => "12345" ok 2471 - Line 499 "[% n.fmt('%.5g') %]" => "1.2346e+06" ### list vmethods ################################### engine_option (stream) ok 2472 - Line 504 "[% a.defined %]" => "1" ok 2473 - Line 505 "[% a.defined(1) %]" => "1" ok 2474 - Line 506 "[% a.defined(3) %]" => "" ok 2475 - Line 507 "[% a.first %]" => "2" ok 2476 - Line 508 "[% a.first(3).join %]" => "2 3 4" ok 2477 - Line 509 "[% a.fmt %]" => "2 3" ok 2478 - Line 510 "[% a.fmt('%02d') %]" => "02 03" ok 2479 - Line 511 "[% a.fmt('%02d',' ') %]" => "02 03" ok 2480 - Line 512 "[% a.fmt('%02d','|') %]" => "02|03" ok 2481 - Line 513 "[% a.fmt('%0*d','|', 3) %]" => "002|003" ok 2482 - Line 514 "[% a.grep.join %]" => "2 3" ok 2483 - Line 515 "[% a.grep(2).join %]" => "2" ok 2484 - Line 516 "[% a.grep(->(n){n % 2}).join %]" => "3 5 7" ok 2485 - Line 517 "[% a.hash.items.join %]" => "2 3" ok 2486 - Line 518 "[% a.hash(5).items.sort.join %]" => "2 3 5 6" ok 2487 - Line 519 "[% a.import(5) %]|[% a.join %]" => "|2 3" ok 2488 - Line 521 "[% a.import([5]) %]|[% a.join %]" => "|2 3 5" ok 2489 - Line 523 "[% a.item %]" => "2" ok 2490 - Line 524 "[% a.item(1) %]" => "3" ok 2491 - Line 525 "[% a.join %]" => "2 3" ok 2492 - Line 526 "[% a.join('|') %]" => "2|3" ok 2493 - Line 527 "[% a.last %]" => "10" ok 2494 - Line 528 "[% a.last(3).join %]" => "8 9 10" ok 2495 - Line 529 "[% a.list.join %]" => "2 3" ok 2496 - Line 530 "[% a.map(->(n){ n.repeat(3) }).join %]" => "222 333" ok 2497 - Line 531 "[% a.max %]" => "1" ok 2498 - Line 532 "[% a.merge(5).join %]" => "2 3" ok 2499 - Line 533 "[% a.merge([5]).join %]" => "2 3 5" ok 2500 - Line 534 "[% a.merge([5]).null %][% a.join %]" => "2 3" ok 2501 - Line 535 "[% a.nsort.join %]" => "1 2 3" ok 2502 - Line 536 "[% a.nsort('b').0.b %]" => "7" ok 2503 - Line 537 "[% a.pop %][% a.join %]" => "32" ok 2504 - Line 538 "[% a.push(3) %][% a.join %]" => "2 3 3" ok 2505 - Line 539 "[% a.pick %]" => "2" ok 2506 - Line 540 "[% a.pick(5).join('') %]" => "23223" ok 2507 - Line 541 "[% a.reverse.join %]" => "3 2" ok 2508 - Line 542 "[% a.shift %][% a.join %]" => "23" ok 2509 - Line 543 "[% a.size %]" => "2" ok 2510 - Line 544 "[% a.slice.join %]" => "2 3 4 5" ok 2511 - Line 545 "[% a.slice(2).join %]" => "4 5" ok 2512 - Line 546 "[% a.slice(0,2).join %]" => "2 3 4" ok 2513 - Line 547 "[% a.sort.join %]" => "1 2 3" ok 2514 - Line 548 "[% a.sort('b').0.b %]" => "wee" ok 2515 - Line 549 "[% c.sort(->(a,b){ a.k cmp b.k }).map(->{this.k}).join %]" => "a wee wow" ok 2516 - Line 550 "[% a.splice.join %]|[% a.join %]" => "2 3 4 5|" ok 2517 - Line 551 "[% a.splice(2).join %]|[% a.join %]" => "4 5|2 3" ok 2518 - Line 552 "[% a.splice(0,2).join %]|[% a.join %]" => "2 3|4 5" ok 2519 - Line 553 "[% a.splice(0,2,'hrm').join %]|[% a.join %]" => "2 3|hrm 4 5" ok 2520 - Line 554 "[% a.unique.join %]" => "2 3" ok 2521 - Line 555 "[% a.unshift(3) %][% a.join %]" => "3 2 3" ### hash vmethods ################################### engine_option (stream) ok 2522 - Line 560 "[% h.defined %]" => "1" ok 2523 - Line 561 "[% h.defined('a') %]" => "1" ok 2524 - Line 562 "[% h.defined('b') %]" => "" ok 2525 - Line 563 "[% h.defined('a') %]" => "" ok 2526 - Line 564 "[% h.delete('a') %]|[% h.keys.0 %]" => "|b" ok 2527 - Line 565 "[% h.delete('a', 'b').join %]|[% h.keys.0 %]" => "|" ok 2528 - Line 566 "[% h.delete('a', 'c').join %]|[% h.keys.0 %]" => "|b" ok 2529 - Line 567 "[% h.each.sort.join %]" => "1 2 a b" ok 2530 - Line 568 "[% h.exists('a') %]" => "1" ok 2531 - Line 569 "[% h.exists('b') %]" => "" ok 2532 - Line 570 "[% h.exists('a') %]" => "1" ok 2533 - Line 571 "[% h.fmt %]" => "b B # c C" ok 2534 - Line 572 "[% h.fmt('%s => %s') %]" => "b => B # c => C" ok 2535 - Line 573 "[% h.fmt('%s => %s', '|') %]" => "b => B|c => C" ok 2536 - Line 574 "[% h.fmt('%*s=>%s', '|', 3) %]" => " b=>B| c=>C" ok 2537 - Line 575 "[% h.fmt('%*s=>%*s', '|', 3, 4) %]" => " b=> B| c=> C" ok 2538 - Line 576 "[% h.hash.fmt %]" => "b B # c C" ok 2539 - Line 577 "[% h.import('a') %]|[% h.items.sort.join %]" => "|b B c C" ok 2540 - Line 578 "[% h.import({'b' => 'boo'}) %]|[% h.items.sort.join %]" => "|b boo c C" ok 2541 - Line 579 "[% h.item('a') %]" => "A" ok 2542 - Line 580 "[% h.item('_a') %]" => "" ok 2543 - Line 581 "[% h.items.sort.join %]" => "1 2 a b" ok 2544 - Line 582 "[% h.keys.sort.join %]" => "a b" ok 2545 - Line 583 "[% h.list('each').sort.join %]" => "1 2 a b" ok 2546 - Line 584 "[% h.list('keys').sort.join %]" => "a b" ok 2547 - Line 585 "[% h.list('pairs').0.items.sort.join %]" => "1 a key value" ok 2548 - Line 586 "[% h.list('values').sort.join %]" => "1 2" ok 2549 - Line 587 "[% h.null %]" => "" ok 2550 - Line 588 "[% h.nsort.join %]" => "b a" ok 2551 - Line 589 "[% h.pairs.0.items.sort.join %]" => "1 a key value" ok 2552 - Line 590 "[% h.size %]" => "2" ok 2553 - Line 591 "[% h.sort.join %]" => "b a" ok 2554 - Line 592 "[% h.values.sort.join %]" => "1 2" ### vmethods as functions ########################### engine_option (stream) ok 2555 - Line 597 "[% sprintf('%d %d', 7, 8) %] d" => "7 8 d" ok 2556 - Line 598 "[% sprintf('%d %d', 7, 8) %] d" => "7 8 d" ok 2557 - Line 599 "[% sprintf('%d %d', 7, 8) %] d" => " d" ok 2558 - Line 600 "[% int(2.234) %]" => "2" ok 2559 - Line 602 "[% int(2.234) ; int = 44; int(2.234) ; SET int; int(2.234) %]" => "2442" ### more virtual methods / filters ################## engine_option (stream) ok 2560 - Line 607 "[% [0 .. 10].reverse.1 %]" => "9" ok 2561 - Line 608 "[% {a => 'A'}.a %]" => "A" ok 2562 - Line 609 "[% 'This is a string'.length %]" => "16" ok 2563 - Line 610 "[% 123.length %]" => "3" ok 2564 - Line 611 "[% 123.2.length %]" => "5" ok 2565 - Line 612 "[% -123.2.length %]" => "-5" ok 2566 - Line 613 "[% (-123.2).length %]" => "6" ok 2567 - Line 614 "[% a = 23; a.0 %]" => "23" ok 2568 - Line 615 "[% 1.rand %]" => "0.15075242533052" ok 2569 - Line 617 "[% n.size %]" => "SIZE" ok 2570 - Line 618 "[% n|size %]" => "2" ok 2571 - Line 620 "[% "1" | indent(2) %]" => " 1" ok 2572 - Line 622 "[% n FILTER size %]" => "1" ok 2573 - Line 624 "[% n FILTER repeat %]" => "1" ok 2574 - Line 625 "[% n FILTER repeat(0) %]" => "" ok 2575 - Line 626 "[% n FILTER repeat(1) %]" => "1" ok 2576 - Line 627 "[% n FILTER repeat(2) %]" => "11" ok 2577 - Line 628 "[% n FILTER repeat(2,'|') %]" => "1|1" ok 2578 - Line 630 "[% n FILTER echo = repeat(2) %][% n FILTER echo %]" => "1111" ok 2579 - Line 631 "[% n FILTER echo = repeat(2) %][% n | echo %]" => "1111" ok 2580 - Line 632 "[% n FILTER echo = repeat(2) %][% n|echo.length %]" => "112" ok 2581 - Line 633 "[% n FILTER echo = repeat(2) %][% n FILTER $foo %]" => "1111" ok 2582 - Line 634 "[% n FILTER echo = repeat(2) %][% n | $foo %]" => "1111" ok 2583 - Line 635 "[% n FILTER echo = repeat(2) %][% n|$foo.length %]" => "112" ok 2584 - Line 637 "[% "hi" FILTER $foo %]" => "hihi" ok 2585 - Line 638 "[% FILTER $foo %]hi[% END %]" => "hihi" ok 2586 - Line 639 "[% "hi" FILTER foo %]" => "hihi" ok 2587 - Line 640 "[% "hi" FILTER foo %]" => "hihi" ok 2588 - Line 641 "[% "hi" FILTER foo(2) %]" => "hihi" ok 2589 - Line 643 "[% ["0".."9"].pick %]" => "9" ok 2590 - Line 645 "[% ' ' | uri %]" => "%20" ok 2591 - Line 647 "[% "one".fmt %]" => "one" ok 2592 - Line 648 "[% 2.fmt("%02d") %]" => "02" ok 2593 - Line 650 "[% [1..3].fmt %]" => "1 2 3" ok 2594 - Line 651 "[% [1..3].fmt("%02d") %]" => "01 02 03" ok 2595 - Line 652 "[% [1..3].fmt("%s", ", ") %]" => "1, 2, 3" ok 2596 - Line 654 "[% {a => "B", c => "D"}.fmt %]" => "a B # c D" ok 2597 - Line 655 "[% {a => "B", c => "D"}.fmt("%s:%s") %]" => "a:B # c:D" ok 2598 - Line 656 "[% {a => "B", c => "D"}.fmt("%s:%s", "; ") %]" => "a:B; c:D" ok 2599 - Line 658 "[% 1|format("%s") %]" => "1" ok 2600 - Line 659 "[% 1|format("%*s", 6) %]" => " 1" ok 2601 - Line 660 "[% 1|format("%-*s", 6) %]" => "1 " ok 2602 - Line 662 "[% 1.fmt("%-*s", 6) %]" => "1 " ok 2603 - Line 663 "[% [1,2].fmt("%-*s", "|", 6) %]" => "1 |2 " ok 2604 - Line 664 "[% {1=>2,3=>4}.fmt("%*s:%*s", "|", 3, 3) %]" => " 1: 2| 3: 4" ok 2605 - Line 666 "[% foo %]" => "&" ok 2606 - Line 667 "[% "&" %]" => "&" ok 2607 - Line 668 "[% foo | none %]" => "&" ok 2608 - Line 669 "[% foo.bar %]" => "&" ok 2609 - Line 670 "[% foo.bar | none %]" => "&" ok 2610 - Line 671 "[% GET foo %]" => "&" ok 2611 - Line 672 "[% GET "&" %]" => "&" ok 2612 - Line 673 "[% GET foo | none %]" => "&" ok 2613 - Line 674 "[% Text.length(foo) %]" => "1" ### virtual objects ################################# engine_option (stream) ok 2614 - Line 679 "[% a = "foobar" %][% Text.length(a) %]" => "6" ok 2615 - Line 680 "[% a = [1 .. 10] %][% List.size(a) %]" => "10" ok 2616 - Line 681 "[% a = {a=>"A", b=>"B"} ; Hash.size(a) %]" => "2" ok 2617 - Line 683 "[% a = Text.new("This is a string") %][% a.length %]" => "16" ok 2618 - Line 684 "[% a = List.new("one", "two", "three") %][% a.size %]" => "3" ok 2619 - Line 685 "[% a = Hash.new("one", "ONE") %][% a.one %]" => "ONE" ok 2620 - Line 686 "[% a = Hash.new(one = "ONE") %][% a.one %]" => "ONE" ok 2621 - Line 687 "[% a = Hash.new(one => "ONE") %][% a.one %]" => "ONE" ok 2622 - Line 689 "[% {a => 1, b => 2} | Hash.keys | List.sort | List.join(", ") %]" => "a, b" ### chomping ######################################## engine_option (stream) ok 2623 - Line 694 " [% foo %]" => " " ok 2624 - Line 695 " [%- foo %]" => "" ok 2625 - Line 696 " # [%- foo %]" => "" ok 2626 - Line 697 " # [%- foo %]" => "" ok 2627 - Line 698 " # # [%- foo %]" => " # " ok 2628 - Line 699 " # # [%- foo %]" => " # " ok 2629 - Line 700 " # [%- foo %]" => " " ok 2630 - Line 701 " # # [%- foo %]" => " # " ok 2631 - Line 703 "[% 7 %] " => "7 " ok 2632 - Line 704 "[% 7 -%] " => "7 " ok 2633 - Line 705 "[% 7 -%] # " => "7" ok 2634 - Line 706 "[% 7 -%] # " => "7" ok 2635 - Line 707 "[% 7 -%] # " => "7 " ok 2636 - Line 708 "[% 7 -%] # # # " => "7 # # " ok 2637 - Line 709 "[% 7 -%] # " => "7 " ### string operators ################################ engine_option (stream) ok 2638 - Line 714 "[% a = "foo"; a _ "bar" %]" => "foobar" ok 2639 - Line 715 "[% a = "foo"; a ~ "bar" %]" => "foobar" ok 2640 - Line 716 "[% a = "foo"; a ~= "bar"; a %]" => "foobar" ok 2641 - Line 717 "[% "b" gt "c" %]<<<" => "<<<" ok 2642 - Line 718 "[% "b" gt "a" %]<<<" => "1<<<" ok 2643 - Line 719 "[% "b" ge "c" %]<<<" => "<<<" ok 2644 - Line 720 "[% "b" ge "b" %]<<<" => "1<<<" ok 2645 - Line 721 "[% "b" lt "c" %]<<<" => "1<<<" ok 2646 - Line 722 "[% "b" lt "a" %]<<<" => "<<<" ok 2647 - Line 723 "[% "b" le "a" %]<<<" => "<<<" ok 2648 - Line 724 "[% "b" le "b" %]<<<" => "1<<<" ok 2649 - Line 725 "[% "a" cmp "b" %]<<<" => "-1<<<" ok 2650 - Line 726 "[% "b" cmp "b" %]<<<" => "0<<<" ok 2651 - Line 727 "[% "c" cmp "b" %]<<<" => "1<<<" ### math operators ################################## engine_option (stream) ok 2652 - Line 732 "[% 1 + 2 %]" => "3" ok 2653 - Line 733 "[% 1 + 2 + 3 %]" => "6" ok 2654 - Line 734 "[% (1 + 2) %]" => "3" ok 2655 - Line 735 "[% 2 - 1 %]" => "1" ok 2656 - Line 736 "[% -1 + 2 %]" => "1" ok 2657 - Line 737 "[% -1+2 %]" => "1" ok 2658 - Line 738 "[% 2 - 1 %]" => "1" ok 2659 - Line 739 "[% 2-1 %]" => "1" ok 2660 - Line 740 "[% 2 - -1 %]" => "3" ok 2661 - Line 741 "[% 4 * 2 %]" => "8" ok 2662 - Line 742 "[% 4 / 2 %]" => "2" ok 2663 - Line 743 "[% 10 / 3 %]" => "3.33333333333333" ok 2664 - Line 744 "[% 10 div 3 %]" => "3" ok 2665 - Line 745 "[% 2 ** 3 %]" => "8" ok 2666 - Line 746 "[% 1 + 2 * 3 %]" => "7" ok 2667 - Line 747 "[% 3 * 2 + 1 %]" => "7" ok 2668 - Line 748 "[% (1 + 2) * 3 %]" => "9" ok 2669 - Line 749 "[% 3 * (1 + 2) %]" => "9" ok 2670 - Line 750 "[% 1 + 2 ** 3 %]" => "9" ok 2671 - Line 751 "[% 2 * 2 ** 3 %]" => "16" ok 2672 - Line 752 "[% SET foo = 1 %][% foo + 2 %]" => "3" ok 2673 - Line 753 "[% SET foo = 1 %][% (foo + 2) %]" => "3" ok 2674 - Line 755 "[% a = 1; (a += 2) %]" => "3" ok 2675 - Line 756 "[% a = 1; (a -= 2) %]" => "-1" ok 2676 - Line 757 "[% a = 4; (a /= 2) %]" => "2" ok 2677 - Line 758 "[% a = 1; (a *= 2) %]" => "2" ok 2678 - Line 759 "[% a = 3; (a **= 2) %]" => "9" ok 2679 - Line 760 "[% a = 1; (a %= 2) %]" => "1" ok 2680 - Line 761 "[% a = 1; (a += 2 + 3) %]" => "6" ok 2681 - Line 762 "[% a = 1; b = 2; (a += b += 3) %]|[% a %]|[% b %]" => "6|6|5" ok 2682 - Line 763 "[% a = 1; b = 2; (a += (b += 3)) %]|[% a %]|[% b %]" => "6|6|5" ok 2683 - Line 765 "[% a += 1 %]-[% a %]-[% a += 1 %]-[% a %]" => "-1--2" ok 2684 - Line 766 "[% (a += 1) %]-[% (a += 1) %]" => "1-2" ok 2685 - Line 768 "[% a = 2; a -= 3; a %]" => "-1" ok 2686 - Line 769 "[% a = 2; a *= 3; a %]" => "6" ok 2687 - Line 770 "[% a = 2; a /= .5; a %]" => "4" ok 2688 - Line 771 "[% a = 8; a %= 3; a %]" => "2" ok 2689 - Line 772 "[% a = 2; a **= 3; a %]" => "8" ok 2690 - Line 774 "[% a = 1 %][% ++a %][% a %]" => "22" ok 2691 - Line 775 "[% a = 1 %][% a++ %][% a %]" => "12" ok 2692 - Line 776 "[% a = 1 %][% --a %][% a %]" => "00" ok 2693 - Line 777 "[% a = 1 %][% a-- %][% a %]" => "10" ok 2694 - Line 778 "[% a++ FOR [1..3] %]" => "012" ok 2695 - Line 779 "[% --a FOR [1..3] %]" => "-1-2-3" ok 2696 - Line 781 "[% 2 > 3 %]<<<" => "<<<" ok 2697 - Line 782 "[% 2 > 1 %]<<<" => "1<<<" ok 2698 - Line 783 "[% 2 >= 3 %]<<<" => "<<<" ok 2699 - Line 784 "[% 2 >= 2 %]<<<" => "1<<<" ok 2700 - Line 785 "[% 2 < 3 %]<<<" => "1<<<" ok 2701 - Line 786 "[% 2 < 1 %]<<<" => "<<<" ok 2702 - Line 787 "[% 2 <= 1 %]<<<" => "<<<" ok 2703 - Line 788 "[% 2 <= 2 %]<<<" => "1<<<" ok 2704 - Line 789 "[% 1 <=> 2 %]<<<" => "-1<<<" ok 2705 - Line 790 "[% 2 <=> 2 %]<<<" => "0<<<" ok 2706 - Line 791 "[% 3 <=> 2 %]<<<" => "1<<<" ### boolean operators ############################### engine_option (stream) ok 2707 - Line 796 "[% 5 && 6 %]" => "6" ok 2708 - Line 797 "[% 5 || 6 %]" => "5" ok 2709 - Line 798 "[% 0 || 6 %]" => "6" ok 2710 - Line 799 "[% 0 && 6 %]" => "0" ok 2711 - Line 800 "[% 0 && 0 %]" => "0" ok 2712 - Line 801 "[% 5 && 6 && 7%]" => "7" ok 2713 - Line 802 "[% 0 || 1 || 2 %]" => "1" ok 2714 - Line 804 "[% 5 + (0 || 5) %]" => "10" ok 2715 - Line 807 "[% 1 ? 2 : 3 %]" => "2" ok 2716 - Line 808 "[% 0 ? 2 : 3 %]" => "3" ok 2717 - Line 809 "[% 0 ? (1 ? 2 : 3) : 4 %]" => "4" ok 2718 - Line 810 "[% 0 ? 1 ? 2 : 3 : 4 %]" => "4" ok 2719 - Line 812 "[% t = 1 || 0 ? 3 : 4 %][% t %]" => "3" ok 2720 - Line 813 "[% t = 0 or 1 ? 3 : 4 %][% t %]" => "3" ok 2721 - Line 814 "[% t = 1 or 0 ? 3 : 4 %][% t %]" => "1" ok 2722 - Line 816 "[% 0 ? 2 : 3 %]" => "3" ok 2723 - Line 817 "[% 1 ? 2 : 3 %]" => "2" ok 2724 - Line 818 "[% 0 ? 1 ? 2 : 3 : 4 %]" => "4" ok 2725 - Line 819 "[% t = 0 ? 1 ? [1..4] : [2..4] : [3..4] %][% t.0 %]" => "3" ok 2726 - Line 820 "[% t = 1 || 0 ? 0 : 1 || 2 ? 2 : 3 %][% t %]" => "0" ok 2727 - Line 821 "[% t = 0 or 0 ? 0 : 1 or 2 ? 2 : 3 %][% t %]" => "1" ok 2728 - Line 822 "[% t = 0 or 0 ? 0 : 0 or 2 ? 2 : 3 %][% t %]" => "2" ok 2729 - Line 824 "[% 0 ? 1 ? 1 + 2 * 3 : 1 + 2 * 4 : 1 + 2 * 5 %]" => "11" ok 2730 - Line 826 "[% foo //= 2 ; foo %]" => "2" ok 2731 - Line 827 "[% foo = 3; foo //= 2; foo %]" => "3" ok 2732 - Line 828 "[% foo = 3; SET foo; foo //= 2; foo %]" => "2" ok 2733 - Line 830 "[% 5 // 6 %]" => "5" ok 2734 - Line 831 "[% foo // 6 %]" => "6" ok 2735 - Line 832 "[% foo // 6 %]" => "6" ok 2736 - Line 833 "[% foo // 6 %]" => "" ok 2737 - Line 834 "[% foo // 6 %]" => "bar" ok 2738 - Line 836 "[% foo err 6 %]" => "6" ok 2739 - Line 837 "[% foo ERR 6 %]" => "6" ### regex ########################################### engine_option (stream) ok 2740 - Line 843 "[% 'foo'.match(/foo/) ? 1 : 0 %]" => "1" ok 2741 - Line 844 "[% 'foo'.match(/foo) ? 1 : 0 %]" => "" ok 2742 - Line 845 "[% 'foo'.match(/fo o/x) ? 1 : 0 %]" => "1" ok 2743 - Line 846 "[% 'foo'.match(/Foo/i) ? 1 : 0 %]" => "1" ok 2744 - Line 847 "[% 'f # o'.match(/f.o/s) ? 1 : 0 %]" => "1" ok 2745 - Line 848 "[% ' # foo'.match(/^foo/m) ? 1 : 0 %]" => "1" ok 2746 - Line 849 "[% 'foo'.match(/foo/e) ? 1 : 0 %]" => "" ok 2747 - Line 850 "[% 'foo'.match(/foo/g) ? 1 : 0 %]" => "" ok 2748 - Line 851 "[% 'foo'.match(/foo) ? 1 : 0 %]" => "" ok 2749 - Line 852 "[% 'foo'.match(/foo**/) ? 1 : 0 %]" => "" ok 2750 - Line 853 "[% 'fo/o'.match(/fo\/o/) ? 1 : 0 %]" => "1" ok 2751 - Line 854 "[% 'foobar'.match(/(f\w\w)/).0 %]" => "foo" ### BLOCK / PROCESS / INCLUDE / WRAPPER ############# engine_option (stream) ok 2752 - Line 860 "[% PROCESS foo %]one" => "" ok 2753 - Line 861 "[% BLOCK foo %]one" => "" ok 2754 - Line 862 "[% BLOCK foo %][% END %]one" => "one" ok 2755 - Line 863 "[% BLOCK %][% END %]one" => "one" ok 2756 - Line 864 "[% BLOCK foo %]hi there[% END %]one" => "one" ok 2757 - Line 865 "[% BLOCK foo %][% BLOCK foo %][% END %][% END %]" => "" ok 2758 - Line 866 "[% BLOCK foo %]hi there[% END %][% PROCESS foo %]" => "hi there" ok 2759 - Line 867 "[% PROCESS foo %][% BLOCK foo %]hi there[% END %]" => "hi there" ok 2760 - Line 868 "[% BLOCK foo %]hi there[% END %][% PROCESS foo foo %]" => "hi therehi there" ok 2761 - Line 869 "[% BLOCK foo %]hi there[% END %][% PROCESS foo, foo %]" => "hi therehi there" ok 2762 - Line 870 "[% BLOCK foo %]hi there[% END %][% PROCESS foo + foo %]" => "hi therehi there" ok 2763 - Line 871 "[% BLOCK foo %]hi [% one %] there[% END %][% PROCESS foo %]" => "hi ONE there" ok 2764 - Line 872 "[% BLOCK foo %]hi [% IF 1 %]Yes[% END %] there[% END %]<<[% PROCESS foo %]>>" => "<>" ok 2765 - Line 873 "[% BLOCK foo %]hi [% one %] there[% END %][% PROCESS foo one = 'two' %]" => "hi two there" ok 2766 - Line 874 "[% BLOCK foo %]hi [% one.two %] there[% END %][% PROCESS foo one.two = 'two' %]" => "hi two there" ok 2767 - Line 875 "[% BLOCK foo %]hi [% one.two %] there[% END %][% PROCESS foo + foo one.two = 'two' %]" => "hi two therehi two there" ok 2768 - Line 876 "[% BLOCK foo %][% BLOCK bar %]hi [% one %] there[% END %][% END %][% PROCESS foo/bar one => 'two' %]" => "hi two there" ok 2769 - Line 878 "[% BLOCK b %]Ta-Da[% END %][% self = {a => 'b'} %][% PROCESS $self.a self = 'blah' %]" => "Ta-Da" ok 2770 - Line 879 "[% BLOCK b %]Ta-Da[% END %][% self = {a => 'b'} %][% INCLUDE $self.a self = 'blah' %]" => "Ta-Da" ok 2771 - Line 880 "[% BLOCK b %]Ta-Da[% END %][% self = 'b' %][% PROCESS $self self = 'blah'; self %]" => "Ta-Dablah" ok 2772 - Line 881 "[% BLOCK b %]Ta-Da[% END %][% self = 'b' %][% INCLUDE $self self = 'blah'; self %]" => "Ta-Dab" ok 2773 - Line 883 "[% BLOCK foo %]hi [% one %] there[% END %][% PROCESS foo one = 'two' %][% one %]" => "hi two theretwo" ok 2774 - Line 884 "[% BLOCK foo %]hi [% one %] there[% END %][% INCLUDE foo one = 'two' %][% one %]" => "hi two there" ok 2775 - Line 887 "[% BLOCK foo %]FOO[% IF ! a ; a = 1; PROCESS bar; END %][% END %][% BLOCK bar %]BAR[% PROCESS foo %][% END %][% PROCESS foo %]d" => "FOOBAR" ok 2776 - Line 888 "[% BLOCK foo %]FOO[% IF ! a ; a = 1; PROCESS bar; END %][% END %][% BLOCK bar %]BAR[% PROCESS foo %][% END %][% PROCESS foo %]" => "FOOBARFOO" ok 2777 - Line 890 "[% BLOCK foo %]([% content %])[% END %][% WRAPPER foo %]hi there[% END %]" => "(hi there)" ok 2778 - Line 891 "[% BLOCK foo %]([% one = 1; content %])[% END %][% WRAPPER foo %]hi there[% END %][% one %]" => "(hi there)won" ok 2779 - Line 893 "[% a = 23; PROCESS $foo %]" => "bar 23 baz" ### IF / UNLESS / ELSIF / ELSE ###################### engine_option (stream) ok 2780 - Line 898 "[% IF 1 %]Yes[% END %]" => "Yes" ok 2781 - Line 899 "[% IF 0 %]Yes[% END %]" => "" ok 2782 - Line 900 "[% IF 0 %]Yes[% ELSE %]No[% END %]" => "No" ok 2783 - Line 901 "[% IF 0 %]Yes[% ELSIF 1 %]No[% END %]" => "No" ok 2784 - Line 902 "[% IF 0 %]Yes[% ELSIF 0 %]No[% END %]" => "" ok 2785 - Line 903 "[% IF 0 %]Yes[% ELSIF 0 %]No[% ELSE %]hmm[% END %]" => "hmm" ok 2786 - Line 905 "[% UNLESS 1 %]Yes[% END %]" => "" ok 2787 - Line 906 "[% UNLESS 0 %]Yes[% END %]" => "Yes" ok 2788 - Line 907 "[% UNLESS 0 %]Yes[% ELSE %]No[% END %]" => "Yes" ok 2789 - Line 908 "[% UNLESS 1 %]Yes[% ELSIF 1 %]No[% END %]" => "No" ok 2790 - Line 909 "[% UNLESS 1 %]Yes[% ELSIF 0 %]No[% END %]" => "" ok 2791 - Line 910 "[% UNLESS 1 %]Yes[% ELSIF 0 %]No[% ELSE %]hmm[% END %]" => "hmm" ### comments ######################################## engine_option (stream) ok 2792 - Line 915 "[%\# one %]f" => "f" ok 2793 - Line 916 "[%\# # one %]f" => "f" ok 2794 - Line 917 "[%-\# # one %]f" => "f" ok 2795 - Line 918 "[% \# # one %]f" => "ONEf" ok 2796 - Line 919 "[% \# one %] # one %]f" => " # one %]f" ok 2797 - Line 921 "[%\# BLOCK one %]" => "" ok 2798 - Line 922 "[%\# BLOCK one %]two" => "two" ok 2799 - Line 923 "[%\# BLOCK one %]two[% END %]" => "" ok 2800 - Line 924 "[%\# BLOCK one %]two[% END %]three" => "" ok 2801 - Line 925 "[% %]" => "" ok 2802 - Line 926 "[% # \# Some comment # CALL 1 -%] # foo" => "foo" ### FOREACH / NEXT / LAST ########################### engine_option (stream) ok 2803 - Line 934 "[% FOREACH foo %]" => "" ok 2804 - Line 935 "[% FOREACH foo %][% END %]" => "" ok 2805 - Line 936 "[% FOREACH foo %]bar[% END %]" => "" ok 2806 - Line 937 "[% FOREACH foo %]bar[% END %]" => "bar" ok 2807 - Line 938 "[% FOREACH f IN foo %]bar[% f %][% END %]" => "bar1bar2" ok 2808 - Line 939 "[% FOREACH f = foo %]bar[% f %][% END %]" => "bar1bar2" ok 2809 - Line 940 "[% FOREACH f = [1,2] %]bar[% f %][% END %]" => "bar1bar2" ok 2810 - Line 941 "[% FOREACH f = [1..3] %]bar[% f %][% END %]" => "bar1bar2bar3" ok 2811 - Line 942 "[% FOREACH f = [{a=>'A'},{a=>'B'}] %]bar[% f.a %][% END %]" => "barAbarB" ok 2812 - Line 943 "[% FOREACH [{a=>'A'},{a=>'B'}] %]bar[% a %][% END %]" => "barAbarB" ok 2813 - Line 944 "[% FOREACH [{a=>'A'},{a=>'B'}] %]bar[% a %][% END %][% a %]" => "barAbarB" ok 2814 - Line 945 "[% FOREACH f = [1..3] %][% loop.count %]/[% loop.size %] [% END %]" => "1/3 2/3 3/3 " ok 2815 - Line 946 "[% FOREACH f = [1..3] %][% IF loop.first %][% f %][% END %][% END %]" => "1" ok 2816 - Line 947 "[% FOREACH f = [1..3] %][% IF loop.last %][% f %][% END %][% END %]" => "3" ok 2817 - Line 948 "[% FOREACH f = [1..3] %][% IF loop.first %][% NEXT %][% END %][% f %][% END %]" => "23" ok 2818 - Line 949 "[% FOREACH f = [1..3] %][% IF loop.first %][% LAST %][% END %][% f %][% END %]" => "" ok 2819 - Line 950 "[% FOREACH f = [1..3] %][% f %][% IF loop.first %][% NEXT %][% END %][% END %]" => "123" ok 2820 - Line 951 "[% FOREACH f = [1..3] %][% f %][% IF loop.first %][% LAST %][% END %][% END %]" => "1" ok 2821 - Line 952 "[% loop.odd FOREACH [1..5] %]" => "10101" ok 2822 - Line 953 "[% loop.even FOREACH [1..5] %]" => "01010" ok 2823 - Line 954 "[% loop.parity FOREACH [1..5] %]" => "oddevenoddevenodd" ok 2824 - Line 956 "[% a = ["Red", "Blue"] ; FOR [0..3] ; a.${ loop.index % a.size } ; END %]" => "RedBlueRedBlue" ok 2825 - Line 961 "[% foo = 1 %][% FOREACH [1..10] %][% foo %][% foo = 2 %][% END %]" => "1222222222" ok 2826 - Line 962 "[% f = 1 %][% FOREACH i = [1..10] %][% i %][% f = 2 %][% END %][% f %]" => "123456789102" ok 2827 - Line 963 "[% f = 1 %][% FOREACH [1..10] %][% f = 2 %][% END %][% f %]" => "1" ok 2828 - Line 964 "[% f = 1 %][% FOREACH f = [1..10] %][% f %][% END %][% f %]" => "1234567891010" ok 2829 - Line 965 "[% FOREACH [1] %][% SET a = 1 %][% END %][% a %]" => "" ok 2830 - Line 966 "[% a %][% FOREACH [1] %][% SET a = 1 %][% END %][% a %]" => "" ok 2831 - Line 967 "[% a = 2 %][% FOREACH [1] %][% SET a = 1 %][% END %][% a %]" => "2" ok 2832 - Line 968 "[% a = 2 %][% FOREACH [1] %][% a = 1 %][% END %][% a %]" => "2" ok 2833 - Line 969 "[% a = 2 %][% FOREACH i = [1] %][% a = 1 %][% END %][% a %]" => "1" ok 2834 - Line 970 "[% FOREACH i = [1] %][% SET a = 1 %][% END %][% a %]" => "1" ok 2835 - Line 971 "[% f.b = 1 %][% FOREACH f.b = [1..10] %][% f.b %][% END %][% f.b %]" => "1234567891010" ok 2836 - Line 972 "[% a = 1 %][% FOREACH [{a=>'A'},{a=>'B'}] %]bar[% a %][% END %][% a %]" => "barAbarB1" ok 2837 - Line 973 "[% FOREACH [1..3] %][% loop.size %][% END %][% loop.size %]" => "333" ok 2838 - Line 974 "[% FOREACH i = [1..3] %][% loop.size %][% END %][% loop.size %]" => "333" ok 2839 - Line 977 "[% FOREACH f = [1..3]; 1; END %]" => "111" ok 2840 - Line 978 "[% FOREACH f = [1..3]; f; END %]" => "123" ok 2841 - Line 979 "[% FOREACH f = [1..3]; "$f"; END %]" => "123" ok 2842 - Line 980 "[% FOREACH f = [1..3]; f + 1; END %]" => "234" ok 2843 - Line 981 "[% FOREACH f IN [2,3,4]; FOREACH g IN [6,7,8]; f;g;", "; END; END %]" => "26, 27, 28, 36, 37, 38, 46, 47, 48, " ok 2844 - Line 992 "[% FOREACH i IN foo; i.n; END %]" => "123" ok 2845 - Line 993 "[% FOREACH i IN foo; i.n; END %]" => "1" ok 2846 - Line 994 "[% FOREACH i IN foo; i.n; END %]" => "123" ok 2847 - Line 995 "[% FOREACH i IN foo; i.n; END %]" => "1" ok 2848 - Line 997 "[% FOREACH i IN foo; i.n; END %]" => "123" ok 2849 - Line 998 "[% FOREACH i IN foo; i.n; END %]" => "1" ok 2850 - Line 999 "[% FOREACH i IN foo; i.n; END %]" => "123" ok 2851 - Line 1000 "[% FOREACH i IN foo; i.n; END %]" => "1" ### LOOP ############################################ engine_option (stream) ok 2852 - Line 1005 "[% var = [{key => 'a'}, {key => 'b'}] -%] # [% LOOP var -%] # ([% key %]) # [% END %]" => " (a) # (b) # " ok 2853 - Line 1014 "[% var = [{key => 'a'}, {key => 'b'}, {key => 'c'}] -%] # [% LOOP var -%] # ([% key; '|'; __first__; '|'; __last__; '|'; __inner__; '|'; __odd__ %]) # [% END -%]" => "(a|1|0|0|1) # (b|0|0|1|0) # (c|0|1|0|1) # " ### WHILE ########################################### engine_option (stream) ok 2854 - Line 1026 "[% WHILE foo %]" => "" ok 2855 - Line 1027 "[% WHILE foo %][% END %]" => "" ok 2856 - Line 1028 "[% WHILE (foo = foo - 1) %][% END %]" => "" ok 2857 - Line 1029 "[% WHILE (foo = foo - 1) %][% foo %][% END %]" => "21" ok 2858 - Line 1030 "[% WHILE foo %][% foo %][% foo = foo - 1 %][% END %]" => "321" ok 2859 - Line 1032 "[% WHILE 1 %][% foo %][% foo = foo - 1 %][% LAST IF foo == 1 %][% END %]" => "32" ok 2860 - Line 1033 "[% f = 10; WHILE f; f = f - 1 ; f ; END %]" => "9876543210" ok 2861 - Line 1034 "[% f = 10; WHILE f; f = f - 1 ; f ; END ; f %]" => "98765432100" ok 2862 - Line 1035 "[% f = 10; a = 2; WHILE f; f = f - 1 ; f ; a=3; END ; a%]" => "98765432103" ok 2863 - Line 1037 "[% f = 10; WHILE (g=f); f = f - 1 ; f ; END %]" => "9876543210" ok 2864 - Line 1038 "[% f = 10; WHILE (g=f); f = f - 1 ; f ; END ; f %]" => "98765432100" ok 2865 - Line 1039 "[% f = 10; a = 2; WHILE (g=f); f = f - 1 ; f ; a=3; END ; a%]" => "98765432103" ok 2866 - Line 1040 "[% f = 10; a = 2; WHILE (a=f); f = f - 1 ; f ; a=3; END ; a%]" => "98765432100" ### STOP / RETURN / CLEAR ########################### engine_option (stream) ok 2867 - Line 1045 "[% STOP %]" => "" ok 2868 - Line 1046 "One[% STOP %]Two" => "One" ok 2869 - Line 1047 "[% BLOCK foo %]One[% STOP %]Two[% END %]First[% PROCESS foo %]Last" => "FirstOne" ok 2870 - Line 1048 "[% FOREACH f = [1..3] %][% f %][% IF loop.first %][% STOP %][% END %][% END %]" => "1" ok 2871 - Line 1049 "[% FOREACH f = [1..3] %][% IF loop.first %][% STOP %][% END %][% f %][% END %]" => "" ok 2872 - Line 1051 "[% RETURN %]" => "" ok 2873 - Line 1052 "One[% RETURN %]Two" => "One" ok 2874 - Line 1053 "[% BLOCK foo %]One[% RETURN %]Two[% END %]First[% PROCESS foo %]Last" => "FirstOneLast" ok 2875 - Line 1054 "[% FOREACH f = [1..3] %][% f %][% IF loop.first %][% RETURN %][% END %][% END %]" => "1" ok 2876 - Line 1055 "[% FOREACH f = [1..3] %][% IF loop.first %][% RETURN %][% END %][% f %][% END %]" => "" ok 2877 - Line 1057 "[% CLEAR %]" => "" ### post opererative directives ##################### engine_option (stream) ok 2878 - Line 1068 "[% GET foo IF 1 %]" => "1" ok 2879 - Line 1069 "[% f FOREACH f = [1..3] %]" => "123" ok 2880 - Line 1071 "2[% GET foo IF 1 IF 2 %]" => "21" ok 2881 - Line 1072 "2[% GET foo IF 1 IF 0 %]" => "2" ok 2882 - Line 1073 "[% f FOREACH f = [1..3] IF 1 %]" => "123" ok 2883 - Line 1074 "[% f FOREACH f = [1..3] IF 0 %]" => "" ok 2884 - Line 1075 "[% f FOREACH f = g FOREACH g = [1..3] %]" => "123" ok 2885 - Line 1076 "[% f FOREACH f = g.a FOREACH g = [{a=>1}, {a=>2}, {a=>3}] %]" => "123" ok 2886 - Line 1077 "[% f FOREACH f = a FOREACH [{a=>1}, {a=>2}, {a=>3}] %]" => "123" ok 2887 - Line 1079 "[% FOREACH f = [1..3] IF 1 %]([% f %])[% END %]" => "(1)(2)(3)" ok 2888 - Line 1080 "[% FOREACH f = [1..3] IF 0 %]([% f %])[% END %]" => "" ok 2889 - Line 1082 "[% BLOCK bar %][% foo %][% foo = foo - 1 %][% END %][% PROCESS bar WHILE foo %]" => "321" ### capturing ####################################### engine_option (stream) ok 2890 - Line 1087 "[% foo = BLOCK %]Hi[% END %][% foo %][% foo %]" => "HiHi" ok 2891 - Line 1088 "[% BLOCK foo %]Hi[% END %][% bar = PROCESS foo %]-[% bar %]" => "-Hi" ok 2892 - Line 1089 "[% foo = IF 1 %]Hi[% END %][% foo %]" => "Hi" ok 2893 - Line 1090 "[% BLOCK foo %]([% i %])[% END %][% wow = PROCESS foo i='bar' %][% wow %]" => "(bar)" ok 2894 - Line 1091 "[% BLOCK foo %]([% i %])[% END %][% SET wow = PROCESS foo i='bar' %][% wow %]" => "(bar)" ### TAGS ############################################ engine_option (stream) ok 2895 - Line 1096 "[% TAGS asp %]<% 1 + 2 %>" => "3" ok 2896 - Line 1097 "[% TAGS default %][% 1 + 2 %]" => "3" ok 2897 - Line 1098 "[% TAGS html %]" => "3" ok 2898 - Line 1099 "[% TAGS mason %]<% 1 + 2 >" => "3" ok 2899 - Line 1100 "[% TAGS metatext %]%% 1 + 2 %%" => "3" ok 2900 - Line 1101 "[% TAGS php %]" => "3" ok 2901 - Line 1102 "[% TAGS star %][* 1 + 2 *]" => "3" ok 2902 - Line 1103 "[% TAGS template %][% 1 + 2 %]" => "3" ok 2903 - Line 1104 "[% TAGS template1 %][% 1 + 2 %]" => "3" ok 2904 - Line 1105 "[% TAGS template1 %]%% 1 + 2 %%" => "3" ok 2905 - Line 1106 "[% TAGS tt2 %][% 1 + 2 %]" => "3" ok 2906 - Line 1108 "[% TAGS html %] " => "3" ok 2907 - Line 1109 "[% TAGS html %]" => "3" ok 2908 - Line 1110 "[% TAGS html %] # " => "3" ok 2909 - Line 1111 "[% BLOCK foo %][% TAGS html %] " => "3 3" ok 2910 - Line 1112 "[% BLOCK foo %][% TAGS html %][% END %][% PROCESS foo %] [% 1 + 2 %]" => "" ok 2911 - Line 1114 "[% TAGS %]" => "3" ok 2912 - Line 1116 "[% TAGS [<] [>] %][<] 1 + 2 [>]" => "3" ok 2913 - Line 1117 "[% TAGS '[<]' '[>]' %][<] 1 + 2 [>]" => "3" ok 2914 - Line 1118 "[% TAGS /[<]/ /[>]/ %]< 1 + 2 >" => "3" ok 2915 - Line 1119 "[% TAGS ** ** %]** 1 + 2 **" => "3" ok 2916 - Line 1120 "[% TAGS '**' '**' %]** 1 + 2 **" => "3" ok 2917 - Line 1121 "[% TAGS /**/ /**/ %]** 1 + 2 **" => "" ok 2918 - Line 1123 "[% TAGS html -->" => "3" ok 2919 - Line 1124 "[% TAGS html ; 7 -->" => "73" ok 2920 - Line 1125 "[% TAGS html ; 7 %]" => "" ### SWITCH / CASE ################################### engine_option (stream) ok 2921 - Line 1130 "[% SWITCH 1 %][% END %]hi" => "hi" ok 2922 - Line 1131 "[% SWITCH 1 %][% CASE %]bar[% END %]hi" => "barhi" ok 2923 - Line 1132 "[% SWITCH 1 %]Pre[% CASE %]bar[% END %]hi" => "barhi" ok 2924 - Line 1133 "[% SWITCH 1 %][% CASE DEFAULT %]bar[% END %]hi" => "barhi" ok 2925 - Line 1134 "[% SWITCH 1 %][% CASE 0 %]bar[% END %]hi" => "hi" ok 2926 - Line 1135 "[% SWITCH 1 %][% CASE 1 %]bar[% END %]hi" => "barhi" ok 2927 - Line 1136 "[% SWITCH 1 %][% CASE foo %][% CASE 1 %]bar[% END %]hi" => "barhi" ok 2928 - Line 1137 "[% SWITCH 1 %][% CASE [1..10] %]bar[% END %]hi" => "barhi" ok 2929 - Line 1138 "[% SWITCH 11 %][% CASE [1..10] %]bar[% END %]hi" => "hi" ok 2930 - Line 1140 "[% SWITCH 1.0 %][% CASE [1..10] %]bar[% END %]hi" => "barhi" ### TRY / THROW / CATCH / FINAL ##################### engine_option (stream) ok 2931 - Line 1145 "[% TRY %][% END %]hi" => "hi" ok 2932 - Line 1146 "[% TRY %]Foo[% END %]hi" => "Foohi" ok 2933 - Line 1147 "[% TRY %]Foo[% THROW foo 'for fun' %]bar[% END %]hi" => "Foo" ok 2934 - Line 1148 "[% TRY %]Foo[% THROW foo 'for fun' %]bar[% CATCH %][% END %]hi" => "Foohi" ok 2935 - Line 1149 "[% TRY %]Foo[% THROW foo 'for fun' %]bar[% CATCH %]there[% END %]hi" => "Footherehi" ok 2936 - Line 1150 "[% TRY %]Foo[% THROW foo 'for fun' %]bar[% CATCH foo %]there[% END %]hi" => "Footherehi" ok 2937 - Line 1151 "[% TRY %]Foo[% TRY %]Foo[% THROW foo 'for fun' %][% CATCH bar %]one[% END %][% CATCH %]two[% END %]hi" => "FooFootwohi" ok 2938 - Line 1152 "[% TRY %]Foo[% TRY %]Foo[% THROW foo 'for fun' %][% CATCH bar %]one[% END %][% CATCH s %]two[% END %]hi" => "FooFoo" ok 2939 - Line 1153 "[% TRY %]Foo[% THROW foo.bar 'for fun' %][% CATCH foo %]one[% CATCH foo.bar %]two[% END %]hi" => "Footwohi" ok 2940 - Line 1155 "[% TRY %]Foo[% FINAL %]Bar[% END %]hi" => "FooBarhi" ok 2941 - Line 1156 "[% TRY %]Foo[% THROW foo %][% FINAL %]Bar[% CATCH %]one[% END %]hi" => "" ok 2942 - Line 1157 "[% TRY %]Foo[% THROW foo %][% CATCH %]one[% FINAL %]Bar[% END %]hi" => "FoooneBarhi" ok 2943 - Line 1158 "[% TRY %]Foo[% THROW foo %][% CATCH bar %]one[% FINAL %]Bar[% END %]hi" => "Foo" ok 2944 - Line 1160 "[% TRY %][% THROW foo 'bar' %][% CATCH %][% error %][% END %]" => "foo error - bar" ok 2945 - Line 1161 "[% TRY %][% THROW foo 'bar' %][% CATCH %][% error.type %][% END %]" => "foo" ok 2946 - Line 1162 "[% TRY %][% THROW foo 'bar' %][% CATCH %][% error.info %][% END %]" => "bar" ok 2947 - Line 1163 "[% TRY %][% THROW foo %][% CATCH %][% error.type %][% END %]" => "undef" ok 2948 - Line 1164 "[% TRY %][% THROW foo %][% CATCH %][% error.info %][% END %]" => "foo" ### named args ###################################### engine_option (stream) ok 2949 - Line 1170 "[% foo(bar = 'one', baz = 'two') %]" => "baronebaztwo" ok 2950 - Line 1172 "[%bar='ONE'%][% foo($bar = 'one') %]" => "ONEone" ### USE ############################################# engine_option (stream) ok 2951 - Line 1178 "[% USE son_of_gun_that_does_not_exist %]one" => "" ok 2952 - Line 1179 "[% USE Iterator([3..6]) %]hey[% CALL Iterator.get_first; Iterator.size %]" => "hey4" ok 2953 - Line 1180 "[% USE FooTest %]one" => "one" ok 2954 - Line 1181 "[% USE FooTest2 %]one" => "one" ok 2955 - Line 1182 "[% USE FooTest(bar = 'baz') %]one[% FooTest.bar %]" => "onebarbaz" ok 2956 - Line 1183 "[% USE FooTest2(bar = 'baz') %]one[% FooTest2.bar %]" => "onebarbaz" ok 2957 - Line 1184 "[% USE FooTest(bar = 'baz') %]one[% FooTest.bar %]" => "onebarbaz" ok 2958 - Line 1185 "[% USE d = FooTest(bar = 'baz') %]one[% d.bar %]" => "onebarbaz" ok 2959 - Line 1186 "[% USE d.d = FooTest(bar = 'baz') %]one[% d.d.bar %]" => "" ok 2960 - Line 1187 "[% USE FooTest(somerand = 8) %]one[% FooTest.somerand %]" => "one8" ok 2961 - Line 1189 "[% USE a(bar = 'baz') %]one[% a.seven %]" => "" ok 2962 - Line 1190 "[% USE a(bar = 'baz') %]one[% a.seven %]" => "one7" ok 2963 - Line 1193 "[% USE FooTest %]three" => "three" ### MACRO ########################################### engine_option (stream) ok 2964 - Line 1198 "[% MACRO foo PROCESS bar %][% BLOCK bar %]Hi[% END %][% foo %]" => "Hi" ok 2965 - Line 1199 "[% MACRO foo BLOCK %]Hi[% END %][% foo %]" => "Hi" ok 2966 - Line 1200 "[% MACRO foo BLOCK %]Hi[% END %][% foo %]" => "Hi" ok 2967 - Line 1201 "[% MACRO foo(n) BLOCK %]Hi[% n %][% END %][% foo(2) %]" => "Hi2" ok 2968 - Line 1202 "[%n=1%][% MACRO foo(n) BLOCK %]Hi[% n %][% END %][% foo(2) %][%n%]" => "Hi21" ok 2969 - Line 1203 "[%n=1%][% MACRO foo BLOCK %]Hi[% n = 2%][% END %][% foo %][%n%]" => "Hi1" ok 2970 - Line 1204 "[% MACRO foo(n) FOREACH i=[1..n] %][% i %][% END %][% foo(3) %]" => "123" ok 2971 - Line 1206 "[% MACRO f BLOCK %]>[% TRY; f ; CATCH ; "caught" ; END %][% END %][% f %]" => ">>>caught" ok 2972 - Line 1209 "[% foo = ->{ 'Hi' } %][% foo %]" => "Hi" ok 2973 - Line 1210 "[% foo = ->{ 'Hi'; this } %][% foo(2) %]" => "Hi2" ok 2974 - Line 1211 "[% foo = ->(n){ 'Hi'; n } %][% foo(2) %]" => "Hi2" ok 2975 - Line 1212 "[%n=1%][% foo = ->(n) { 'Hi' ; n } %][% foo(2) %][%n%]" => "Hi21" ok 2976 - Line 1213 "[% foo = ->(n) { FOREACH i=[1..n]; i ; END } %][% foo(3) %]" => "123" ### DEBUG ########################################### engine_option (stream) ok 2977 - Line 1219 " # # [% one %]" => " # # # \#\# input text line 3 : [% one %] \#\# # ONE" ok 2978 - Line 1220 "[% one %]" => " # \#\# input text line 1 : [% one %] \#\# # ONE" ok 2979 - Line 1221 "[% one %] # # " => "(1)ONE # # " ok 2980 - Line 1222 "1 # 2 # 3[% one %]" => "1 # 2 # 3(3)ONE" ok 2981 - Line 1223 "[% one; # one %]" => "(1)ONE(2)ONE" ok 2982 - Line 1225 "[% DEBUG format '($line)' %][% one %]" => " # \#\# input text line 1 : [% DEBUG format '($line)' %] \#\# # (1)ONE" ok 2983 - Line 1227 "[% TRY %][% abc %][% CATCH %][% error %][% END %]" => "undef error - abc is undefined # " ok 2984 - Line 1229 "[% TRY %][% abc.def %][% CATCH %][% error %][% END %]" => "undef error - abc.def is undefined # " ### constants ####################################### engine_option (stream) ok 2985 - Line 1248 "[% constants.harry %]" => "do_this_once" ok 2986 - Line 1249 "[% constants.harry.length %]" => "12" ok 2987 - Line 1250 "[% SET constants.something = 1 %][% constants.something %]one" => "1one" ok 2988 - Line 1251 "[% SET constants.harry = 1 %][% constants.harry %]one" => "do_this_onceone" ok 2989 - Line 1252 "[% constants.foo.${constants.bang} %]" => "57" ok 2990 - Line 1253 "[% constants.foo.$bam.${constants.bing} %]" => "42" ok 2991 - Line 1254 "[% bam = 'somethingelse' %][% constants.foo.$bam.${constants.bing} %]" => "42" ok 2992 - Line 1256 "[% constants.${"harry"} %]" => "do_this_once" ok 2993 - Line 1257 "[% ${"constants"}.harry %]" => "foo" ok 2994 - Line 1259 "[% ${"con${"s"}tants"}.harry %]" => "foo" ### CONTEXT ######################################### engine_option (stream) ok 2995 - Line 1265 "[% CALL cctx.call_me %][% cctx.last_context %]" => "list" ok 2996 - Line 1266 "[% cctx.array %]" => "ARRAY(0x7f8019a28fd0)" ok 2997 - Line 1267 "[% cctx.array2 %]" => "4" ok 2998 - Line 1268 "[% cctx.list %]" => "ARRAY(0x7f8018ad2d20)" ok 2999 - Line 1269 "[% cctx.scalar %]" => "8" ok 3000 - Line 1270 "[% cctx.bang %]" => "bing" ok 3001 - Line 1274 "[% CALL cctx.call_me %][% cctx.last_context %]" => "list" ok 3002 - Line 1275 "[% CALL @(cctx.call_me) %][% cctx.last_context %]" => "list" ok 3003 - Line 1276 "[% CALL $(cctx.call_me) %][% cctx.last_context %]" => "scalar" ok 3004 - Line 1277 "[% CALL call_cctx %][% cctx.last_context %]" => "list" ok 3005 - Line 1278 "[% CALL @(call_cctx) %][% cctx.last_context %]" => "list" ok 3006 - Line 1279 "[% CALL $(call_cctx) %][% cctx.last_context %]" => "scalar" ok 3007 - Line 1280 "[% CALL cctx.call_me %][% cctx.last_context %]" => "list" ok 3008 - Line 1281 "[% CALL cctx.call_me %][% cctx.last_context.0 %]" => "list" ok 3009 - Line 1282 "[% CALL cctx.call_me %][% cctx.last_context %]" => "scalar" ok 3010 - Line 1283 "[% cctx.array %]" => "ARRAY(0x7f80199ebf00)" ok 3011 - Line 1284 "[% @(cctx.array) %]" => "ARRAY(0x7f8018ad29f0)" ok 3012 - Line 1285 "[% $(cctx.array) %]" => "3" ok 3013 - Line 1286 "[% cctx.array2 %]" => "4" ok 3014 - Line 1287 "[% @(cctx.array2) %]" => "ARRAY(0x7f80199eb9d8)" ok 3015 - Line 1288 "[% $(cctx.array2) %]" => "1" ok 3016 - Line 1289 "[% cctx.list %]" => "ARRAY(0x7f80199eb828)" ok 3017 - Line 1290 "[% @(cctx.list) %]" => "ARRAY(0x7f8019a3fdc0)" ok 3018 - Line 1291 "[% $(cctx.list) %]" => "7" ok 3019 - Line 1292 "[% cctx.scalar %]" => "8" ok 3020 - Line 1293 "[% @(cctx.scalar) %]" => "ARRAY(0x7f80199ebfa8)" ok 3021 - Line 1294 "[% $(cctx.scalar) %]" => "8" ok 3022 - Line 1295 "[% cctx.bang %] ~" => "bing ~" ok 3023 - Line 1296 "[% @(cctx.bang) %] ~" => "bing ~" ok 3024 - Line 1297 "[% $(cctx.bang) %] ~" => "bing ~" ok 3025 - Line 1299 "[% CONFIG CALL_CONTEXT => "list"; CALL cctx.call_me; CONFIG CALL_CONTEXT => "smart" %][% cctx.last_context %]" => "list" ok 3026 - Line 1301 "[% CONFIG CALL_CONTEXT => "item"; CALL cctx.call_me %][% cctx.last_context %]" => "scalar" ok 3027 - Line 1303 "[% cctx.dataref.0.foo = 7; cctx.dataref.0.foo %]" => "7" ok 3028 - Line 1305 "[% @(cctx.dataref).0.foo = 7; cctx.dataref.foo %]" => "7" ok 3029 - Line 1307 "[% $(cctx.dataref).0.foo = 7; cctx.dataref.0.foo %]" => "7" ok 3030 - Line 1309 "[% CONFIG CALL_CONTEXT => "list"; cctx.dataref.0.foo = 7; CONFIG CALL_CONTEXT => "item"; cctx.dataref.foo %]" => "7" ok 3031 - Line 1314 "[% cctxo.bang = 1 %] ~" => " ~" ok 3032 - Line 1315 "[% cctxo.dataref.foo = 7; cctxo.dataref.foo %]" => "7" ok 3033 - Line 1317 "[% CALL cctxo.call_me %][% cctxo.last_context %]" => "list" ok 3034 - Line 1318 "[% CALL @(cctxo.call_me) %][% cctxo.last_context %]" => "list" ok 3035 - Line 1319 "[% CALL $(cctxo.call_me) %][% cctxo.last_context %]" => "scalar" ok 3036 - Line 1320 "[% CALL call_cctxo %][% cctxo.last_context %]" => "list" ok 3037 - Line 1321 "[% CALL @(call_cctxo) %][% cctxo.last_context %]" => "list" ok 3038 - Line 1322 "[% CALL $(call_cctxo) %][% cctxo.last_context %]" => "scalar" ok 3039 - Line 1323 "[% CALL cctxo.call_me %][% cctxo.last_context %]" => "list" ok 3040 - Line 1324 "[% CALL cctxo.call_me %][% cctxo.last_context.0 %]" => "list" ok 3041 - Line 1325 "[% CALL cctxo.call_me %][% cctxo.last_context %]" => "scalar" ok 3042 - Line 1326 "[% cctxo.array %]" => "ARRAY(0x7f8019a339e0)" ok 3043 - Line 1327 "[% @(cctxo.array) %]" => "ARRAY(0x7f8019a40678)" ok 3044 - Line 1328 "[% $(cctxo.array) %]" => "3" ok 3045 - Line 1329 "[% cctxo.array2 %]" => "4" ok 3046 - Line 1330 "[% @(cctxo.array2) %]" => "ARRAY(0x7f8019a42508)" ok 3047 - Line 1331 "[% $(cctxo.array2) %]" => "1" ok 3048 - Line 1332 "[% cctxo.list %]" => "ARRAY(0x7f8019a40408)" ok 3049 - Line 1333 "[% @(cctxo.list) %]" => "ARRAY(0x7f8019a43ad0)" ok 3050 - Line 1334 "[% $(cctxo.list) %]" => "7" ok 3051 - Line 1335 "[% cctxo.scalar %]" => "8" ok 3052 - Line 1336 "[% @(cctxo.scalar) %]" => "ARRAY(0x7f8019a40948)" ok 3053 - Line 1337 "[% $(cctxo.scalar) %]" => "8" ok 3054 - Line 1338 "[% cctxo.bang %] ~" => "bing ~" ok 3055 - Line 1341 "[% SET cctxo.call_me = 2 %][% cctxo.last_context %]" => "list2" ok 3056 - Line 1343 "[% CALL @(cctxo.call_me = 3) %][% cctxo.last_context %]" => "list3" ok 3057 - Line 1345 "[% CALL $(cctxo.call_me = 4) %][% cctxo.last_context %]" => "scalar4" ### INTERPOLATE ##################################### engine_option (stream) ok 3058 - Line 1351 "Foo $one Bar" => "Foo ONE Bar" ok 3059 - Line 1352 "[% PERL %] my $n=7; print $n [% END %]" => "7" ok 3060 - Line 1353 "[% TRY ; PERL %] my $n=7; print $n [% END ; END %]" => "7" ok 3061 - Line 1357 "Foo \ Bar" => "Foo \ Bar" ok 3062 - Line 1358 "Foo \\ Bar" => "Foo \\ Bar" ok 3063 - Line 1359 "Foo \n Bar" => "Foo \n Bar" ok 3064 - Line 1360 "Foo \$a Bar" => "Foo $a Bar" ok 3065 - Line 1361 "Foo \\$a Bar" => "Foo \\7 Bar" ok 3066 - Line 1362 "Foo \\\$a Bar" => "Foo \\$a Bar" ok 3067 - Line 1363 "Foo $a.B Bar" => "Foo 7 Bar" ok 3068 - Line 1364 "Foo ${ a.B } Bar" => "Foo 7 Bar" ok 3069 - Line 1365 "Foo $a.b.c("hi") Bar" => "Foo Bar" ok 3070 - Line 1367 "Foo ${a.b.c("hi")} Bar" => "Foo Bar" ok 3071 - Line 1368 "Foo $a Bar $!a Baz" => "Foo 7 Bar 7 Baz" ok 3072 - Line 1369 "Foo $a Bar $!{a} Baz" => "Foo 7 Bar 7 Baz" ok 3073 - Line 1370 "Foo $a Bar $!a Baz" => "Foo 7 Bar 7 Baz" ok 3074 - Line 1371 "Foo $a Bar $!{a} Baz" => "Foo 7 Bar 7 Baz" ok 3075 - Line 1372 "Foo $a Bar $!a Baz" => "Foo $a Bar Baz" ok 3076 - Line 1373 "Foo ${a} Bar $!{a} Baz" => "Foo ${a} Bar Baz" ### ANYCASE / TRIM ################################## engine_option (stream) ok 3077 - Line 1378 "[% GET %]" => "" ok 3078 - Line 1379 "[% GET GET %]" => "ONE" ok 3079 - Line 1380 "[% get one %]" => "ONE" ok 3080 - Line 1381 "[% get %]" => "" ok 3081 - Line 1382 "[% get get %]" => "ONE" ok 3082 - Line 1384 "[% BLOCK foo %] # hi # [% END %][% PROCESS foo %]" => " # hi # " ok 3083 - Line 1385 "[% BLOCK foo %] # hi[% END %][% PROCESS foo %]" => " # hi" ok 3084 - Line 1386 "[% BLOCK foo %]hi # [% END %][% PROCESS foo %]" => "hi # " ok 3085 - Line 1387 "[% BLOCK foo %]hi[% nl %][% END %][% PROCESS foo %]" => "hi # " ok 3086 - Line 1388 "[% BLOCK foo %][% nl %]hi[% END %][% PROCESS foo %]" => " # hi" ok 3087 - Line 1389 "A[% TRY %] # hi # [% END %]" => "A # hi # " ok 3088 - Line 1391 "[% FOO %]" => "foo" ### V1DOLLAR ######################################## engine_option (stream) ok 3089 - Line 1396 "[% a %]|[% $a %]|[% ${ a } %]|[% ${ "a" } %]" => "A|bar|bar|A" ok 3090 - Line 1397 "[% a %]|[% $a %]|[% ${ a } %]|[% ${ "a" } %]" => "A|A|bar|A" ok 3091 - Line 1400 "[% a.b.c %]|[% $a.b.c %]|[% a.$b.c %]|[% ${ a.b.c } %]" => "Cb||CB|bar" ok 3092 - Line 1401 "[% a.b.c %]|[% $a.b.c %]|[% a.$b.c %]|[% ${ a.b.c } %]" => "Cb|Cb|Cb|bar" ok 3093 - Line 1403 "[% "$a" %]/$a/[% "${a}" %]/${a}" => "A/$a/A/${a}" ok 3094 - Line 1404 "[% "$a" %]/$a/[% "${a}" %]/${a}" => "A/$a/A/${a}" ok 3095 - Line 1405 "[% "$a" %]/$a/[% "${a}" %]/${a}" => "A/A/A/A" ok 3096 - Line 1406 "[% "$a" %]/$a/[% "${a}" %]/${a}" => "A/A/A/A" ok 3097 - Line 1408 "[% constants.a %]|[% $constants.a %]|[% constants.$a %]" => "A|A|A" ### V2PIPE / V2EQUALS ############################### engine_option (stream) ok 3098 - Line 1413 "[%- BLOCK a %]b is [% b %] # [% END %] # [%- PROCESS a b => 237 | repeat(2) %]" => "b is 237 # b is 237 # " ok 3099 - Line 1418 "[%- BLOCK a %]b is [% b %] # [% END %] # [%- PROCESS a b => 237 | repeat(2) %]" => "b is 237237 # " ok 3100 - Line 1422 "[% ('a' == 'b') || 0 %]" => "0" ok 3101 - Line 1423 "[% ('a' != 'b') || 0 %]" => "1" ok 3102 - Line 1424 "[% ('a' == 'b') || 0 %]" => "0" ok 3103 - Line 1425 "[% ('a' != 'b') || 0 %]" => "1" ok 3104 - Line 1426 "[% ('a' == 'b') || 0 %]" => "1" ok 3105 - Line 1427 "[% ('a' != 'b') || 0 %]" => "0" ok 3106 - Line 1428 "[% ('7' == '7.0') || 0 %]" => "0" ok 3107 - Line 1429 "[% ('7' == '7.0') || 0 %]" => "1" ok 3108 - Line 1430 "[% (7 == 7.0) || 0 %]" => "1" ok 3109 - Line 1431 "[% (7 == 7.0) || 0 %]" => "1" ### configuration ################################### engine_option (stream) ok 3110 - Line 1436 "[% a = 7 %]$a" => "7" ok 3111 - Line 1437 "[% a = 7 %]$a" => "7" ### PERL ############################################ engine_option (stream) ok 3112 - Line 1442 "[% TRY %][% PERL %][% END %][% CATCH ; error; END %]" => "perl error - EVAL_PERL not set" ok 3113 - Line 1443 "[% PERL %] print "[% one %]" [% END %]" => "ONE" ok 3114 - Line 1444 "[% PERL %] print $stash->get('one') [% END %]" => "ONE" ok 3115 - Line 1445 "[% PERL %] print $stash->set('a.b.c', 7) [% END %][% a.b.c %]" => "77" ok 3116 - Line 1446 "[% RAWPERL %]$output .= 'interesting'[% END %]" => "interesting" ### recursion prevention ############################ engine_option (stream) ok 3117 - Line 1451 "[% BLOCK foo %][% PROCESS bar %][% END %][% BLOCK bar %][% PROCESS foo %][% END %][% PROCESS foo %]" => "" ### META ############################################ engine_option (stream) ok 3118 - Line 1456 "[% template.name %]" => "input text" ok 3119 - Line 1457 "[% META foo = 'bar' %][% template.foo %]" => "bar" ok 3120 - Line 1458 "[% META name = 'bar' %][% template.name %]" => "bar" ok 3121 - Line 1459 "[% META foo = 'bar' %][% component.foo %]" => "bar" ok 3122 - Line 1460 "[% META foo = 'bar' %][% component = '' %][% component.foo %]|foo" => "|foo" ok 3123 - Line 1461 "[% META foo = 'bar' %][% template = '' %][% template.foo %]|foo" => "|foo" ### references ###################################### engine_option (stream) ok 3124 - Line 1466 "[% a=3; b=\a; b; a %]" => "33" ok 3125 - Line 1467 "[% a=3; b=\a; a=7; b; a %]" => "77" ok 3126 - Line 1469 "[% a={}; a.1=7; b=\a.1; b; a.1 %]" => "77" ok 3127 - Line 1470 "[% a={}; a.1=7; b=\a.20; a.20=7; b; a.20 %]" => "77" ok 3128 - Line 1472 "[% a=[]; a.1=7; b=\a.1; b; a.1 %]" => "77" ok 3129 - Line 1473 "[% a=[]; a.1=7; b=\a.20; a.20=7; b; a.20 %]" => "77" ok 3130 - Line 1475 "[% \a %]" => "CODE(0x7f8019a157e8)" ok 3131 - Line 1476 "[% b=\a; b %]" => "a sub []" ok 3132 - Line 1477 "[% b=\a(1); b %]" => "a sub [1]" ok 3133 - Line 1478 "[% b=\a; b(2) %]" => "a sub [2]" ok 3134 - Line 1479 "[% b=\a(1); b(2) %]" => "a sub [1 2]" ok 3135 - Line 1480 "[% f=\j.k; j.k=7; f %]" => "7" ok 3136 - Line 1482 "[% a = "a" ; f = {a=>"A",b=>"B"} ; foo = \f.$a ; foo %]" => "A" ok 3137 - Line 1483 "[% a = "a" ; f = {a=>"A",b=>"B"} ; foo = \f.$a ; a = "b" ; foo %]" => "A" ok 3138 - Line 1484 "[% a = "ab" ; f = "abcd"; foo = \f.replace(a, "-AB-") ; a = "cd"; foo %]" => "-AB-cd" ok 3139 - Line 1485 "[% a = "ab" ; f = "abcd"; foo = \f.replace(a, "-AB-").replace("-AB-", "*") ; a = "cd"; foo %]" => "*cd" ok 3140 - Line 1487 "[% a = "ab" ; f = "abcd"; foo = \f.replace(a, "-AB-") ; f = "ab"; foo %]" => "-AB-cd" ok 3141 - Line 1488 "[% a = "ab" ; f = "abcd"; foo = \f.replace(a, "-AB-").replace("-AB-", "*") ; f = "ab"; foo %]" => "*cd" ### reserved words ################################## engine_option (stream) ok 3142 - Line 1499 "[% GET %]" => "" ok 3143 - Line 1500 "[% GET GET %]" => "named_get" ok 3144 - Line 1501 "[% GET get %]" => "lower_named_get" ok 3145 - Line 1502 "[% GET ${'GET'} %]" => "bar" ok 3146 - Line 1504 "[% GET = 1 %][% GET GET %]" => "" ok 3147 - Line 1505 "[% SET GET = 1 %][% GET GET %]" => "1" ok 3148 - Line 1507 "[% GET $hold_get %]" => "named_get" ok 3149 - Line 1508 "[% GET $GET %]" => "value of named_get" ok 3150 - Line 1509 "[% BLOCK GET %]hi[% END %][% PROCESS GET %]" => "hi" ok 3151 - Line 1510 "[% BLOCK foo %]hi[% END %][% PROCESS foo a = GET %]" => "hi" ok 3152 - Line 1511 "[% BLOCK foo %]hi[% END %][% PROCESS foo GET = 1 %]" => "" ok 3153 - Line 1512 "[% BLOCK foo %]hi[% END %][% PROCESS foo IF GET %]" => "hi" ### embedded items ################################## engine_option (stream) ok 3154 - Line 1517 "[% " \" " %]" => " " " ok 3155 - Line 1518 "[% " \$foo " %]" => " $foo " ok 3156 - Line 1519 "[% " \${foo} " %]" => " ${foo} " ok 3157 - Line 1520 "[% " \n " %]" => " # " ok 3158 - Line 1521 "[% " \t " %]" => " " ok 3159 - Line 1522 "[% " \r " %]" => " " ok 3160 - Line 1524 "[% 'foo\'bar' %]" => "foo'bar" ok 3161 - Line 1525 "[% "foo\"bar" %]" => "foo"bar" ok 3162 - Line 1526 "[% qw(foo \)).1 %]" => ")" ok 3163 - Line 1527 "[% qw|foo \||.1 %]" => "|" ok 3164 - Line 1529 "[% ' \' ' %]" => " ' " ok 3165 - Line 1530 "[% ' \r ' %]" => " \r " ok 3166 - Line 1531 "[% ' \n ' %]" => " \n " ok 3167 - Line 1532 "[% ' \t ' %]" => " \t " ok 3168 - Line 1533 "[% ' $foo ' %]" => " $foo " ok 3169 - Line 1535 "[% A = "bar" ; ${ "A" } %]" => "bar" ok 3170 - Line 1536 "[% A = "bar" ; "(${ A })" %]" => "(bar)" ok 3171 - Line 1537 "[% A = "bar" ; ${ {a => "A"}.a } %]" => "bar" ok 3172 - Line 1538 "[% A = "bar" ; "(${ {a => "A"}.a })" %]" => "(A)" ok 3173 - Line 1539 "[% A = "bar" ; "(${ ${ {a => "A"}.a } })" %]" => "(bar)" ok 3174 - Line 1540 "[% A = "bar" %](${ {a => "A"}.a })" => "(A)" ok 3175 - Line 1541 "[% A = "bar" %](${ ${ {a => "A"}.a } })" => "(bar)" ok 3176 - Line 1543 "[% "[%" %]" => "[%" ok 3177 - Line 1544 "[% "%]" %]" => "%]" ok 3178 - Line 1545 "[% a = "[% %]" %][% a %]" => "[% %]" ok 3179 - Line 1546 "[% qw([% 1 + 2 %]).join %]" => "[% 1 + 2 %]" ### STRICT ########################################## engine_option (stream) ok 3180 - Line 1550 "[% TRY; foo; CATCH; error; END %]" => "var.undef error - undefined variable: foo in input text" ok 3181 - Line 1551 "[% TRY; foo.bar(1); CATCH; error; END %]" => "var.undef error - undefined variable: foo.bar(1) in input text" ok 3182 - Line 1552 "[% TRY; 1 IF foo.bar.baz; CATCH; error; END %]" => "var.undef error - undefined variable: foo.bar.baz in input text" ok 3183 - Line 1554 "[% foo.bar() %]ok" => "ok" ok 3184 - Line 1555 "[% foo.baz() %]ok" => "" ### EVALUATE ######################################## engine_option (stream) ok 3185 - Line 1561 "[% foo | eval %]" => "baz" ok 3186 - Line 1563 "[% "[% 1 + 2 %]" | eval %]" => "3" ok 3187 - Line 1564 "[% qw([% 1 + 2 %]).join.eval %]" => "3" ok 3188 - Line 1566 "[% f = ">[% TRY; f.eval ; CATCH; 'caught' ; END %]"; f.eval %]" => ">>>>>caught" ok 3189 - Line 1567 "[% f = ">[% TRY; f.eval ; CATCH; 'caught' ; END %]"; f.eval; f.eval %]" => ">>>>>caught>>>>>caught" ok 3190 - Line 1568 "[% f = ">[% TRY; f.eval ; CATCH; 'foo' ; END %]"; f.eval;f.eval %]" => ">>foo>>foo" ok 3191 - Line 1569 "[% '\#set($foo = 12)'|eval(syntax => 'velocity') %]|[% foo %]" => "|12" ok 3192 - Line 1571 "[% f = ">[% TRY; f.eval ; CATCH; 'caught' ; END %]"; EVALUATE f %]" => ">>>>>caught" ok 3193 - Line 1572 "[% f = ">[% TRY; f.eval ; CATCH; 'foo' ; END %]"; EVALUATE f; EVALUATE f %]" => ">>foo>>foo" ok 3194 - Line 1573 "[% EVALUATE '\#set($foo = 12)' syntax => 'velocity' %]|[% foo %]" => "|12" ok 3195 - Line 1575 "[% TRY; '[% bar %]'.eval(STRICT => 1); CATCH; error; END %]" => "var.undef error - undefined variable: bar in input text" ok 3196 - Line 1576 "[% TRY; CONFIG STRICT => 1; '[% bar %]'.eval(STRICT => 0); CATCH; error; END %]" => "eval_strict error - Cannot disable STRICT once it is enabled" ok 3197 - Line 1577 "[% TRY; '[% bar %]'.eval(STRICT => 1); CATCH; error.type; END; bing %] - ok" => "var.undef - ok" ### DUMP ############################################ engine_option (stream) ok 3198 - Line 1585 "[% DUMP a %]" => "DUMP: File "input text" line 1 # a = undef; # " ok 3199 - Line 1586 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 a = undef;" ok 3200 - Line 1587 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 a = 's';" ok 3201 - Line 1588 "[% # p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 2 a = 's';" ok 3202 - Line 1589 "[% p = DUMP a, b; p.collapse %]" => "DUMP: File "input text" line 1 a, b = [ 's', undef ];" ok 3203 - Line 1590 "[% p = DUMP a Useqq => 'b'; p.collapse %]" => "DUMP: File "input text" line 1 a Useqq => 'b' = [ 's', { 'Useqq' => 'b' } ];" ok 3204 - Line 1591 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 a = "s";" ok 3205 - Line 1592 "[% p = DUMP a; p.collapse %]|foo" => "|foo" ok 3206 - Line 1593 "[% p = DUMP _a, b; p.collapse %]" => "DUMP: File "input text" line 1 _a, b = [ undef, 'c' ];" ok 3207 - Line 1594 "[% p = DUMP {a => 'b'}; p.collapse %]" => "DUMP: File "input text" line 1 {a => 'b'} = { 'a' => 'b' };" ok 3208 - Line 1595 "[% p = DUMP _a; p.collapse %]" => "DUMP: File "input text" line 1 _a = undef;" ok 3209 - Line 1596 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 a = { 'b' => 'c' };" ok 3210 - Line 1597 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 a = {};" ok 3211 - Line 1598 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 a = {};" ok 3212 - Line 1599 "[% p = DUMP a; p.collapse %]" => "DUMP: File "input text" line 1 Dump(7)" ok 3213 - Line 1600 "[% p = DUMP a; p.collapse %]" => "a = 's';" ok 3214 - Line 1601 "[% p = DUMP a; p.collapse %]" => "
a = 's'; 
" ok 3215 - Line 1603 "[% p = DUMP a; p.collapse %]" => "
a = 's'; 
" ok 3216 - Line 1604 "[% p = DUMP a; p.collapse %]" => "a = 's';" ok 3217 - Line 1606 "[% SET global; p = DUMP; p.collapse %]" => "DUMP: File "input text" line 1 EntireStash = { 'a' => 'b', 'global' => undef };" ok 3218 - Line 1607 "[% SET global; p = DUMP; p.collapse %]" => "DUMP: File "input text" line 1 EntireStash = { 'a' => 'b', 'global' => undef };" ok 3219 - Line 1608 "[% SET global; p = DUMP; p.collapse %]" => "DUMP: File "input text" line 1" ### SYNTAX ########################################## engine_option (stream) ok 3220 - Line 1615 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "" ok 3221 - Line 1616 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "b is 237237" ok 3222 - Line 1617 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "b is 237237" ok 3223 - Line 1618 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "b is 237237" ok 3224 - Line 1619 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "b is 237b is 237" ok 3225 - Line 1620 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "b is 237b is 237" ok 3226 - Line 1621 "[%- BLOCK a %]b is [% b %][% END %][% PROCESS a b => 237 | repeat(2) %]" => "b is 237b is 237" ok 3227 - Line 1624 "[% a %]|[% $a %]|[% ${ a } %]|[% ${ "a" } %]" => "A|bar|bar|A" ok 3228 - Line 1625 "[% a %]|[% $a %]|[% ${ a } %]|[% ${ "a" } %]" => "A|bar|bar|A" ok 3229 - Line 1626 "[% a %]|[% $a %]|[% ${ a } %]|[% ${ "a" } %]" => "A|A|bar|A" ok 3230 - Line 1628 "" => "FOO" ok 3231 - Line 1629 "" => "7 8" ok 3232 - Line 1630 "" => "1" ok 3233 - Line 1631 "" => "1" ok 3234 - Line 1632 "d" => "" ok 3235 - Line 1634 "[% ""|eval(syntax => 'hte') %] = [% 6 %]" => "6 = 6" ok 3236 - Line 1635 "[% ""|eval(syntax => 'ht') %] = [% 6 %]" => "" ok 3237 - Line 1636 "[% ""|eval(syntax => 'ht') %] = [% 12 %]" => "12 = 12" ### CONFIG ########################################## engine_option (stream) ok 3238 - Line 1644 "[% CONFIG ANYCASE => 1 %][% get 234 %]" => "234" ok 3239 - Line 1645 "[% CONFIG anycase => 1 %][% get 234 %]" => "234" ok 3240 - Line 1646 "[% CONFIG PRE_CHOMP => '-' %] # [% 234 %]" => "234" ok 3241 - Line 1647 "[% CONFIG POST_CHOMP => '-' %][% 234 %] # " => "234" ok 3242 - Line 1648 "[% CONFIG INTERPOLATE => 1 %]${ 234 }" => "234" ok 3243 - Line 1649 "[% CONFIG V1DOLLAR => 1 %][% a = 234 %][% $a %]" => "234" ok 3244 - Line 1650 "[% CONFIG V2PIPE => 1 %][% BLOCK a %]b is [% b %][% END %][% PROCESS a b => 234 | repeat(2) %]" => "b is 234b is 234" ok 3245 - Line 1651 "[% CONFIG V2EQUALS => 1 %][% ('7' == '7.0') || 0 %]" => "0" ok 3246 - Line 1652 "[% CONFIG V2EQUALS => 0 %][% ('7' == '7.0') || 0 %]" => "1" ok 3247 - Line 1654 "[% CONFIG BOGUS => 2 %]bar" => "" ok 3248 - Line 1656 "[% CONFIG ANYCASE %]|[% CONFIG ANYCASE => 1 %][% CONFIG ANYCASE %]" => "CONFIG ANYCASE = undef|CONFIG ANYCASE = 1" ok 3249 - Line 1657 "[% CONFIG ANYCASE %]|[% CONFIG ANYCASE => 1 %][% CONFIG ANYCASE %]" => "CONFIG ANYCASE = undef|CONFIG ANYCASE = 1" ok 3250 - Line 1659 "[% "[% GET 1+2+3 %]" | eval %] = [% get 6 %]" => "" ok 3251 - Line 1660 "[% CONFIG ANYCASE => 1 %][% get 6 %]" => "6" ok 3252 - Line 1661 "[% CONFIG ANYCASE => 1 %][% "[% get 1+2+3 %]" | eval %] = [% get 6 %]" => "6 = 6" ok 3253 - Line 1662 "[% "[% CONFIG ANYCASE => 1 %][% get 1+2+3 %]" | eval %] = [% get 6 %]" => "" ok 3254 - Line 1663 "[% "[% CONFIG ANYCASE => 1 %][% get 1+2+3 %]" | eval %] = [% GET 6 %]" => "6 = 6" ok 3255 - Line 1664 "[% CONFIG SYNTAX => 'hte' %][% ""|eval %] = [% 6 %]" => "6 = 6" ok 3256 - Line 1665 "[% "[% get 1+2+3 %]" | eval(ANYCASE => 1) %] = [% GET 6 %]" => "6 = 6" ok 3257 - Line 1667 "[% CONFIG DUMP %]|[% CONFIG DUMP => 0 %][% DUMP %]bar" => "CONFIG DUMP = undef|bar" ok 3258 - Line 1668 "[% CONFIG DUMP => {Useqq=>1, header=>0, html=>0} %][% DUMP 'foo' %]" => "'foo' = "foo"; # " ok 3259 - Line 1669 "[% CONFIG VMETHOD_FUNCTIONS => 0 %][% sprintf('%d %d', 7, 8) %] d" => " d" ok 3260 - Line 1670 "[% TRY; foo; CONFIG STRICT => 1; bar; CATCH; error; END %]" => "var.undef error - undefined variable: bar in input text" ok 3261 - Line 1671 "[% TRY; foo; CONFIG STRICT => 1; CONFIG STRICT => 0; bar; CATCH; error; END %]" => "config.strict error - Cannot disable STRICT once it is enabled" ok 3262 - Line 1672 "[% BLOCK foo; CONFIG STRICT => 1; baz; END; TRY; bam; PROCESS foo; bar; CATCH; error.type; END; bing %] - ok" => "var.undef - ok" ok 3263 - Line 1674 "[% CONFIG AUTO_FILTER => "html"; foo %]" => "&" ### DONE ############################################ engine_option (stream) ok t/10_tt_includes.t ...... 1..351 ok 1 - use Template::Alloy; ok 2 - Got a test dir up and running ok 3 - Got a nested test dir up and running ### INSERT ########################################## engine_option (normal) ok 4 - Line 127 "([% INSERT bar.tt %])" => "([% blue %]BAR)" ok 5 - Line 128 "([% SET file = 'bar.tt' %][% INSERT $file %])" => "([% blue %]BAR)" ok 6 - Line 129 "([% SET file = 'bar.tt' %][% INSERT ${file} %])" => "([% blue %]BAR)" ok 7 - Line 130 "([% SET file = 'bar.tt' %][% INSERT "$file" %])" => "([% blue %]BAR)" ok 8 - Line 131 "([% SET file = 'bar' %][% INSERT "${file}.tt" %])" => "([% blue %]BAR)" ### INCLUDE ######################################### engine_option (normal) ok 9 - Line 136 "([% INCLUDE bar.tt %])" => "(BAR)" ok 10 - Line 137 "[% PROCESS foo.tt %]" => "(BAR)" ok 11 - Line 138 "[% PROCESS meta.tt %]" => "Metafoo() Metabar(meta.tt)" ok 12 - Line 139 "[% META foo = 'string'; PROCESS meta.tt %]" => "Metafoo() Metabar(meta.tt)" ok 13 - Line 140 "[% PROCESS meta.tt %][% template.bar %]" => "Metafoo() Metabar(meta.tt)" ok 14 - Line 141 "[% META foo = 'meta'; PROCESS foo.tt %]" => "(metaBAR)" ok 15 - Line 142 "([% SET file = 'bar.tt' %][% INCLUDE $file %])" => "(BAR)" ok 16 - Line 143 "([% SET file = 'bar.tt' %][% INCLUDE ${file} %])" => "(BAR)" ok 17 - Line 144 "([% SET file = 'bar.tt' %][% INCLUDE "$file" %])" => "(BAR)" ok 18 - Line 145 "([% SET file = 'bar' %][% INCLUDE "${file}.tt" %])" => "(BAR)" ok 19 - Line 147 "([% INCLUDE baz.tt %])" => "(42)" ok 20 - Line 148 "([% INCLUDE baz.tt %])[% baz %]" => "(42)" ok 21 - Line 149 "[% SET baz = 21 %]([% INCLUDE baz.tt %])[% baz %]" => "(42)21" ok 22 - Line 151 "([% META blam = 5; INCLUDE blocks.tt %])" => "()" ok 23 - Line 152 "([% META blam = 5; INCLUDE blocks.tt %])([% PROCESS foo text => 'bar' %])" => "" ok 24 - Line 153 "([% META blam = 5; INCLUDE blocks.tt %])([% foo_m('hey') %])" => "()()" ok 25 - Line 154 "([% META blam = 5; INCLUDE blocks.tt/foo text => 'bar' %])" => "" ok 26 - Line 155 "([% META blam = 5; INCLUDE blocks.tt/bar %])" => "(bar)" ok 27 - Line 156 "([% META blam = 5; INCLUDE blocks.tt/foo text => 'bar' %])" => "" ### PROCESS ######################################### engine_option (normal) ok 28 - Line 161 "([% PROCESS bar.tt %])" => "(BAR)" ok 29 - Line 162 "[% PROCESS foo.tt %]" => "(BAR)" ok 30 - Line 163 "[% PROCESS meta.tt %]" => "Metafoo() Metabar(meta.tt)" ok 31 - Line 164 "[% META foo = 'string'; PROCESS meta.tt %]" => "Metafoo() Metabar(meta.tt)" ok 32 - Line 165 "[% PROCESS meta.tt %][% template.bar %]" => "Metafoo() Metabar(meta.tt)" ok 33 - Line 166 "[% META foo = 'meta'; PROCESS foo.tt %]" => "(metaBAR)" ok 34 - Line 167 "([% SET file = 'bar.tt' %][% PROCESS $file %])" => "(BAR)" ok 35 - Line 168 "([% SET file = 'bar.tt' %][% PROCESS ${file} %])" => "(BAR)" ok 36 - Line 169 "([% SET file = 'bar.tt' %][% PROCESS "$file" %])" => "(BAR)" ok 37 - Line 170 "([% SET file = 'bar' %][% PROCESS "${file}.tt" %])" => "(BAR)" ok 38 - Line 172 "([% PROCESS baz.tt %])" => "(42)" ok 39 - Line 173 "([% PROCESS baz.tt %])[% baz %]" => "(42)42" ok 40 - Line 174 "[% SET baz = 21 %]([% PROCESS baz.tt %])[% baz %]" => "(42)42" ok 41 - Line 176 "[% PROCESS nested/foo.tt %]" => "(Nested foo BAR)" ok 42 - Line 177 "[% PROCESS nested/foo.tt %]" => "(Nested foo Nested bar)" ok 43 - Line 178 "[% PROCESS nested/foo.tt %]" => "(Nested foo BAR)" ok 44 - Line 179 "[% CONFIG ADD_LOCAL_PATH => 1 ; PROCESS nested/foo.tt %]" => "(Nested foo Nested bar)" ok 45 - Line 181 "[% PROCESS nested/foo2.tt %]" => "" ok 46 - Line 182 "[% PROCESS nested/foo2.tt %]" => "(Nested foo Nested bar2)" ok 47 - Line 183 "[% PROCESS nested/foo2.tt %]" => "(Nested foo Nested bar2)" ok 48 - Line 184 "[% CONFIG ADD_LOCAL_PATH => 1 ; PROCESS nested/foo2.tt %]" => "(Nested foo Nested bar2)" ok 49 - Line 186 "([% META blam = 5; PROCESS blocks.tt %])" => "()" ok 50 - Line 187 "([% META blam = 5; PROCESS blocks.tt %])([% PROCESS foo text => 'bar' %])" => "()(I am bar - 5bar)" ok 51 - Line 188 "([% META blam = 5; PROCESS blocks.tt %])([% foo_m('hey') %])" => "()(I am hey - 5)" ok 52 - Line 189 "([% META blam = 5; PROCESS blocks.tt/foo text => 'bar' %])" => "" ok 53 - Line 190 "([% META blam = 5; PROCESS blocks.tt/bar %])" => "(bar)" ok 54 - Line 191 "([% META blam = 5; PROCESS blocks.tt/foo text => 'bar' %])" => "" ### WRAPPER ######################################### engine_option (normal) ok 55 - Line 196 "([% WRAPPER wrap.tt %])" => "" ok 56 - Line 197 "([% WRAPPER wrap.tt %] one [% END %])" => "(Hi one there)" ok 57 - Line 198 "([% WRAPPER wrap.tt %] ([% baz %]) [% END %])" => "(Hi () there)" ok 58 - Line 199 "([% WRAPPER wrap.tt %] one [% END %])" => "(HiBAZ one there)" ok 59 - Line 200 "([% WRAPPER wrap.tt %] ([% baz; baz='-local' %]) [% END %][% baz %])" => "(Hi-local () there-local)" ok 60 - Line 201 "([% WRAPPER wrap.tt %][% META foo='BLAM' %] [% END %])" => "(HiBLAM there)" ### CONFIG PRE_PROCESS ############################## engine_option (normal) ok 61 - Line 206 "Foo" => "BARFoo" ok 62 - Line 207 "Foo" => "BARFoo" ok 63 - Line 208 "Foo" => "(BAR)BARFoo" ok 64 - Line 209 "Foo" => "BlueBARFoo" ok 65 - Line 210 "Foo[% blue='Blue' %]" => "BARFoo" ok 66 - Line 211 "Foo[% META foo='meta' %]" => "(metaBAR)Foo" ok 67 - Line 212 "([% WRAPPER wrap.tt %] one [% END %])" => "BAR(Hi one there)" ok 68 - Line 214 "Foo" => "<>Foo" ### CONFIG POST_PROCESS ############################# engine_option (normal) ok 69 - Line 219 "Foo" => "FooBAR" ok 70 - Line 220 "Foo" => "FooBAR" ok 71 - Line 221 "Foo" => "Foo(BAR)BAR" ok 72 - Line 222 "Foo" => "FooBlueBAR" ok 73 - Line 223 "Foo[% blue='Blue' %]" => "FooBlueBAR" ok 74 - Line 224 "Foo[% META foo='meta' %]" => "Foo(metaBAR)" ok 75 - Line 225 "([% WRAPPER wrap.tt %] one [% END %])" => "(Hi one there)BAR" ok 76 - Line 227 "Foo" => "Foo<>" ### CONFIG PROCESS ################################## engine_option (normal) ok 77 - Line 232 "Foo" => "BAR" ok 78 - Line 233 "Foo" => "BAR" ok 79 - Line 234 "Foo" => "(BAR)BAR" ok 80 - Line 235 "Foo" => "BlueBAR" ok 81 - Line 236 "Foo[% META foo='meta' %]" => "(metaBAR)" ok 82 - Line 237 "Foo[% META foo='meta' %]" => "BAR(metaBAR)" ok 83 - Line 238 "Foo[% META foo='meta' %]" => "(metaBAR)BAR" ok 84 - Line 240 "Foo" => "<>" ### CONFIG WRAPPER ################################## engine_option (normal) ok 85 - Line 245 " one " => "Hi one there" ok 86 - Line 246 " one " => "Hi one there" ok 87 - Line 247 " one " => "HiwrapHi one therethere" ok 88 - Line 248 " ([% baz %]) " => "Hi () there" ok 89 - Line 249 " one " => "HiBAZ one there" ok 90 - Line 250 " ([% baz; baz='-local' %]) " => "Hi-local () there" ok 91 - Line 251 "[% META foo='BLAM' %] " => "HiBLAM there" ok 92 - Line 253 " one " => "BARHi one there" ok 93 - Line 254 " one " => "HiBARthere" ok 94 - Line 255 " one " => "Hi one thereBAR" ok 95 - Line 257 "Foo" => "<>" ### CONFIG ERRORS ################################### engine_option (normal) ok 96 - Line 262 "[% THROW foo 'bar' %]" => "Error (foo) - (bar)" ok 97 - Line 263 "[% THROW foo 'bar' %]" => "Error (foo) - (bar)" ok 98 - Line 264 "[% THROW foo 'bar' %]" => "Error (foo) - (bar)" ok 99 - Line 265 "[% THROW foo 'bar' %]" => "Error (foo) - (bar)" ok 100 - Line 266 "[% THROW foo 'bar' %]" => "Error2 (foo) - (bar)" ok 101 - Line 267 "[% THROW foo.baz 'bar' %]" => "Error2 (foo.baz) - (bar)" ok 102 - Line 268 "[% THROW foo.baz 'bar' %]" => "Error2 (foo.baz) - (bar)" ok 103 - Line 269 "[% THROW foo 'bar' %]" => "Error (foo) - (bar)" ok 104 - Line 270 "[% THROW foo.baz 'bar' %]" => "Error2 (foo.baz) - (bar)" ok 105 - Line 272 "[% THROW foo 'bar' %]" => "BARError (foo) - (bar)" ok 106 - Line 273 "[% THROW foo 'bar' %]" => "Error (bing) - (blang)" ok 107 - Line 274 "[% THROW foo 'bar' %]" => "Error (bing) - (blang)" ok 108 - Line 276 "[% THROW foo 'bar' %]" => "Error (foo) - (bar)BAR" ok 109 - Line 277 "[% THROW foo 'bar' %]" => "HiError (foo) - (bar)there" ok 110 - Line 279 "(outer)[% PROCESS 'die.tt' %]" => "Error (bing) - (blang)" ok 111 - Line 281 "(outer)[% TRY %][% PROCESS 'die.tt' %][% CATCH %] [% END %]" => "(outer) " ok 112 - Line 283 " one " => "" ok 113 - Line 284 " one " => "" ok 114 - Line 285 " one " => "" ### CONFIG and DUMP ################################# engine_option (normal) ok 115 - Line 290 "[% CONFIG DUMP => {html => 0}; DUMP foo; PROCESS config.tt; DUMP foo %]" => "DUMP: File "input text" line 1 # foo = 'FOO'; # DUMP: File "config.tt" line 1
foo = 'FOO';
# 
DUMP: File "input text" line 1 # foo = 'FOO'; # " ok 116 - Line 297 "[% PROCESS 'config2.tt' %]" => "DUMP: File "config2.tt/nested" line 1 # foo = 'FOO'; # " ### NOT FOUND CACHE ################################# engine_option (normal) ok 117 - Line 304 "[% BLOCK foo; TRY; PROCESS blurty.tt; CATCH %]([% error.type %])([% error.info %]) # [% END; END; PROCESS foo; PROCESS foo %]" => "(file)(blurty.tt: not found) # (file)(blurty.tt: not found (cached)) # " ok 118 - Line 305 "[% BLOCK foo; TRY; PROCESS blurty.tt; CATCH %]([% error.type %])([% error.info %]) # [% END; END; PROCESS foo; PROCESS foo %]" => "(file)(blurty.tt: not found) # (file)(blurty.tt: not found) # " ok 119 - Line 306 "[% BLOCK foo; TRY; PROCESS blurty.tt; CATCH %]([% error.type %])([% error.info %]) # [% END; END; PROCESS foo; PROCESS foo %]" => "(file)(blurty.tt: not found) # (file)(blurty.tt: not found) # " ### DONE ############################################ engine_option (normal) ### INSERT ########################################## engine_option (compile_perl) ok 120 - Line 127 "([% INSERT bar.tt %])" => "([% blue %]BAR)" ok 121 - Line 128 "([% SET file = 'bar.tt' %][% INSERT $file %])" => "([% blue %]BAR)" ok 122 - Line 129 "([% SET file = 'bar.tt' %][% INSERT ${file} %])" => "([% blue %]BAR)" ok 123 - Line 130 "([% SET file = 'bar.tt' %][% INSERT "$file" %])" => "([% blue %]BAR)" ok 124 - Line 131 "([% SET file = 'bar' %][% INSERT "${file}.tt" %])" => "([% blue %]BAR)" ### INCLUDE ######################################### engine_option (compile_perl) ok 125 - Line 136 "([% INCLUDE bar.tt %])" => "(BAR)" ok 126 - Line 137 "[% PROCESS foo.tt %]" => "(BAR)" ok 127 - Line 138 "[% PROCESS meta.tt %]" => "Metafoo() Metabar(meta.tt)" ok 128 - Line 139 "[% META foo = 'string'; PROCESS meta.tt %]" => "Metafoo() Metabar(meta.tt)" ok 129 - Line 140 "[% PROCESS meta.tt %][% template.bar %]" => "Metafoo() Metabar(meta.tt)" ok 130 - Line 141 "[% META foo = 'meta'; PROCESS foo.tt %]" => "(metaBAR)" ok 131 - Line 142 "([% SET file = 'bar.tt' %][% INCLUDE $file %])" => "(BAR)" ok 132 - Line 143 "([% SET file = 'bar.tt' %][% INCLUDE ${file} %])" => "(BAR)" ok 133 - Line 144 "([% SET file = 'bar.tt' %][% INCLUDE "$file" %])" => "(BAR)" ok 134 - Line 145 "([% SET file = 'bar' %][% INCLUDE "${file}.tt" %])" => "(BAR)" ok 135 - Line 147 "([% INCLUDE baz.tt %])" => "(42)" ok 136 - Line 148 "([% INCLUDE baz.tt %])[% baz %]" => "(42)" ok 137 - Line 149 "[% SET baz = 21 %]([% INCLUDE baz.tt %])[% baz %]" => "(42)21" ok 138 - Line 151 "([% META blam = 5; INCLUDE blocks.tt %])" => "()" ok 139 - Line 152 "([% META blam = 5; INCLUDE blocks.tt %])([% PROCESS foo text => 'bar' %])" => "" ok 140 - Line 153 "([% META blam = 5; INCLUDE blocks.tt %])([% foo_m('hey') %])" => "()()" ok 141 - Line 154 "([% META blam = 5; INCLUDE blocks.tt/foo text => 'bar' %])" => "" ok 142 - Line 155 "([% META blam = 5; INCLUDE blocks.tt/bar %])" => "(bar)" ok 143 - Line 156 "([% META blam = 5; INCLUDE blocks.tt/foo text => 'bar' %])" => "" ### PROCESS ######################################### engine_option (compile_perl) ok 144 - Line 161 "([% PROCESS bar.tt %])" => "(BAR)" ok 145 - Line 162 "[% PROCESS foo.tt %]" => "(BAR)" ok 146 - Line 163 "[% PROCESS meta.tt %]" => "Metafoo() Metabar(meta.tt)" ok 147 - Line 164 "[% META foo = 'string'; PROCESS meta.tt %]" => "Metafoo() Metabar(meta.tt)" ok 148 - Line 165 "[% PROCESS meta.tt %][% template.bar %]" => "Metafoo() Metabar(meta.tt)" ok 149 - Line 166 "[% META foo = 'meta'; PROCESS foo.tt %]" => "(metaBAR)" ok 150 - Line 167 "([% SET file = 'bar.tt' %][% PROCESS $file %])" => "(BAR)" ok 151 - Line 168 "([% SET file = 'bar.tt' %][% PROCESS ${file} %])" => "(BAR)" ok 152 - Line 169 "([% SET file = 'bar.tt' %][% PROCESS "$file" %])" => "(BAR)" ok 153 - Line 170 "([% SET file = 'bar' %][% PROCESS "${file}.tt" %])" => "(BAR)" ok 154 - Line 172 "([% PROCESS baz.tt %])" => "(42)" ok 155 - Line 173 "([% PROCESS baz.tt %])[% baz %]" => "(42)42" ok 156 - Line 174 "[% SET baz = 21 %]([% PROCESS baz.tt %])[% baz %]" => "(42)42" ok 157 - Line 176 "[% PROCESS nested/foo.tt %]" => "(Nested foo BAR)" ok 158 - Line 177 "[% PROCESS nested/foo.tt %]" => "(Nested foo Nested bar)" ok 159 - Line 178 "[% PROCESS nested/foo.tt %]" => "(Nested foo BAR)" ok 160 - Line 179 "[% CONFIG ADD_LOCAL_PATH => 1 ; PROCESS nested/foo.tt %]" => "(Nested foo Nested bar)" ok 161 - Line 181 "[% PROCESS nested/foo2.tt %]" => "" ok 162 - Line 182 "[% PROCESS nested/foo2.tt %]" => "(Nested foo Nested bar2)" ok 163 - Line 183 "[% PROCESS nested/foo2.tt %]" => "(Nested foo Nested bar2)" ok 164 - Line 184 "[% CONFIG ADD_LOCAL_PATH => 1 ; PROCESS nested/foo2.tt %]" => "(Nested foo Nested bar2)" ok 165 - Line 186 "([% META blam = 5; PROCESS blocks.tt %])" => "()" ok 166 - Line 187 "([% META blam = 5; PROCESS blocks.tt %])([% PROCESS foo text => 'bar' %])" => "()(I am bar - 5bar)" ok 167 - Line 188 "([% META blam = 5; PROCESS blocks.tt %])([% foo_m('hey') %])" => "()(I am hey - 5)" ok 168 - Line 189 "([% META blam = 5; PROCESS blocks.tt/foo text => 'bar' %])" => "" ok 169 - Line 190 "([% META blam = 5; PROCESS blocks.tt/bar %])" => "(bar)" ok 170 - Line 191 "([% META blam = 5; PROCESS blocks.tt/foo text => 'bar' %])" => "" ### WRAPPER ######################################### engine_option (compile_perl) ok 171 - Line 196 "([% WRAPPER wrap.tt %])" => "" ok 172 - Line 197 "([% WRAPPER wrap.tt %] one [% END %])" => "(Hi one there)" ok 173 - Line 198 "([% WRAPPER wrap.tt %] ([% baz %]) [% END %])" => "(Hi () there)" ok 174 - Line 199 "([% WRAPPER wrap.tt %] one [% END %])" => "(HiBAZ one there)" ok 175 - Line 200 "([% WRAPPER wrap.tt %] ([% baz; baz='-local' %]) [% END %][% baz %])" => "(Hi-local () there-local)" ok 176 - Line 201 "([% WRAPPER wrap.tt %][% META foo='BLAM' %] [% END %])" => "(HiBLAM there)" ### CONFIG PRE_PROCESS ############################## engine_option (compile_perl) ok 177 - Line 206 "Foo" => "BARFoo" ok 178 - Line 207 "Foo" => "BARFoo" ok 179 - Line 208 "Foo" => "(BAR)BARFoo" ok 180 - Line 209 "Foo" => "BlueBARFoo" ok 181 - Line 210 "Foo[% blue='Blue' %]" => "BARFoo" ok 182 - Line 211 "Foo[% META foo='meta' %]" => "(metaBAR)Foo" ok 183 - Line 212 "([% WRAPPER wrap.tt %] one [% END %])" => "BAR(Hi one there)" ok 184 - Line 214 "Foo" => "<>Foo" ### CONFIG POST_PROCESS ############################# engine_option (compile_perl) ok 185 - Line 219 "Foo" => "FooBAR" ok 186 - Line 220 "Foo" => "FooBAR" ok 187 - Line 221 "Foo" => "Foo(BAR)BAR" ok 188 - Line 222 "Foo" => "FooBlueBAR" ok 189 - Line 223 "Foo[% blue='Blue' %]" => "FooBlueBAR" ok 190 - Line 224 "Foo[% META foo='meta' %]" => "Foo(metaBAR)" ok 191 - Line 225 "([% WRAPPER wrap.tt %] one [% END %])" => "(Hi one there)BAR" ok 192 - Line 227 "Foo" => "Foo<>" ### CONFIG PROCESS ################################## engine_option (compile_perl) ok 193 - Line 232 "Foo" => "BAR" ok 194 - Line 233 "Foo" => "BAR" ok 195 - Line 234 "Foo" => "(BAR)BAR" ok 196 - Line 235 "Foo" => "BlueBAR" ok 197 - Line 236 "Foo[% META foo='meta' %]" => "(metaBAR)" ok 198 - Line 237 "Foo[% META foo='meta' %]" => "BAR(metaBAR)" ok 199 - Line 238 "Foo[% META foo='meta' %]" => "(metaBAR)BAR" ok 200 - Line 240 "Foo" => "<>" ### CONFIG WRAPPER ################################## engine_option (compile_perl) ok 201 - Line 245 " one " => "Hi one there" ok 202 - Line 246 " one " => "Hi one there" ok 203 - Line 247 " one " => "HiwrapHi one therethere" ok 204 - Line 248 " ([% baz %]) " => "Hi () there" ok 205 - Line 249 " one " => "HiBAZ one there" ok 206 - Line 250 " ([% baz; baz='-local' %]) " => "Hi-local () there" ok 207 - Line 251 "[% META foo='BLAM' %] " => "HiBLAM there" ok 208 - Line 253 " one " => "BARHi one there" ok 209 - Line 254 " one " => "HiBARthere" ok 210 - Line 255 " one " => "Hi one thereBAR" ok 211 - Line 257 "Foo" => "<>" ### CONFIG ERRORS ################################### engine_option (compile_perl) ok 212 - Line 262 "[% THROW foo 'bar' %]" => "Error (foo) - (bar)" ok 213 - Line 263 "[% THROW foo 'bar' %]" => "Error (foo) - (bar)" ok 214 - Line 264 "[% THROW foo 'bar' %]" => "Error (foo) - (bar)" ok 215 - Line 265 "[% THROW foo 'bar' %]" => "Error (foo) - (bar)" ok 216 - Line 266 "[% THROW foo 'bar' %]" => "Error2 (foo) - (bar)" ok 217 - Line 267 "[% THROW foo.baz 'bar' %]" => "Error2 (foo.baz) - (bar)" ok 218 - Line 268 "[% THROW foo.baz 'bar' %]" => "Error2 (foo.baz) - (bar)" ok 219 - Line 269 "[% THROW foo 'bar' %]" => "Error (foo) - (bar)" ok 220 - Line 270 "[% THROW foo.baz 'bar' %]" => "Error2 (foo.baz) - (bar)" ok 221 - Line 272 "[% THROW foo 'bar' %]" => "BARError (foo) - (bar)" ok 222 - Line 273 "[% THROW foo 'bar' %]" => "Error (bing) - (blang)" ok 223 - Line 274 "[% THROW foo 'bar' %]" => "Error (bing) - (blang)" ok 224 - Line 276 "[% THROW foo 'bar' %]" => "Error (foo) - (bar)BAR" ok 225 - Line 277 "[% THROW foo 'bar' %]" => "HiError (foo) - (bar)there" ok 226 - Line 279 "(outer)[% PROCESS 'die.tt' %]" => "Error (bing) - (blang)" ok 227 - Line 281 "(outer)[% TRY %][% PROCESS 'die.tt' %][% CATCH %] [% END %]" => "(outer) " ok 228 - Line 283 " one " => "" ok 229 - Line 284 " one " => "" ok 230 - Line 285 " one " => "" ### CONFIG and DUMP ################################# engine_option (compile_perl) ok 231 - Line 290 "[% CONFIG DUMP => {html => 0}; DUMP foo; PROCESS config.tt; DUMP foo %]" => "DUMP: File "input text" line 1 # foo = 'FOO'; # DUMP: File "config.tt" line 1
foo = 'FOO';
# 
DUMP: File "input text" line 1 # foo = 'FOO'; # " ok 232 - Line 297 "[% PROCESS 'config2.tt' %]" => "DUMP: File "config2.tt/nested" line 1 # foo = 'FOO'; # " ### NOT FOUND CACHE ################################# engine_option (compile_perl) ok 233 - Line 304 "[% BLOCK foo; TRY; PROCESS blurty.tt; CATCH %]([% error.type %])([% error.info %]) # [% END; END; PROCESS foo; PROCESS foo %]" => "(file)(blurty.tt: not found) # (file)(blurty.tt: not found (cached)) # " ok 234 - Line 305 "[% BLOCK foo; TRY; PROCESS blurty.tt; CATCH %]([% error.type %])([% error.info %]) # [% END; END; PROCESS foo; PROCESS foo %]" => "(file)(blurty.tt: not found) # (file)(blurty.tt: not found) # " ok 235 - Line 306 "[% BLOCK foo; TRY; PROCESS blurty.tt; CATCH %]([% error.type %])([% error.info %]) # [% END; END; PROCESS foo; PROCESS foo %]" => "(file)(blurty.tt: not found) # (file)(blurty.tt: not found) # " ### DONE ############################################ engine_option (compile_perl) ### INSERT ########################################## engine_option (stream) ok 236 - Line 127 "([% INSERT bar.tt %])" => "([% blue %]BAR)" ok 237 - Line 128 "([% SET file = 'bar.tt' %][% INSERT $file %])" => "([% blue %]BAR)" ok 238 - Line 129 "([% SET file = 'bar.tt' %][% INSERT ${file} %])" => "([% blue %]BAR)" ok 239 - Line 130 "([% SET file = 'bar.tt' %][% INSERT "$file" %])" => "([% blue %]BAR)" ok 240 - Line 131 "([% SET file = 'bar' %][% INSERT "${file}.tt" %])" => "([% blue %]BAR)" ### INCLUDE ######################################### engine_option (stream) ok 241 - Line 136 "([% INCLUDE bar.tt %])" => "(BAR)" ok 242 - Line 137 "[% PROCESS foo.tt %]" => "(BAR)" ok 243 - Line 138 "[% PROCESS meta.tt %]" => "Metafoo() Metabar(meta.tt)" ok 244 - Line 139 "[% META foo = 'string'; PROCESS meta.tt %]" => "Metafoo() Metabar(meta.tt)" ok 245 - Line 140 "[% PROCESS meta.tt %][% template.bar %]" => "Metafoo() Metabar(meta.tt)" ok 246 - Line 141 "[% META foo = 'meta'; PROCESS foo.tt %]" => "(metaBAR)" ok 247 - Line 142 "([% SET file = 'bar.tt' %][% INCLUDE $file %])" => "(BAR)" ok 248 - Line 143 "([% SET file = 'bar.tt' %][% INCLUDE ${file} %])" => "(BAR)" ok 249 - Line 144 "([% SET file = 'bar.tt' %][% INCLUDE "$file" %])" => "(BAR)" ok 250 - Line 145 "([% SET file = 'bar' %][% INCLUDE "${file}.tt" %])" => "(BAR)" ok 251 - Line 147 "([% INCLUDE baz.tt %])" => "(42)" ok 252 - Line 148 "([% INCLUDE baz.tt %])[% baz %]" => "(42)" ok 253 - Line 149 "[% SET baz = 21 %]([% INCLUDE baz.tt %])[% baz %]" => "(42)21" ok 254 - Line 151 "([% META blam = 5; INCLUDE blocks.tt %])" => "()" ok 255 - Line 152 "([% META blam = 5; INCLUDE blocks.tt %])([% PROCESS foo text => 'bar' %])" => "()(" ok 256 - Line 153 "([% META blam = 5; INCLUDE blocks.tt %])([% foo_m('hey') %])" => "()()" ok 257 - Line 154 "([% META blam = 5; INCLUDE blocks.tt/foo text => 'bar' %])" => "(" ok 258 - Line 155 "([% META blam = 5; INCLUDE blocks.tt/bar %])" => "(bar)" ok 259 - Line 156 "([% META blam = 5; INCLUDE blocks.tt/foo text => 'bar' %])" => "(I am bar - 5" ### PROCESS ######################################### engine_option (stream) ok 260 - Line 161 "([% PROCESS bar.tt %])" => "(BAR)" ok 261 - Line 162 "[% PROCESS foo.tt %]" => "(BAR)" ok 262 - Line 163 "[% PROCESS meta.tt %]" => "Metafoo() Metabar(meta.tt)" ok 263 - Line 164 "[% META foo = 'string'; PROCESS meta.tt %]" => "Metafoo() Metabar(meta.tt)" ok 264 - Line 165 "[% PROCESS meta.tt %][% template.bar %]" => "Metafoo() Metabar(meta.tt)" ok 265 - Line 166 "[% META foo = 'meta'; PROCESS foo.tt %]" => "(metaBAR)" ok 266 - Line 167 "([% SET file = 'bar.tt' %][% PROCESS $file %])" => "(BAR)" ok 267 - Line 168 "([% SET file = 'bar.tt' %][% PROCESS ${file} %])" => "(BAR)" ok 268 - Line 169 "([% SET file = 'bar.tt' %][% PROCESS "$file" %])" => "(BAR)" ok 269 - Line 170 "([% SET file = 'bar' %][% PROCESS "${file}.tt" %])" => "(BAR)" ok 270 - Line 172 "([% PROCESS baz.tt %])" => "(42)" ok 271 - Line 173 "([% PROCESS baz.tt %])[% baz %]" => "(42)42" ok 272 - Line 174 "[% SET baz = 21 %]([% PROCESS baz.tt %])[% baz %]" => "(42)42" ok 273 - Line 176 "[% PROCESS nested/foo.tt %]" => "(Nested foo BAR)" ok 274 - Line 177 "[% PROCESS nested/foo.tt %]" => "(Nested foo Nested bar)" ok 275 - Line 178 "[% PROCESS nested/foo.tt %]" => "(Nested foo BAR)" ok 276 - Line 179 "[% CONFIG ADD_LOCAL_PATH => 1 ; PROCESS nested/foo.tt %]" => "(Nested foo Nested bar)" ok 277 - Line 181 "[% PROCESS nested/foo2.tt %]" => "(Nested foo " ok 278 - Line 182 "[% PROCESS nested/foo2.tt %]" => "(Nested foo Nested bar2)" ok 279 - Line 183 "[% PROCESS nested/foo2.tt %]" => "(Nested foo Nested bar2)" ok 280 - Line 184 "[% CONFIG ADD_LOCAL_PATH => 1 ; PROCESS nested/foo2.tt %]" => "(Nested foo Nested bar2)" ok 281 - Line 186 "([% META blam = 5; PROCESS blocks.tt %])" => "()" ok 282 - Line 187 "([% META blam = 5; PROCESS blocks.tt %])([% PROCESS foo text => 'bar' %])" => "()(I am bar - 5bar)" ok 283 - Line 188 "([% META blam = 5; PROCESS blocks.tt %])([% foo_m('hey') %])" => "()(I am hey - 5)" ok 284 - Line 189 "([% META blam = 5; PROCESS blocks.tt/foo text => 'bar' %])" => "(" ok 285 - Line 190 "([% META blam = 5; PROCESS blocks.tt/bar %])" => "(bar)" ok 286 - Line 191 "([% META blam = 5; PROCESS blocks.tt/foo text => 'bar' %])" => "(I am bar - 5" ### WRAPPER ######################################### engine_option (stream) ok 287 - Line 196 "([% WRAPPER wrap.tt %])" => "" ok 288 - Line 197 "([% WRAPPER wrap.tt %] one [% END %])" => "(Hi one there)" ok 289 - Line 198 "([% WRAPPER wrap.tt %] ([% baz %]) [% END %])" => "(Hi () there)" ok 290 - Line 199 "([% WRAPPER wrap.tt %] one [% END %])" => "(HiBAZ one there)" ok 291 - Line 200 "([% WRAPPER wrap.tt %] ([% baz; baz='-local' %]) [% END %][% baz %])" => "(Hi-local () there-local)" ok 292 - Line 201 "([% WRAPPER wrap.tt %][% META foo='BLAM' %] [% END %])" => "(HiBLAM there)" ### CONFIG PRE_PROCESS ############################## engine_option (stream) ok 293 - Line 206 "Foo" => "BARFoo" ok 294 - Line 207 "Foo" => "BARFoo" ok 295 - Line 208 "Foo" => "(BAR)BARFoo" ok 296 - Line 209 "Foo" => "BlueBARFoo" ok 297 - Line 210 "Foo[% blue='Blue' %]" => "BARFoo" ok 298 - Line 211 "Foo[% META foo='meta' %]" => "(metaBAR)Foo" ok 299 - Line 212 "([% WRAPPER wrap.tt %] one [% END %])" => "BAR(Hi one there)" ok 300 - Line 214 "Foo" => "<>Foo" ### CONFIG POST_PROCESS ############################# engine_option (stream) ok 301 - Line 219 "Foo" => "FooBAR" ok 302 - Line 220 "Foo" => "FooBAR" ok 303 - Line 221 "Foo" => "Foo(BAR)BAR" ok 304 - Line 222 "Foo" => "FooBlueBAR" ok 305 - Line 223 "Foo[% blue='Blue' %]" => "FooBlueBAR" ok 306 - Line 224 "Foo[% META foo='meta' %]" => "Foo(metaBAR)" ok 307 - Line 225 "([% WRAPPER wrap.tt %] one [% END %])" => "(Hi one there)BAR" ok 308 - Line 227 "Foo" => "Foo<>" ### CONFIG PROCESS ################################## engine_option (stream) ok 309 - Line 232 "Foo" => "BAR" ok 310 - Line 233 "Foo" => "BAR" ok 311 - Line 234 "Foo" => "(BAR)BAR" ok 312 - Line 235 "Foo" => "BlueBAR" ok 313 - Line 236 "Foo[% META foo='meta' %]" => "(metaBAR)" ok 314 - Line 237 "Foo[% META foo='meta' %]" => "BAR(metaBAR)" ok 315 - Line 238 "Foo[% META foo='meta' %]" => "(metaBAR)BAR" ok 316 - Line 240 "Foo" => "<>" ### CONFIG WRAPPER ################################## engine_option (stream) ok 317 - Line 245 " one " => "Hi one there" ok 318 - Line 246 " one " => "Hi one there" ok 319 - Line 247 " one " => "HiwrapHi one therethere" ok 320 - Line 248 " ([% baz %]) " => "Hi () there" ok 321 - Line 249 " one " => "HiBAZ one there" ok 322 - Line 250 " ([% baz; baz='-local' %]) " => "Hi-local () there" ok 323 - Line 251 "[% META foo='BLAM' %] " => "HiBLAM there" ok 324 - Line 253 " one " => "BARHi one there" ok 325 - Line 254 " one " => "HiBARthere" ok 326 - Line 255 " one " => "Hi one thereBAR" ok 327 - Line 257 "Foo" => "<>" ### CONFIG ERRORS ################################### engine_option (stream) ok 328 - Line 262 "[% THROW foo 'bar' %]" => "Error (foo) - (bar)" ok 329 - Line 263 "[% THROW foo 'bar' %]" => "Error (foo) - (bar)" ok 330 - Line 264 "[% THROW foo 'bar' %]" => "Error (foo) - (bar)" ok 331 - Line 265 "[% THROW foo 'bar' %]" => "Error (foo) - (bar)" ok 332 - Line 266 "[% THROW foo 'bar' %]" => "Error2 (foo) - (bar)" ok 333 - Line 267 "[% THROW foo.baz 'bar' %]" => "Error2 (foo.baz) - (bar)" ok 334 - Line 268 "[% THROW foo.baz 'bar' %]" => "Error2 (foo.baz) - (bar)" ok 335 - Line 269 "[% THROW foo 'bar' %]" => "Error (foo) - (bar)" ok 336 - Line 270 "[% THROW foo.baz 'bar' %]" => "Error2 (foo.baz) - (bar)" ok 337 - Line 272 "[% THROW foo 'bar' %]" => "BARError (foo) - (bar)" ok 338 - Line 273 "[% THROW foo 'bar' %]" => "Error (bing) - (blang)" ok 339 - Line 275 "[% THROW foo 'bar' %]" => "BARError (bing) - (blang)" ok 340 - Line 276 "[% THROW foo 'bar' %]" => "Error (foo) - (bar)BAR" ok 341 - Line 277 "[% THROW foo 'bar' %]" => "HiError (foo) - (bar)there" ok 342 - Line 280 "(outer)[% PROCESS 'die.tt' %]" => "(outer)Error (bing) - (blang)" ok 343 - Line 281 "(outer)[% TRY %][% PROCESS 'die.tt' %][% CATCH %] [% END %]" => "(outer) " ok 344 - Line 283 " one " => "" ok 345 - Line 284 " one " => " one " ok 346 - Line 285 " one " => "" ### CONFIG and DUMP ################################# engine_option (stream) ok 347 - Line 290 "[% CONFIG DUMP => {html => 0}; DUMP foo; PROCESS config.tt; DUMP foo %]" => "DUMP: File "input text" line 1 # foo = 'FOO'; # DUMP: File "config.tt" line 1
foo = 'FOO';
# 
DUMP: File "input text" line 1 # foo = 'FOO'; # " ok 348 - Line 297 "[% PROCESS 'config2.tt' %]" => "DUMP: File "config2.tt/nested" line 1 # foo = 'FOO'; # " ### NOT FOUND CACHE ################################# engine_option (stream) ok 349 - Line 304 "[% BLOCK foo; TRY; PROCESS blurty.tt; CATCH %]([% error.type %])([% error.info %]) # [% END; END; PROCESS foo; PROCESS foo %]" => "(file)(blurty.tt: not found) # (file)(blurty.tt: not found (cached)) # " ok 350 - Line 305 "[% BLOCK foo; TRY; PROCESS blurty.tt; CATCH %]([% error.type %])([% error.info %]) # [% END; END; PROCESS foo; PROCESS foo %]" => "(file)(blurty.tt: not found) # (file)(blurty.tt: not found) # " ok 351 - Line 306 "[% BLOCK foo; TRY; PROCESS blurty.tt; CATCH %]([% error.type %])([% error.info %]) # [% END; END; PROCESS foo; PROCESS foo %]" => "(file)(blurty.tt: not found) # (file)(blurty.tt: not found) # " ### DONE ############################################ engine_option (stream) ok t/11_tt_input_output.t .. 1..21 ok 1 - use Template::Alloy; ok 2 - Got a test dir up and running ### INPUT ########################################### ok 3 - process(\$in, {}, \$out) ok 4 - process($filename, {}, \$out) ok 5 - process(\&code, {}, \$out) ok 6 - process($obj->load_template($filename), {}, \$out) ok 7 - process(\*FH, {}, \$out) ok 8 - process($fh, {}, \$out) ### OUTPUT ########################################## ok 9 - new(OUTPUT=>\$out)->process(\$str) ok 10 - process(\$str, {}, \&code) ok 11 - process(\$str, {}, $obj) - where $obj->can("print") ok 12 - process(\$str, {}, \$out) ok 13 - process(\$str, {}, \@out) ok 14 - process(\$str, {}, \*FH) ok 15 - process(\$str, {}, $fh) ok 16 - Skip ABSOLUTE/RELATIVE output tests ok 17 - Skip ABSOLUTE/RELATIVE output tests ok 18 - Skip ABSOLUTE/RELATIVE output tests ok 19 - process(\$str, {}, $filename) - with OUTPUT_PATH ok 20 - process(\$str, {}, $filename) - with binmode ok 21 - process(\$str) ### DONE ############################################ ok t/15_tt_view.t .......... 1..105 ok 1 - use Template::Alloy; ok 2 - Line 135 "[% USE v = view -%] # [[% v.prefix %]]" => "[]" ok 3 - Line 138 "[% USE v = view( map => { default='any' } ) -%] # [[% v.map.default %]]" => "[any]" ok 4 - Line 141 "[% USE view( prefix=> 'foo/', suffix => '.tt2') -%] # [[% view.prefix %]bar[% view.suffix %]] # [[% view.template_name('baz') %]]" => "[foo/bar.tt2] # [foo/baz.tt2]" ok 5 - Line 146 "[% USE view( prefix=> 'foo/', suffix => '.tt2') -%] # [[% view.prefix %]bar[% view.suffix %]] # [[% view.template_name('baz') %]]" => "[foo/bar.tt2] # [foo/baz.tt2]" ok 6 - Line 151 "[% USE view -%] # [% view.print('Hello World') %] # [% BLOCK text %]TEXT: [% item %][% END -%]" => "TEXT: Hello World # " ok 7 - Line 155 "[% USE view -%] # [% view.print( { foo => 'bar' } ) %] # [% BLOCK hash %]HASH: { # [% FOREACH key = item.keys.sort -%] # [% key %] => [% item.$key %] # [%- END %] # } # [% END -%]" => "HASH: { # foo => bar # } # # " ok 8 - Line 166 "[% USE view -%] # [% view = view.clone( prefix => 'my_' ) -%] # [% view.view('hash', { bar => 'baz' }) %] # [% BLOCK my_hash %]HASH: { # [% FOREACH key = item.keys.sort -%] # [% key %] => [% item.$key %] # [%- END %] # } # [% END -%]" => "HASH: { # bar => baz # } # # " ok 9 - Line 178 "[% USE view(prefix='my_') -%] # [% view.print( foo => 'wiz', bar => 'waz' ) %] # [% BLOCK my_hash %]KEYS: [% item.keys.sort.join(', ') %][% END %] # # " => "KEYS: bar, foo # # # " ok 10 - Line 184 "[% USE view -%] # [% view.print( view ) %] # [% BLOCK Template_View %]Printing a Template::View object[% END -%]" => "Printing a Template::View object # " ok 11 - Line 188 "[% USE view(prefix='my_') -%] # [% view.print( view ) %] # [% view.print( view, prefix='your_' ) %] # [% BLOCK my_Template_View %]Printing my Template::View object[% END -%] # [% BLOCK your_Template_View %]Printing your Template::View object[% END -%]" => "Printing my Template::View object # Printing your Template::View object # " ok 12 - Line 195 "[% USE view(prefix='my_', notfound='any' ) -%] # [% view.print( view ) %] # [% view.print( view, prefix='your_' ) %] # [% BLOCK my_any %]Printing any of my objects[% END -%] # [% BLOCK your_any %]Printing any of your objects[% END -%]" => "Printing any of my objects # Printing any of your objects # " ok 13 - Line 203 "[% USE view(prefix => 'my_', map => { default => 'catchall' } ) -%] # [% view.print( view ) %] # [% view.print( view, default='catchsome' ) %] # [% BLOCK my_catchall %]Catching all defaults[% END -%] # [% BLOCK my_catchsome %]Catching some defaults[% END -%]" => "Catching all defaults # Catching some defaults # " ok 14 - Line 211 "[% USE view(prefix => 'my_', map => { default => 'catchnone' } ) -%] # [% view.default %] # [% view.default = 'catchall' -%] # [% view.default %] # [% view.print( view ) %] # [% view.print( view, default='catchsome' ) %] # [% BLOCK my_catchall %]Catching all defaults[% END -%] # [% BLOCK my_catchsome %]Catching some defaults[% END -%]" => "catchnone # catchall # Catching all defaults # Catching some defaults # " ok 15 - Line 224 "[% USE view(prefix='my_', default='catchall' notfound='lost') -%] # [% view.print( view ) %] # [% BLOCK my_lost %]Something has been found[% END -%]" => "Something has been found # " ok 16 - Line 229 "[% USE view -%] # [% TRY ; # view.print( view ) ; # CATCH view ; # "[$error.type] $error.info" ; # END # %]" => "[view] file error - Template_View: not found" ok 17 - Line 237 "[% USE view -%] # [% view.print( foo ) %]" => "{ e => 2.718, pi => 3.14 }" ok 18 - Line 240 "[% USE view -%] # [% view.print( foo, method => 'reverse' ) %]" => "{ pi => 3.14, e => 2.718 }" ok 19 - Line 243 "[% USE view(prefix='my_', include_naked=0, view_naked=1) -%] # [% BLOCK my_foo; "Foo: $item"; END -%] # [[% view.view_foo(20) %]] # [[% view.foo(30) %]]" => "[Foo: 20] # [Foo: 30]" ok 20 - Line 249 "[% USE view(prefix='my_', include_naked=0, view_naked=0) -%] # [% BLOCK my_foo; "Foo: $item"; END -%] # [[% view.view_foo(20) %]] # [% TRY ; # view.foo(30) ; # CATCH ; # error.info ; # END # %]" => "[Foo: 20] # no such view member: foo" ok 21 - Line 260 "[% USE view(map => { HASH => 'my_hash', ARRAY => 'your_list' }) -%] # [% BLOCK text %]TEXT: [% item %][% END -%] # [% BLOCK my_hash %]HASH: [% item.keys.sort.join(', ') %][% END -%] # [% BLOCK your_list %]LIST: [% item.join(', ') %][% END -%] # [% view.print("some text") %] # [% view.print({ alpha => 'a', bravo => 'b' }) %] # [% view.print([ 'charlie', 'delta' ]) %]" => "TEXT: some text # HASH: alpha, bravo # LIST: charlie, delta" ok 22 - Line 270 "[% USE view(item => 'thing', # map => { HASH => 'my_hash', ARRAY => 'your_list' }) -%] # [% BLOCK text %]TEXT: [% thing %][% END -%] # [% BLOCK my_hash %]HASH: [% thing.keys.sort.join(', ') %][% END -%] # [% BLOCK your_list %]LIST: [% thing.join(', ') %][% END -%] # [% view.print("some text") %] # [% view.print({ alpha => 'a', bravo => 'b' }) %] # [% view.print([ 'charlie', 'delta' ]) %]" => "TEXT: some text # HASH: alpha, bravo # LIST: charlie, delta" ok 23 - Line 281 "[% USE view -%] # [% view.print('Hello World') %] # [% view1 = view.clone( prefix='my_') -%] # [% view1.print('Hello World') %] # [% view2 = view1.clone( prefix='dud_', notfound='no_text' ) -%] # [% view2.print('Hello World') %] # [% BLOCK text %]TEXT: [% item %][% END -%] # [% BLOCK my_text %]MY TEXT: [% item %][% END -%] # [% BLOCK dud_no_text %]NO TEXT: [% item %][% END -%]" => "TEXT: Hello World # MY TEXT: Hello World # NO TEXT: Hello World # " ok 24 - Line 294 "[% USE view( prefix = 'base_', default => 'any' ) -%] # [% view1 = view.clone( prefix => 'one_') -%] # [% view2 = view.clone( prefix => 'two_') -%] # [% view.default %] / [% view.map.default %] # [% view1.default = 'anyone' -%] # [% view1.default %] / [% view1.map.default %] # [% view2.map.default = 'anytwo' -%] # [% view2.default %] / [% view2.map.default %] # [% view.print("Hello World") %] / [% view.print(blessed_list) %] # [% view1.print("Hello World") %] / [% view1.print(blessed_list) %] # [% view2.print("Hello World") %] / [% view2.print(blessed_list) %] # [% BLOCK base_text %]ANY TEXT: [% item %][% END -%] # [% BLOCK one_text %]ONE TEXT: [% item %][% END -%] # [% BLOCK two_text %]TWO TEXT: [% item %][% END -%] # [% BLOCK base_any %]BASE ANY: [% item.as_list.join(', ') %][% END -%] # [% BLOCK one_anyone %]ONE ANY: [% item.as_list.join(', ') %][% END -%] # [% BLOCK two_anytwo %]TWO ANY: [% item.as_list.join(', ') %][% END -%]" => "any / any # anyone / anyone # anytwo / anytwo # ANY TEXT: Hello World / BASE ANY: Hello, World # ONE TEXT: Hello World / ONE ANY: Hello, World # TWO TEXT: Hello World / TWO ANY: Hello, World # " ok 25 - Line 318 "[% USE view( prefix => 'my_', item => 'thing' ) -%] # [% view.view('thingy', [ 'foo', 'bar'] ) %] # [% BLOCK my_thingy %]thingy: [ [% thing.join(', ') %] ][%END %]" => "thingy: [ foo, bar ] # " ok 26 - Line 323 "[% USE view -%] # [% view.map.${'Template::View'} = 'myview' -%] # [% view.print(view) %] # [% BLOCK myview %]MYVIEW[% END%]" => "MYVIEW # " ok 27 - Line 329 "[% USE view -%] # [% view.include('greeting', msg => 'Hello World!') %] # [% BLOCK greeting %]msg: [% msg %][% END -%]" => "msg: Hello World! # " ok 28 - Line 334 "[% USE view( prefix="my_" )-%] # [% view.include('greeting', msg => 'Hello World!') %] # [% BLOCK my_greeting %]msg: [% msg %][% END -%]" => "msg: Hello World! # " ok 29 - Line 339 "[% USE view( prefix="my_" )-%] # [% view.include_greeting( msg => 'Hello World!') %] # [% BLOCK my_greeting %]msg: [% msg %][% END -%]" => "msg: Hello World! # " ok 30 - Line 344 "[% USE view( prefix="my_" )-%] # [% INCLUDE $view.template('greeting') # msg = 'Hello World!' %] # [% BLOCK my_greeting %]msg: [% msg %][% END -%]" => "msg: Hello World! # " ok 31 - Line 350 "[% USE view( title="My View" )-%] # [% view.title %]" => "My View" ok 32 - Line 353 "[% USE view( title="My View" )-%] # [% newview = view.clone( col = 'Chartreuse') -%] # [% newerview = newview.clone( title => 'New Title' ) -%] # [% view.title %] # [% newview.title %] # [% newview.col %] # [% newerview.title %] # [% newerview.col %]" => "My View # My View # Chartreuse # New Title # Chartreuse" ok 33 - Line 370 "[% VIEW fred prefix='blat_' %] # This is the view # [% END -%] # [% BLOCK blat_foo; 'This is blat_foo'; END -%] # [% fred.view_foo %]" => "This is blat_foo" ok 34 - Line 376 "[% VIEW fred %] # This is the view # [% view.prefix = 'blat_' %] # [% END -%] # [% BLOCK blat_foo; 'This is blat_foo'; END -%] # [% fred.view_foo %]" => "This is blat_foo" ok 35 - Line 383 "[% VIEW fred %] # This is the view # [% view.prefix = 'blat_' %] # [% view.thingy = 'bloop' %] # [% fred.name = 'Freddy' %] # [% END -%] # [% fred.prefix %] # [% fred.thingy %] # [% fred.name %]" => "blat_ # bloop # Freddy" ok 36 - Line 395 "[% VIEW fred prefix='blat_'; view.name='Fred'; END -%] # [% fred.prefix %] # [% fred.name %] # [% TRY; # fred.prefix = 'nonblat_'; # CATCH; # error; # END # %] # [% TRY; # fred.name = 'Derek'; # CATCH; # error; # END # %]" => "blat_ # Fred # view error - cannot update config item in sealed view: prefix # view error - cannot update item in sealed view: name" ok 37 - Line 414 "[% VIEW foo prefix='blat_' default="default" notfound="notfound" # title="fred" age=23 height=1.82 %] # [% view.other = 'another' %] # [% END -%] # [% BLOCK blat_hash -%] # [% FOREACH key = item.keys.sort -%] # [% key %] => [% item.$key %] # [% END -%] # [% END -%] # [% foo.print(foo.data) %]" => " age => 23 # height => 1.82 # other => another # title => fred # " ok 38 - Line 429 "[% VIEW foo %] # [% BLOCK hello -%] # Hello World! # [% END %] # [% BLOCK goodbye -%] # Goodbye World! # [% END %] # [% END -%] # [% TRY; INCLUDE foo; CATCH; error; END %] # [% foo.include_hello %]" => "file error - foo: not found # Hello World! # " ok 39 - Line 442 "[% title = "Previous Title" -%] # [% VIEW foo # include_naked = 1 # title = title or 'Default Title' # copy = 'me, now' # -%] # # [% view.bgcol = '\#ffffff' -%] # # [% BLOCK header -%] # Header: bgcol: [% view.bgcol %] # title: [% title %] # view.title: [% view.title %] # [%- END %] # # [% BLOCK footer -%] # © Copyright [% view.copy %] # [%- END %] # # [% END -%] # [% title = 'New Title' -%] # [% foo.header %] # [% foo.header(bgcol='\#dead' title="Title Parameter") %] # [% foo.footer %] # [% foo.footer(copy="you, then") %] # " => "Header: bgcol: \#ffffff # title: New Title # view.title: Previous Title # Header: bgcol: \#ffffff # title: Title Parameter # view.title: Previous Title # © Copyright me, now # © Copyright me, now # " ok 40 - Line 477 "[% VIEW foo # title = 'My View' # author = 'Andy Wardley' # bgcol = bgcol or '\#ffffff' # -%] # [% view.arg1 = 'argument \#1' -%] # [% view.data.arg2 = 'argument \#2' -%] # [% END -%] # [% foo.title %] # [% foo.author %] # [% foo.bgcol %] # [% foo.arg1 %] # [% foo.arg2 %] # [% bar = foo.clone( title='New View', arg1='New Arg1' ) %]cloned! # [% bar.title %] # [% bar.author %] # [% bar.bgcol %] # [% bar.arg1 %] # [% bar.arg2 %] # originals: # [% foo.title %] # [% foo.arg1 %] # # " => " My View # Andy Wardley # \#ffffff # argument \#1 # argument \#2 # cloned! # New View # Andy Wardley # \#ffffff # New Arg1 # argument \#2 # originals: # My View # argument \#1 # # " ok 41 - Line 517 "[% VIEW basic title = "My Web Site" %] # [% BLOCK header -%] # This is the basic header: [% title or view.title %] # [%- END -%] # [% END -%] # # [%- VIEW fancy # title = "$basic.title" # basic = basic # %] # [% BLOCK header ; view.basic.header(title = title or view.title) %] # Fancy new part of header # [%- END %] # [% END -%] # === # [% basic.header %] # [% basic.header( title = "New Title" ) %] # === # [% fancy.header %] # [% fancy.header( title = "Fancy Title" ) %]" => "=== # This is the basic header: My Web Site # This is the basic header: New Title # === # This is the basic header: My Web Site # Fancy new part of header # This is the basic header: Fancy Title # Fancy new part of header" ok 42 - Line 545 "[% VIEW baz notfound='lost' %] # [% BLOCK lost; 'lost, not found'; END %] # [% END -%] # [% baz.any %]" => "lost, not found" ok 43 - Line 550 "[% VIEW woz prefix='outer_' %] # [% BLOCK wiz; 'The inner wiz'; END %] # [% END -%] # [% BLOCK outer_waz; 'The outer waz'; END -%] # [% woz.wiz %] # [% woz.waz %]" => "The inner wiz # The outer waz" ok 44 - Line 558 "[% VIEW foo %] # # [% BLOCK file -%] # File: [% item.name %] # [%- END -%] # # [% BLOCK directory -%] # Dir: [% item.name %] # [%- END %] # # [% END -%] # [% foo.view_file({ name => 'some_file' }) %] # [% foo.include_file(item => { name => 'some_file' }) %] # [% foo.view('directory', { name => 'some_dir' }) %]" => " File: some_file # File: some_file # Dir: some_dir" ok 45 - Line 575 "[% BLOCK parent -%] # This is the base block # [%- END -%] # [% VIEW super %] # [%- BLOCK parent -%] # [%- INCLUDE parent FILTER replace('base', 'super') -%] # [%- END -%] # [% END -%] # base: [% INCLUDE parent %] # super: [% super.parent %]" => "base: This is the base block # super: This is the super block" ok 46 - Line 587 "[% BLOCK foo -%] # public foo block # [%- END -%] # [% VIEW plain %] # [% BLOCK foo -%] # [% PROCESS foo %] # [%- END %] # [% END -%] # [% VIEW fancy %] # [% BLOCK foo -%] # [%- plain.foo | replace('plain', 'fancy') -%] # [%- END %] # [% END -%] # [% plain.foo %] # [% fancy.foo %]" => "public foo block # public foo block" ok 47 - Line 604 "[% VIEW foo %] # [% BLOCK Blessed_List -%] # This is a list: [% item.as_list.join(', ') %] # [% END -%] # [% END -%] # [% foo.print(blessed_list) %]" => "This is a list: Hello, World # " ok 48 - Line 612 "[% VIEW my.foo value=33; END -%] # n: [% my.foo.value %]" => "n: 33" ok 49 - Line 615 "[% VIEW parent -%] # [% BLOCK one %]This is base one[% END %] # [% BLOCK two %]This is base two[% END %] # [% END -%] # # [%- VIEW child1 base=parent %] # [% BLOCK one %]This is child1 one[% END %] # [% END -%] # # [%- VIEW child2 base=parent %] # [% BLOCK two %]This is child2 two[% END %] # [% END -%] # # [%- VIEW child3 base=child2 %] # [% BLOCK two %]This is child3 two[% END %] # [% END -%] # # [%- FOREACH child = [ child1, child2, child3 ] -%] # one: [% child.one %] # [% END -%] # [% FOREACH child = [ child1, child2, child3 ] -%] # two: [% child.two %] # [% END %] # " => "one: This is child1 one # one: This is base one # one: This is base one # two: This is base two # two: This is child2 two # two: This is child3 two # # " ok 50 - Line 647 "[% VIEW my.view.default # prefix = 'view/default/' # value = 3.14; # END # -%] # value: [% my.view.default.value %]" => "value: 3.14" ok 51 - Line 654 "[% VIEW my.view.default # prefix = 'view/default/' # value = 3.14; # END; # VIEW my.view.one # base = my.view.default # prefix = 'view/one/'; # END; # VIEW my.view.two # base = my.view.default # value = 2.718; # END; # -%] # [% BLOCK view/default/foo %]Default foo[% END -%] # [% BLOCK view/one/foo %]One foo[% END -%] # 0: [% my.view.default.foo %] # 1: [% my.view.one.foo %] # 2: [% my.view.two.foo %] # 0: [% my.view.default.value %] # 1: [% my.view.one.value %] # 2: [% my.view.two.value %]" => "0: Default foo # 1: One foo # 2: Default foo # 0: 3.14 # 1: 3.14 # 2: 2.718" ok 52 - Line 681 "[% VIEW foo number = 10 sealed = 0; END -%] # a: [% foo.number %] # b: [% foo.number = 20 %] # c: [% foo.number %] # d: [% foo.number(30) %] # e: [% foo.number %]" => "a: 10 # b: # c: 20 # d: 30 # e: 30" ok 53 - Line 692 "[% VIEW foo number = 10 silent = 1; END -%] # a: [% foo.number %] # b: [% foo.number = 20 %] # c: [% foo.number %] # d: [% foo.number(30) %] # e: [% foo.number %]" => "a: 10 # b: # c: 10 # d: 10 # e: 10" ### DONE ############################################ compile perl (0) ok 54 - Line 135 "[% USE v = view -%] # [[% v.prefix %]]" => "[]" ok 55 - Line 138 "[% USE v = view( map => { default='any' } ) -%] # [[% v.map.default %]]" => "[any]" ok 56 - Line 141 "[% USE view( prefix=> 'foo/', suffix => '.tt2') -%] # [[% view.prefix %]bar[% view.suffix %]] # [[% view.template_name('baz') %]]" => "[foo/bar.tt2] # [foo/baz.tt2]" ok 57 - Line 146 "[% USE view( prefix=> 'foo/', suffix => '.tt2') -%] # [[% view.prefix %]bar[% view.suffix %]] # [[% view.template_name('baz') %]]" => "[foo/bar.tt2] # [foo/baz.tt2]" ok 58 - Line 151 "[% USE view -%] # [% view.print('Hello World') %] # [% BLOCK text %]TEXT: [% item %][% END -%]" => "TEXT: Hello World # " ok 59 - Line 155 "[% USE view -%] # [% view.print( { foo => 'bar' } ) %] # [% BLOCK hash %]HASH: { # [% FOREACH key = item.keys.sort -%] # [% key %] => [% item.$key %] # [%- END %] # } # [% END -%]" => "HASH: { # foo => bar # } # # " ok 60 - Line 166 "[% USE view -%] # [% view = view.clone( prefix => 'my_' ) -%] # [% view.view('hash', { bar => 'baz' }) %] # [% BLOCK my_hash %]HASH: { # [% FOREACH key = item.keys.sort -%] # [% key %] => [% item.$key %] # [%- END %] # } # [% END -%]" => "HASH: { # bar => baz # } # # " ok 61 - Line 178 "[% USE view(prefix='my_') -%] # [% view.print( foo => 'wiz', bar => 'waz' ) %] # [% BLOCK my_hash %]KEYS: [% item.keys.sort.join(', ') %][% END %] # # " => "KEYS: bar, foo # # # " ok 62 - Line 184 "[% USE view -%] # [% view.print( view ) %] # [% BLOCK Template_View %]Printing a Template::View object[% END -%]" => "Printing a Template::View object # " ok 63 - Line 188 "[% USE view(prefix='my_') -%] # [% view.print( view ) %] # [% view.print( view, prefix='your_' ) %] # [% BLOCK my_Template_View %]Printing my Template::View object[% END -%] # [% BLOCK your_Template_View %]Printing your Template::View object[% END -%]" => "Printing my Template::View object # Printing your Template::View object # " ok 64 - Line 195 "[% USE view(prefix='my_', notfound='any' ) -%] # [% view.print( view ) %] # [% view.print( view, prefix='your_' ) %] # [% BLOCK my_any %]Printing any of my objects[% END -%] # [% BLOCK your_any %]Printing any of your objects[% END -%]" => "Printing any of my objects # Printing any of your objects # " ok 65 - Line 203 "[% USE view(prefix => 'my_', map => { default => 'catchall' } ) -%] # [% view.print( view ) %] # [% view.print( view, default='catchsome' ) %] # [% BLOCK my_catchall %]Catching all defaults[% END -%] # [% BLOCK my_catchsome %]Catching some defaults[% END -%]" => "Catching all defaults # Catching some defaults # " ok 66 - Line 211 "[% USE view(prefix => 'my_', map => { default => 'catchnone' } ) -%] # [% view.default %] # [% view.default = 'catchall' -%] # [% view.default %] # [% view.print( view ) %] # [% view.print( view, default='catchsome' ) %] # [% BLOCK my_catchall %]Catching all defaults[% END -%] # [% BLOCK my_catchsome %]Catching some defaults[% END -%]" => "catchnone # catchall # Catching all defaults # Catching some defaults # " ok 67 - Line 224 "[% USE view(prefix='my_', default='catchall' notfound='lost') -%] # [% view.print( view ) %] # [% BLOCK my_lost %]Something has been found[% END -%]" => "Something has been found # " ok 68 - Line 229 "[% USE view -%] # [% TRY ; # view.print( view ) ; # CATCH view ; # "[$error.type] $error.info" ; # END # %]" => "[view] file error - Template_View: not found" ok 69 - Line 237 "[% USE view -%] # [% view.print( foo ) %]" => "{ e => 2.718, pi => 3.14 }" ok 70 - Line 240 "[% USE view -%] # [% view.print( foo, method => 'reverse' ) %]" => "{ pi => 3.14, e => 2.718 }" ok 71 - Line 243 "[% USE view(prefix='my_', include_naked=0, view_naked=1) -%] # [% BLOCK my_foo; "Foo: $item"; END -%] # [[% view.view_foo(20) %]] # [[% view.foo(30) %]]" => "[Foo: 20] # [Foo: 30]" ok 72 - Line 249 "[% USE view(prefix='my_', include_naked=0, view_naked=0) -%] # [% BLOCK my_foo; "Foo: $item"; END -%] # [[% view.view_foo(20) %]] # [% TRY ; # view.foo(30) ; # CATCH ; # error.info ; # END # %]" => "[Foo: 20] # no such view member: foo" ok 73 - Line 260 "[% USE view(map => { HASH => 'my_hash', ARRAY => 'your_list' }) -%] # [% BLOCK text %]TEXT: [% item %][% END -%] # [% BLOCK my_hash %]HASH: [% item.keys.sort.join(', ') %][% END -%] # [% BLOCK your_list %]LIST: [% item.join(', ') %][% END -%] # [% view.print("some text") %] # [% view.print({ alpha => 'a', bravo => 'b' }) %] # [% view.print([ 'charlie', 'delta' ]) %]" => "TEXT: some text # HASH: alpha, bravo # LIST: charlie, delta" ok 74 - Line 270 "[% USE view(item => 'thing', # map => { HASH => 'my_hash', ARRAY => 'your_list' }) -%] # [% BLOCK text %]TEXT: [% thing %][% END -%] # [% BLOCK my_hash %]HASH: [% thing.keys.sort.join(', ') %][% END -%] # [% BLOCK your_list %]LIST: [% thing.join(', ') %][% END -%] # [% view.print("some text") %] # [% view.print({ alpha => 'a', bravo => 'b' }) %] # [% view.print([ 'charlie', 'delta' ]) %]" => "TEXT: some text # HASH: alpha, bravo # LIST: charlie, delta" ok 75 - Line 281 "[% USE view -%] # [% view.print('Hello World') %] # [% view1 = view.clone( prefix='my_') -%] # [% view1.print('Hello World') %] # [% view2 = view1.clone( prefix='dud_', notfound='no_text' ) -%] # [% view2.print('Hello World') %] # [% BLOCK text %]TEXT: [% item %][% END -%] # [% BLOCK my_text %]MY TEXT: [% item %][% END -%] # [% BLOCK dud_no_text %]NO TEXT: [% item %][% END -%]" => "TEXT: Hello World # MY TEXT: Hello World # NO TEXT: Hello World # " ok 76 - Line 294 "[% USE view( prefix = 'base_', default => 'any' ) -%] # [% view1 = view.clone( prefix => 'one_') -%] # [% view2 = view.clone( prefix => 'two_') -%] # [% view.default %] / [% view.map.default %] # [% view1.default = 'anyone' -%] # [% view1.default %] / [% view1.map.default %] # [% view2.map.default = 'anytwo' -%] # [% view2.default %] / [% view2.map.default %] # [% view.print("Hello World") %] / [% view.print(blessed_list) %] # [% view1.print("Hello World") %] / [% view1.print(blessed_list) %] # [% view2.print("Hello World") %] / [% view2.print(blessed_list) %] # [% BLOCK base_text %]ANY TEXT: [% item %][% END -%] # [% BLOCK one_text %]ONE TEXT: [% item %][% END -%] # [% BLOCK two_text %]TWO TEXT: [% item %][% END -%] # [% BLOCK base_any %]BASE ANY: [% item.as_list.join(', ') %][% END -%] # [% BLOCK one_anyone %]ONE ANY: [% item.as_list.join(', ') %][% END -%] # [% BLOCK two_anytwo %]TWO ANY: [% item.as_list.join(', ') %][% END -%]" => "any / any # anyone / anyone # anytwo / anytwo # ANY TEXT: Hello World / BASE ANY: Hello, World # ONE TEXT: Hello World / ONE ANY: Hello, World # TWO TEXT: Hello World / TWO ANY: Hello, World # " ok 77 - Line 318 "[% USE view( prefix => 'my_', item => 'thing' ) -%] # [% view.view('thingy', [ 'foo', 'bar'] ) %] # [% BLOCK my_thingy %]thingy: [ [% thing.join(', ') %] ][%END %]" => "thingy: [ foo, bar ] # " ok 78 - Line 323 "[% USE view -%] # [% view.map.${'Template::View'} = 'myview' -%] # [% view.print(view) %] # [% BLOCK myview %]MYVIEW[% END%]" => "MYVIEW # " ok 79 - Line 329 "[% USE view -%] # [% view.include('greeting', msg => 'Hello World!') %] # [% BLOCK greeting %]msg: [% msg %][% END -%]" => "msg: Hello World! # " ok 80 - Line 334 "[% USE view( prefix="my_" )-%] # [% view.include('greeting', msg => 'Hello World!') %] # [% BLOCK my_greeting %]msg: [% msg %][% END -%]" => "msg: Hello World! # " ok 81 - Line 339 "[% USE view( prefix="my_" )-%] # [% view.include_greeting( msg => 'Hello World!') %] # [% BLOCK my_greeting %]msg: [% msg %][% END -%]" => "msg: Hello World! # " ok 82 - Line 344 "[% USE view( prefix="my_" )-%] # [% INCLUDE $view.template('greeting') # msg = 'Hello World!' %] # [% BLOCK my_greeting %]msg: [% msg %][% END -%]" => "msg: Hello World! # " ok 83 - Line 350 "[% USE view( title="My View" )-%] # [% view.title %]" => "My View" ok 84 - Line 353 "[% USE view( title="My View" )-%] # [% newview = view.clone( col = 'Chartreuse') -%] # [% newerview = newview.clone( title => 'New Title' ) -%] # [% view.title %] # [% newview.title %] # [% newview.col %] # [% newerview.title %] # [% newerview.col %]" => "My View # My View # Chartreuse # New Title # Chartreuse" ok 85 - Line 370 "[% VIEW fred prefix='blat_' %] # This is the view # [% END -%] # [% BLOCK blat_foo; 'This is blat_foo'; END -%] # [% fred.view_foo %]" => "This is blat_foo" ok 86 - Line 376 "[% VIEW fred %] # This is the view # [% view.prefix = 'blat_' %] # [% END -%] # [% BLOCK blat_foo; 'This is blat_foo'; END -%] # [% fred.view_foo %]" => "This is blat_foo" ok 87 - Line 383 "[% VIEW fred %] # This is the view # [% view.prefix = 'blat_' %] # [% view.thingy = 'bloop' %] # [% fred.name = 'Freddy' %] # [% END -%] # [% fred.prefix %] # [% fred.thingy %] # [% fred.name %]" => "blat_ # bloop # Freddy" ok 88 - Line 395 "[% VIEW fred prefix='blat_'; view.name='Fred'; END -%] # [% fred.prefix %] # [% fred.name %] # [% TRY; # fred.prefix = 'nonblat_'; # CATCH; # error; # END # %] # [% TRY; # fred.name = 'Derek'; # CATCH; # error; # END # %]" => "blat_ # Fred # view error - cannot update config item in sealed view: prefix # view error - cannot update item in sealed view: name" ok 89 - Line 414 "[% VIEW foo prefix='blat_' default="default" notfound="notfound" # title="fred" age=23 height=1.82 %] # [% view.other = 'another' %] # [% END -%] # [% BLOCK blat_hash -%] # [% FOREACH key = item.keys.sort -%] # [% key %] => [% item.$key %] # [% END -%] # [% END -%] # [% foo.print(foo.data) %]" => " age => 23 # height => 1.82 # other => another # title => fred # " ok 90 - Line 429 "[% VIEW foo %] # [% BLOCK hello -%] # Hello World! # [% END %] # [% BLOCK goodbye -%] # Goodbye World! # [% END %] # [% END -%] # [% TRY; INCLUDE foo; CATCH; error; END %] # [% foo.include_hello %]" => "file error - foo: not found # Hello World! # " ok 91 - Line 442 "[% title = "Previous Title" -%] # [% VIEW foo # include_naked = 1 # title = title or 'Default Title' # copy = 'me, now' # -%] # # [% view.bgcol = '\#ffffff' -%] # # [% BLOCK header -%] # Header: bgcol: [% view.bgcol %] # title: [% title %] # view.title: [% view.title %] # [%- END %] # # [% BLOCK footer -%] # © Copyright [% view.copy %] # [%- END %] # # [% END -%] # [% title = 'New Title' -%] # [% foo.header %] # [% foo.header(bgcol='\#dead' title="Title Parameter") %] # [% foo.footer %] # [% foo.footer(copy="you, then") %] # " => "Header: bgcol: \#ffffff # title: New Title # view.title: Previous Title # Header: bgcol: \#ffffff # title: Title Parameter # view.title: Previous Title # © Copyright me, now # © Copyright me, now # " ok 92 - Line 477 "[% VIEW foo # title = 'My View' # author = 'Andy Wardley' # bgcol = bgcol or '\#ffffff' # -%] # [% view.arg1 = 'argument \#1' -%] # [% view.data.arg2 = 'argument \#2' -%] # [% END -%] # [% foo.title %] # [% foo.author %] # [% foo.bgcol %] # [% foo.arg1 %] # [% foo.arg2 %] # [% bar = foo.clone( title='New View', arg1='New Arg1' ) %]cloned! # [% bar.title %] # [% bar.author %] # [% bar.bgcol %] # [% bar.arg1 %] # [% bar.arg2 %] # originals: # [% foo.title %] # [% foo.arg1 %] # # " => " My View # Andy Wardley # \#ffffff # argument \#1 # argument \#2 # cloned! # New View # Andy Wardley # \#ffffff # New Arg1 # argument \#2 # originals: # My View # argument \#1 # # " ok 93 - Line 517 "[% VIEW basic title = "My Web Site" %] # [% BLOCK header -%] # This is the basic header: [% title or view.title %] # [%- END -%] # [% END -%] # # [%- VIEW fancy # title = "$basic.title" # basic = basic # %] # [% BLOCK header ; view.basic.header(title = title or view.title) %] # Fancy new part of header # [%- END %] # [% END -%] # === # [% basic.header %] # [% basic.header( title = "New Title" ) %] # === # [% fancy.header %] # [% fancy.header( title = "Fancy Title" ) %]" => "=== # This is the basic header: My Web Site # This is the basic header: New Title # === # This is the basic header: My Web Site # Fancy new part of header # This is the basic header: Fancy Title # Fancy new part of header" ok 94 - Line 545 "[% VIEW baz notfound='lost' %] # [% BLOCK lost; 'lost, not found'; END %] # [% END -%] # [% baz.any %]" => "lost, not found" ok 95 - Line 550 "[% VIEW woz prefix='outer_' %] # [% BLOCK wiz; 'The inner wiz'; END %] # [% END -%] # [% BLOCK outer_waz; 'The outer waz'; END -%] # [% woz.wiz %] # [% woz.waz %]" => "The inner wiz # The outer waz" ok 96 - Line 558 "[% VIEW foo %] # # [% BLOCK file -%] # File: [% item.name %] # [%- END -%] # # [% BLOCK directory -%] # Dir: [% item.name %] # [%- END %] # # [% END -%] # [% foo.view_file({ name => 'some_file' }) %] # [% foo.include_file(item => { name => 'some_file' }) %] # [% foo.view('directory', { name => 'some_dir' }) %]" => " File: some_file # File: some_file # Dir: some_dir" ok 97 - Line 575 "[% BLOCK parent -%] # This is the base block # [%- END -%] # [% VIEW super %] # [%- BLOCK parent -%] # [%- INCLUDE parent FILTER replace('base', 'super') -%] # [%- END -%] # [% END -%] # base: [% INCLUDE parent %] # super: [% super.parent %]" => "base: This is the base block # super: This is the super block" ok 98 - Line 587 "[% BLOCK foo -%] # public foo block # [%- END -%] # [% VIEW plain %] # [% BLOCK foo -%] # [% PROCESS foo %] # [%- END %] # [% END -%] # [% VIEW fancy %] # [% BLOCK foo -%] # [%- plain.foo | replace('plain', 'fancy') -%] # [%- END %] # [% END -%] # [% plain.foo %] # [% fancy.foo %]" => "public foo block # public foo block" ok 99 - Line 604 "[% VIEW foo %] # [% BLOCK Blessed_List -%] # This is a list: [% item.as_list.join(', ') %] # [% END -%] # [% END -%] # [% foo.print(blessed_list) %]" => "This is a list: Hello, World # " ok 100 - Line 612 "[% VIEW my.foo value=33; END -%] # n: [% my.foo.value %]" => "n: 33" ok 101 - Line 615 "[% VIEW parent -%] # [% BLOCK one %]This is base one[% END %] # [% BLOCK two %]This is base two[% END %] # [% END -%] # # [%- VIEW child1 base=parent %] # [% BLOCK one %]This is child1 one[% END %] # [% END -%] # # [%- VIEW child2 base=parent %] # [% BLOCK two %]This is child2 two[% END %] # [% END -%] # # [%- VIEW child3 base=child2 %] # [% BLOCK two %]This is child3 two[% END %] # [% END -%] # # [%- FOREACH child = [ child1, child2, child3 ] -%] # one: [% child.one %] # [% END -%] # [% FOREACH child = [ child1, child2, child3 ] -%] # two: [% child.two %] # [% END %] # " => "one: This is child1 one # one: This is base one # one: This is base one # two: This is base two # two: This is child2 two # two: This is child3 two # # " ok 102 - Line 647 "[% VIEW my.view.default # prefix = 'view/default/' # value = 3.14; # END # -%] # value: [% my.view.default.value %]" => "value: 3.14" ok 103 - Line 654 "[% VIEW my.view.default # prefix = 'view/default/' # value = 3.14; # END; # VIEW my.view.one # base = my.view.default # prefix = 'view/one/'; # END; # VIEW my.view.two # base = my.view.default # value = 2.718; # END; # -%] # [% BLOCK view/default/foo %]Default foo[% END -%] # [% BLOCK view/one/foo %]One foo[% END -%] # 0: [% my.view.default.foo %] # 1: [% my.view.one.foo %] # 2: [% my.view.two.foo %] # 0: [% my.view.default.value %] # 1: [% my.view.one.value %] # 2: [% my.view.two.value %]" => "0: Default foo # 1: One foo # 2: Default foo # 0: 3.14 # 1: 3.14 # 2: 2.718" ok 104 - Line 681 "[% VIEW foo number = 10 sealed = 0; END -%] # a: [% foo.number %] # b: [% foo.number = 20 %] # c: [% foo.number %] # d: [% foo.number(30) %] # e: [% foo.number %]" => "a: 10 # b: # c: 20 # d: 30 # e: 30" ok 105 - Line 692 "[% VIEW foo number = 10 silent = 1; END -%] # a: [% foo.number %] # b: [% foo.number = 20 %] # c: [% foo.number %] # d: [% foo.number(30) %] # e: [% foo.number %]" => "a: 10 # b: # c: 10 # d: 10 # e: 10" ### DONE ############################################ compile perl (1) ok t/20_html_template.t .... 1..250 ok 1 - use Template::Alloy; ok 2 - Got a test dir up and running ### VAR ############################################# compile perl (0) ok 3 - Line 94 "Foo" => "Foo" ok 4 - Line 96 "" => "FOO" ok 5 - Line 97 "" => "FOO" ok 6 - Line 98 "" => "FOO" ok 7 - Line 99 "" => "FOO" ok 8 - Line 100 "" => "FOO" ok 9 - Line 101 "" => "FOO" ok 10 - Line 102 "" => "FOO" ok 11 - Line 103 "" => "FOO" ok 12 - Line 104 "" => "FOO" ok 13 - Line 105 "" => "FOO" ok 14 - Line 106 "" => "FOO" ok 15 - Line 107 "" => "FOO" ok 16 - Line 108 "" => "FOO" ok 17 - Line 110 "" => "<>" ok 18 - Line 111 "" => "<>" ok 19 - Line 112 "" => "<>" ok 20 - Line 113 "" => "<>" ok 21 - Line 114 "" => "<>" ok 22 - Line 115 "" => "<>" ok 23 - Line 116 "" => "<>" ok 24 - Line 117 "" => "<>" ok 25 - Line 118 "" => "<>" ok 26 - Line 119 "" => "%3C%3E" ok 27 - Line 120 "" => "<>\n\r \"\'" ok 28 - Line 122 "" => "<>" ok 29 - Line 123 "" => "<>" ok 30 - Line 124 "" => "<>" ok 31 - Line 125 "" => "<>" ok 32 - Line 127 "" => "FOO" ok 33 - Line 128 "" => "FOO" ok 34 - Line 129 "" => "FOO" ok 35 - Line 130 "d" => "bard" ok 36 - Line 131 "d" => "bard" ok 37 - Line 132 "d" => "bard" ok 38 - Line 134 "" => "FOO" ok 39 - Line 135 "" => "FOO" ok 40 - Line 137 "" => "&" ### IF / ELSE / UNLESS ############################## compile perl (0) ok 41 - Line 142 "bar" => "" ok 42 - Line 143 "bar" => "bar" ok 43 - Line 144 "barbing" => "bing" ok 44 - Line 145 "barbing" => "bar" ok 45 - Line 146 "barbing" => "bar" ok 46 - Line 147 "barbing" => "bar" ok 47 - Line 148 "barbing" => "bar" ok 48 - Line 149 "barbing" => "bar" ok 49 - Line 150 "barbing" => "bar" ok 50 - Line 151 "barbing" => "bing" ok 51 - Line 152 "barbing" => "bar" ok 52 - Line 153 " "" ok 53 - Line 154 "barbing" => "bar" ok 54 - Line 155 "barbaz" => "baz" ok 55 - Line 156 "bar" => "bar" ok 56 - Line 157 "bar" => "" ok 57 - Line 158 "barbaz" => "barbaz" ok 58 - Line 159 "barbing" => "bing" ok 59 - Line 160 "barbing" => "bar" ok 60 - Line 162 "barbaz" => "" ok 61 - Line 163 "barbaz" => "" ### INCLUDE ######################################### compile perl (0) ok 62 - Line 168 "bar" => "" ok 63 - Line 169 "" => "Good Day!" ok 64 - Line 170 "" => "Good Day!" ok 65 - Line 171 "" => "Good Day!" ok 66 - Line 172 "" => "Good Day!" ok 67 - Line 173 "" => "Good Day!" ok 68 - Line 174 "" => "Good Day!" ok 69 - Line 175 "" => "" ok 70 - Line 177 "" => "" ok 71 - Line 178 "" => "" ok 72 - Line 180 "" => "Good Day!" ok 73 - Line 181 "" => "Good Day!" ok 74 - Line 182 "" => "Good Day!" ok 75 - Line 184 "" => "()" ok 76 - Line 185 "" => "(hi)" ### EXPR ############################################ compile perl (0) ok 77 - Line 190 "" => "777" ok 78 - Line 191 "" => "777" ok 79 - Line 192 "" => "777" ok 80 - Line 193 "" => "777" ok 81 - Line 194 "" => "777" ok 82 - Line 195 "" => "<>" ok 83 - Line 196 "" => "" ok 84 - Line 197 "" => "" ok 85 - Line 199 "" => "FOO" ok 86 - Line 201 "" => "&" ok 87 - Line 202 "" => "&" ### LOOP ############################################ compile perl (0) ok 88 - Line 207 "foo" => "foo" ok 89 - Line 208 "Hifoo" => "foo" ok 90 - Line 209 "Hifoo" => "Hifoo" ok 91 - Line 210 "Hifoo" => "HiHifoo" ok 92 - Line 211 "()foo" => "(1)(2)(3)foo" ok 93 - Line 212 "()foo" => "(1)(2)(3)foo" ok 94 - Line 213 "()foo" => "(1)(2)(3)foo" ok 95 - Line 215 "()()foo" => "(1)(B)(2)(B)(3)(B)foo" ok 96 - Line 217 "()()foo" => "(1)()(2)()(3)()foo" ok 97 - Line 218 "()()foo" => "(1)(B)(2)(B)(3)(B)foo" ok 98 - Line 220 "()foo" => "(1)()(3)foo" ok 99 - Line 222 " # (||||)foo" => " # (||||) # (||||) # (||||)foo" ok 100 - Line 232 " # (||||)foo" => " # (1|0|1|0|1) # (0|0|0|1|2) # (0|1|1|0|3)foo" ### TT3 DIRECTIVES ################################## compile perl (0) ok 101 - Line 241 "" => "FOO" ok 102 - Line 242 "" => "" ok 103 - Line 243 "" => "" ok 104 - Line 244 "" => "10" ok 105 - Line 246 "barweebing" => "bar" ok 106 - Line 248 "()" => "(foo)" ok 107 - Line 249 "()" => "(foo)" ok 108 - Line 250 "()" => "(1)(2)(3)" ok 109 - Line 252 "()" => "(bar)" ok 110 - Line 253 "()" => "(bar)" ok 111 - Line 255 "" => "bar" ok 112 - Line 257 "You said " => "You said hello" ok 113 - Line 259 "" => "&" ok 114 - Line 260 "" => "&" ### TT3 CHOMPING #################################### compile perl (0) ok 115 - Line 265 " # " => " # FOO" ok 116 - Line 266 " # " => "FOO" ok 117 - Line 267 " # <-TMPL_GET foo>" => "FOO" ### TT3 INTERPOLATE ################################# compile perl (0) ok 118 - Line 272 "$foo ${ 1 + 2 }" => "$foo FOO ${ 1 + 2 }" ok 119 - Line 273 "$foo ${ 1 + 2 }" => "FOO FOO 3" ok 120 - Line 274 " 1>$foo ${ 1 + 2 }" => "FOO FOO 3" ok 121 - Line 276 "Foo $a Bar $!a Baz" => "Foo 7 Bar 7 Baz" ok 122 - Line 277 "Foo $a Bar $!{a} Baz" => "Foo 7 Bar 7 Baz" ok 123 - Line 278 "Foo $a Bar $!a Baz" => "Foo 7 Bar 7 Baz" ok 124 - Line 279 "Foo $a Bar $!{a} Baz" => "Foo 7 Bar 7 Baz" ok 125 - Line 280 "Foo $a Bar $!a Baz" => "Foo $a Bar Baz" ok 126 - Line 281 "Foo ${a} Bar $!{a} Baz" => "Foo ${a} Bar Baz" ### DONE ############################################ compile perl (0) ### VAR ############################################# compile perl (1) ok 127 - Line 94 "Foo" => "Foo" ok 128 - Line 96 "" => "FOO" ok 129 - Line 97 "" => "FOO" ok 130 - Line 98 "" => "FOO" ok 131 - Line 99 "" => "FOO" ok 132 - Line 100 "" => "FOO" ok 133 - Line 101 "" => "FOO" ok 134 - Line 102 "" => "FOO" ok 135 - Line 103 "" => "FOO" ok 136 - Line 104 "" => "FOO" ok 137 - Line 105 "" => "FOO" ok 138 - Line 106 "" => "FOO" ok 139 - Line 107 "" => "FOO" ok 140 - Line 108 "" => "FOO" ok 141 - Line 110 "" => "<>" ok 142 - Line 111 "" => "<>" ok 143 - Line 112 "" => "<>" ok 144 - Line 113 "" => "<>" ok 145 - Line 114 "" => "<>" ok 146 - Line 115 "" => "<>" ok 147 - Line 116 "" => "<>" ok 148 - Line 117 "" => "<>" ok 149 - Line 118 "" => "<>" ok 150 - Line 119 "" => "%3C%3E" ok 151 - Line 120 "" => "<>\n\r \"\'" ok 152 - Line 122 "" => "<>" ok 153 - Line 123 "" => "<>" ok 154 - Line 124 "" => "<>" ok 155 - Line 125 "" => "<>" ok 156 - Line 127 "" => "FOO" ok 157 - Line 128 "" => "FOO" ok 158 - Line 129 "" => "FOO" ok 159 - Line 130 "d" => "bard" ok 160 - Line 131 "d" => "bard" ok 161 - Line 132 "d" => "bard" ok 162 - Line 134 "" => "FOO" ok 163 - Line 135 "" => "FOO" ok 164 - Line 137 "" => "&" ### IF / ELSE / UNLESS ############################## compile perl (1) ok 165 - Line 142 "bar" => "" ok 166 - Line 143 "bar" => "bar" ok 167 - Line 144 "barbing" => "bing" ok 168 - Line 145 "barbing" => "bar" ok 169 - Line 146 "barbing" => "bar" ok 170 - Line 147 "barbing" => "bar" ok 171 - Line 148 "barbing" => "bar" ok 172 - Line 149 "barbing" => "bar" ok 173 - Line 150 "barbing" => "bar" ok 174 - Line 151 "barbing" => "bing" ok 175 - Line 152 "barbing" => "bar" ok 176 - Line 153 " "" ok 177 - Line 154 "barbing" => "bar" ok 178 - Line 155 "barbaz" => "baz" ok 179 - Line 156 "bar" => "bar" ok 180 - Line 157 "bar" => "" ok 181 - Line 158 "barbaz" => "barbaz" ok 182 - Line 159 "barbing" => "bing" ok 183 - Line 160 "barbing" => "bar" ok 184 - Line 162 "barbaz" => "" ok 185 - Line 163 "barbaz" => "" ### INCLUDE ######################################### compile perl (1) ok 186 - Line 168 "bar" => "" ok 187 - Line 169 "" => "Good Day!" ok 188 - Line 170 "" => "Good Day!" ok 189 - Line 171 "" => "Good Day!" ok 190 - Line 172 "" => "Good Day!" ok 191 - Line 173 "" => "Good Day!" ok 192 - Line 174 "" => "Good Day!" ok 193 - Line 175 "" => "" ok 194 - Line 177 "" => "" ok 195 - Line 178 "" => "" ok 196 - Line 180 "" => "Good Day!" ok 197 - Line 181 "" => "Good Day!" ok 198 - Line 182 "" => "Good Day!" ok 199 - Line 184 "" => "()" ok 200 - Line 185 "" => "(hi)" ### EXPR ############################################ compile perl (1) ok 201 - Line 190 "" => "777" ok 202 - Line 191 "" => "777" ok 203 - Line 192 "" => "777" ok 204 - Line 193 "" => "777" ok 205 - Line 194 "" => "777" ok 206 - Line 195 "" => "<>" ok 207 - Line 196 "" => "" ok 208 - Line 197 "" => "" ok 209 - Line 199 "" => "FOO" ok 210 - Line 201 "" => "&" ok 211 - Line 202 "" => "&" ### LOOP ############################################ compile perl (1) ok 212 - Line 207 "foo" => "foo" ok 213 - Line 208 "Hifoo" => "foo" ok 214 - Line 209 "Hifoo" => "Hifoo" ok 215 - Line 210 "Hifoo" => "HiHifoo" ok 216 - Line 211 "()foo" => "(1)(2)(3)foo" ok 217 - Line 212 "()foo" => "(1)(2)(3)foo" ok 218 - Line 213 "()foo" => "(1)(2)(3)foo" ok 219 - Line 215 "()()foo" => "(1)(B)(2)(B)(3)(B)foo" ok 220 - Line 217 "()()foo" => "(1)()(2)()(3)()foo" ok 221 - Line 218 "()()foo" => "(1)(B)(2)(B)(3)(B)foo" ok 222 - Line 220 "()foo" => "(1)()(3)foo" ok 223 - Line 222 " # (||||)foo" => " # (||||) # (||||) # (||||)foo" ok 224 - Line 232 " # (||||)foo" => " # (1|0|1|0|1) # (0|0|0|1|2) # (0|1|1|0|3)foo" ### TT3 DIRECTIVES ################################## compile perl (1) ok 225 - Line 241 "" => "FOO" ok 226 - Line 242 "" => "" ok 227 - Line 243 "" => "" ok 228 - Line 244 "" => "10" ok 229 - Line 246 "barweebing" => "bar" ok 230 - Line 248 "()" => "(foo)" ok 231 - Line 249 "()" => "(foo)" ok 232 - Line 250 "()" => "(1)(2)(3)" ok 233 - Line 252 "()" => "(bar)" ok 234 - Line 253 "()" => "(bar)" ok 235 - Line 255 "" => "bar" ok 236 - Line 257 "You said " => "You said hello" ok 237 - Line 259 "" => "&" ok 238 - Line 260 "" => "&" ### TT3 CHOMPING #################################### compile perl (1) ok 239 - Line 265 " # " => " # FOO" ok 240 - Line 266 " # " => "FOO" ok 241 - Line 267 " # <-TMPL_GET foo>" => "FOO" ### TT3 INTERPOLATE ################################# compile perl (1) ok 242 - Line 272 "$foo ${ 1 + 2 }" => "$foo FOO ${ 1 + 2 }" ok 243 - Line 273 "$foo ${ 1 + 2 }" => "FOO FOO 3" ok 244 - Line 274 " 1>$foo ${ 1 + 2 }" => "FOO FOO 3" ok 245 - Line 276 "Foo $a Bar $!a Baz" => "Foo 7 Bar 7 Baz" ok 246 - Line 277 "Foo $a Bar $!{a} Baz" => "Foo 7 Bar 7 Baz" ok 247 - Line 278 "Foo $a Bar $!a Baz" => "Foo 7 Bar 7 Baz" ok 248 - Line 279 "Foo $a Bar $!{a} Baz" => "Foo 7 Bar 7 Baz" ok 249 - Line 280 "Foo $a Bar $!a Baz" => "Foo $a Bar Baz" ok 250 - Line 281 "Foo ${a} Bar $!{a} Baz" => "Foo ${a} Bar Baz" ### DONE ############################################ compile perl (1) ok t/25_text_tmp.t ......... 1..100 ok 1 - use Template::Alloy; ok 2 - Got a test dir up and running ### ECHO ############################################ compile perl (0) ok 3 - Line 99 "Foo" => "Foo" ok 4 - Line 101 "\#[echo $foo]\#bar" => "bar" ok 5 - Line 102 "\#[echo $foo]\#" => "FOO" ok 6 - Line 103 "\#[echo $foo $foo]\#" => "FOOFOO" ok 7 - Line 104 "\#[echo $foo "bar" $foo]\#" => "FOObarFOO" ok 8 - Line 105 "\#[echo "hi"]\#" => "hi" ok 9 - Line 106 "\#[echo 'hi']\#" => "hi" ok 10 - Line 107 "\#[echo foo]\#" => "FOO" ### COMMENT ######################################### compile perl (0) ok 11 - Line 112 "\#[comment]\# Hi there \#[endcomment]\#bar" => "bar" ok 12 - Line 113 "\#[comment]\# Hi there \#[end]\#bar" => "bar" ### IF / ELSIF / ELSE / IFN ######################### compile perl (0) ok 13 - Line 118 "\#[if $foo]\#bar\#[endif]\#bar" => "bar" ok 14 - Line 119 "\#[if "1"]\#bar\#[endif]\#" => "bar" ok 15 - Line 120 "\#[if $foo]\#bar\#[endif]\#" => "" ok 16 - Line 121 "\#[if $foo]\#bar\#[endif]\#" => "bar" ok 17 - Line 122 "\#[ifn $foo]\#bar\#[endifn]\#" => "bar" ok 18 - Line 123 "\#[ifn $foo]\#bar\#[endifn]\#" => "" ok 19 - Line 124 "\#[if foo]\#bar\#[endif]\#" => "" ok 20 - Line 125 "\#[if foo]\#bar\#[endif]\#" => "bar" ok 21 - Line 126 "\#[if $foo]\#bar\#[else]\#bing\#[endif]\#" => "bing" ok 22 - Line 127 "\#[if $foo]\#bar\#[else]\#bing\#[endif]\#" => "bar" ok 23 - Line 128 "\#[if $foo]\#bar\#[elsif wow]\#wee\#[else]\#bing\#[endif]\#" => "bar" ok 24 - Line 129 "\#[if $foo]\#bar\#[elsif wow]\#wee\#[else]\#bing\#[endif]\#" => "wee" ok 25 - Line 130 "\#[if $foo]\#bar\#[elsif wow]\#wee\#[else]\#bing\#[endif]\#" => "bing" ### INCLUDE ######################################### compile perl (0) ok 26 - Line 136 "\#[include "foo.tmpl"]\#" => "Good Day!" ok 27 - Line 137 "\#[include "t/25_text_tmp.t.test_dir/foo.tmpl"]\#" => "Good Day!" ok 28 - Line 139 "\#[include "bar.tmpl"]\#" => "()" ok 29 - Line 140 "\#[include "bar.tmpl"]\#" => "(hi)" ### LOOP ############################################ compile perl (0) ok 30 - Line 145 "\#[loop "loop1"]\#Hi\#[endloop]\#foo" => "foo" ok 31 - Line 146 "\#[loop "loop1"]\#Hi\#[endloop]\#foo" => "Hifoo" ok 32 - Line 147 "\#[loop "loop1"]\#\#[echo $bar]\#\#[endloop]\#foo" => "bingfoo" ok 33 - Line 148 "\#[loop "loop1"]\#\#[echo $bar]\#\#[endloop]\#foo" => "bingfoo" ok 34 - Line 149 "\#[loop "loop1"]\#\#[echo $bar]\#\#[endloop]\#foo" => "bingbangfoo" ok 35 - Line 150 "\#[loop "loop1"]\#\#[echo $boop]\#\#[endloop]\#foo" => "bopfoo" ### TT3 DIRECTIVES ################################## compile perl (0) ok 36 - Line 155 "\#[GET foo]\#" => "FOO" ok 37 - Line 156 "\#[GET 1+2+3+4]\#" => "10" ok 38 - Line 158 "\#[IF foo]\#bar\#[ELSIF wow]\#wee\#[ELSE]\#bing\#[ENDIF]\#" => "bar" ok 39 - Line 160 "\#[SET i = "foo"]\#(\#[VAR i]\#)" => "(foo)" ok 40 - Line 161 "\#[SET i = "foo"]\#(\#[GET i]\#)" => "(foo)" ok 41 - Line 162 "\#[FOR i IN [1..3]]\#(\#[VAR i]\#)\#[END]\#" => "(1)(2)(3)" ok 42 - Line 164 "\#[BLOCK foo]\#(\#[VAR i]\#)\#[END]\#\#[PROCESS foo i="bar"]\#" => "(bar)" ok 43 - Line 165 "\#[BLOCK foo]\#(\#[VAR i]\#)\#[END]\#\#[SET wow = PROCESS foo i="bar"]\#\#[VAR wow]\#" => "(bar)" ok 44 - Line 167 "\#[GET template.foo]\#\#[META foo = "bar"]\#" => "bar" ok 45 - Line 169 "\#[MACRO bar(n) BLOCK]\#You said \#[VAR n]\#\#[END]\#\#[GET bar("hello")]\#" => "You said hello" ### TT3 CHOMPING #################################### compile perl (0) ok 46 - Line 174 " # \#[GET foo]\#" => " # FOO" ok 47 - Line 175 "\#[GET foo-]\# # " => "FOO" ok 48 - Line 176 " # \#[-GET foo]\#" => "FOO" ### TT3 INTERPOLATE ################################# compile perl (0) ok 49 - Line 181 "$foo \#[GET foo]\# ${ 1 + 2 }" => "$foo FOO ${ 1 + 2 }" ok 50 - Line 182 "$foo \#[GET foo]\# ${ 1 + 2 }" => "FOO FOO 3" ok 51 - Line 183 "\#[CONFIG INTERPOLATE => 1]\#$foo \#[GET foo]\# ${ 1 + 2 }" => "FOO FOO 3" ### DONE ############################################ compile perl (0) ### ECHO ############################################ compile perl (1) ok 52 - Line 99 "Foo" => "Foo" ok 53 - Line 101 "\#[echo $foo]\#bar" => "bar" ok 54 - Line 102 "\#[echo $foo]\#" => "FOO" ok 55 - Line 103 "\#[echo $foo $foo]\#" => "FOOFOO" ok 56 - Line 104 "\#[echo $foo "bar" $foo]\#" => "FOObarFOO" ok 57 - Line 105 "\#[echo "hi"]\#" => "hi" ok 58 - Line 106 "\#[echo 'hi']\#" => "hi" ok 59 - Line 107 "\#[echo foo]\#" => "FOO" ### COMMENT ######################################### compile perl (1) ok 60 - Line 112 "\#[comment]\# Hi there \#[endcomment]\#bar" => "bar" ok 61 - Line 113 "\#[comment]\# Hi there \#[end]\#bar" => "bar" ### IF / ELSIF / ELSE / IFN ######################### compile perl (1) ok 62 - Line 118 "\#[if $foo]\#bar\#[endif]\#bar" => "bar" ok 63 - Line 119 "\#[if "1"]\#bar\#[endif]\#" => "bar" ok 64 - Line 120 "\#[if $foo]\#bar\#[endif]\#" => "" ok 65 - Line 121 "\#[if $foo]\#bar\#[endif]\#" => "bar" ok 66 - Line 122 "\#[ifn $foo]\#bar\#[endifn]\#" => "bar" ok 67 - Line 123 "\#[ifn $foo]\#bar\#[endifn]\#" => "" ok 68 - Line 124 "\#[if foo]\#bar\#[endif]\#" => "" ok 69 - Line 125 "\#[if foo]\#bar\#[endif]\#" => "bar" ok 70 - Line 126 "\#[if $foo]\#bar\#[else]\#bing\#[endif]\#" => "bing" ok 71 - Line 127 "\#[if $foo]\#bar\#[else]\#bing\#[endif]\#" => "bar" ok 72 - Line 128 "\#[if $foo]\#bar\#[elsif wow]\#wee\#[else]\#bing\#[endif]\#" => "bar" ok 73 - Line 129 "\#[if $foo]\#bar\#[elsif wow]\#wee\#[else]\#bing\#[endif]\#" => "wee" ok 74 - Line 130 "\#[if $foo]\#bar\#[elsif wow]\#wee\#[else]\#bing\#[endif]\#" => "bing" ### INCLUDE ######################################### compile perl (1) ok 75 - Line 136 "\#[include "foo.tmpl"]\#" => "Good Day!" ok 76 - Line 137 "\#[include "t/25_text_tmp.t.test_dir/foo.tmpl"]\#" => "Good Day!" ok 77 - Line 139 "\#[include "bar.tmpl"]\#" => "()" ok 78 - Line 140 "\#[include "bar.tmpl"]\#" => "(hi)" ### LOOP ############################################ compile perl (1) ok 79 - Line 145 "\#[loop "loop1"]\#Hi\#[endloop]\#foo" => "foo" ok 80 - Line 146 "\#[loop "loop1"]\#Hi\#[endloop]\#foo" => "Hifoo" ok 81 - Line 147 "\#[loop "loop1"]\#\#[echo $bar]\#\#[endloop]\#foo" => "bingfoo" ok 82 - Line 148 "\#[loop "loop1"]\#\#[echo $bar]\#\#[endloop]\#foo" => "bingfoo" ok 83 - Line 149 "\#[loop "loop1"]\#\#[echo $bar]\#\#[endloop]\#foo" => "bingbangfoo" ok 84 - Line 150 "\#[loop "loop1"]\#\#[echo $boop]\#\#[endloop]\#foo" => "bopfoo" ### TT3 DIRECTIVES ################################## compile perl (1) ok 85 - Line 155 "\#[GET foo]\#" => "FOO" ok 86 - Line 156 "\#[GET 1+2+3+4]\#" => "10" ok 87 - Line 158 "\#[IF foo]\#bar\#[ELSIF wow]\#wee\#[ELSE]\#bing\#[ENDIF]\#" => "bar" ok 88 - Line 160 "\#[SET i = "foo"]\#(\#[VAR i]\#)" => "(foo)" ok 89 - Line 161 "\#[SET i = "foo"]\#(\#[GET i]\#)" => "(foo)" ok 90 - Line 162 "\#[FOR i IN [1..3]]\#(\#[VAR i]\#)\#[END]\#" => "(1)(2)(3)" ok 91 - Line 164 "\#[BLOCK foo]\#(\#[VAR i]\#)\#[END]\#\#[PROCESS foo i="bar"]\#" => "(bar)" ok 92 - Line 165 "\#[BLOCK foo]\#(\#[VAR i]\#)\#[END]\#\#[SET wow = PROCESS foo i="bar"]\#\#[VAR wow]\#" => "(bar)" ok 93 - Line 167 "\#[GET template.foo]\#\#[META foo = "bar"]\#" => "bar" ok 94 - Line 169 "\#[MACRO bar(n) BLOCK]\#You said \#[VAR n]\#\#[END]\#\#[GET bar("hello")]\#" => "You said hello" ### TT3 CHOMPING #################################### compile perl (1) ok 95 - Line 174 " # \#[GET foo]\#" => " # FOO" ok 96 - Line 175 "\#[GET foo-]\# # " => "FOO" ok 97 - Line 176 " # \#[-GET foo]\#" => "FOO" ### TT3 INTERPOLATE ################################# compile perl (1) ok 98 - Line 181 "$foo \#[GET foo]\# ${ 1 + 2 }" => "$foo FOO ${ 1 + 2 }" ok 99 - Line 182 "$foo \#[GET foo]\# ${ 1 + 2 }" => "FOO FOO 3" ok 100 - Line 183 "\#[CONFIG INTERPOLATE => 1]\#$foo \#[GET foo]\# ${ 1 + 2 }" => "FOO FOO 3" ### DONE ############################################ compile perl (1) ok t/30_velocity.t ......... 1..202 ok 1 - use Template::Alloy; ok 2 - Got a test dir up and running ### VARIABLES ####################################### compile perl (0) ok 3 - Line 80 "Foo" => "Foo" ok 4 - Line 81 "$mud_Slinger_9" => "bar" ok 5 - Line 82 "$!mud_Slinger_9" => "bar" ok 6 - Line 83 "${mud_Slinger_9}" => "bar" ok 7 - Line 84 "$!{mud_Slinger_9}" => "bar" ok 8 - Line 85 "$mud_Slinger_9<<" => "$mud_Slinger_9<<" ok 9 - Line 86 "$!mud_Slinger_9<<" => "<<" ok 10 - Line 87 "${mud_Slinger_9}<<" => "${mud_Slinger_9}<<" ok 11 - Line 88 "$!{mud_Slinger_9}<<" => "<<" ### SET ############################################# compile perl (0) ok 12 - Line 93 "\#set($foo = "bar")$foo" => "bar" ok 13 - Line 95 "\#set($monkey = $bill)$monkey" => "Bill" ok 14 - Line 96 "\#set($monkey.Friend = 'monica')$monkey.Friend" => "monica" ok 15 - Line 97 "\#set($monkey.Blame = $whitehouse.Leak)$monkey.Blame" => "from_velocity_ref_guide" ok 16 - Line 98 "\#set($monkey.Plan = $spindoctor.weave($web))$monkey.Plan" => "(spider)" ok 17 - Line 99 "\#set($monkey.Number = 123)$monkey.Number" => "123" ok 18 - Line 100 "\#set($monkey.Numbers = [1..3])$monkey.Numbers.2" => "3" ok 19 - Line 101 "\#set($monkey.Map = {"banana" : "good"})$monkey.Map.banana" => "good" ok 20 - Line 103 "\#set($value = $foo + 1)$value" => "9" ok 21 - Line 104 "\#set($value = $bar - 1)$value" => "3" ok 22 - Line 105 "\#set($value = $foo * $bar)$value" => "32" ok 23 - Line 106 "\#set($value = $foo / $bar)$value" => "2" ok 24 - Line 107 "\#set($value = $foo % $bar)$value" => "0" ok 25 - Line 109 "\#set($!value = $foo + 1)$value" => "" ### QUOTED STRINGS ################################## compile perl (0) ok 26 - Line 114 "\#set($value = "($foo)")$value" => "(bar)" ok 27 - Line 115 "\#set($value = "(\#get($foo))")$value" => "(bar)" ok 28 - Line 116 "\#set($value = "($foo)")$value" => "(bar)" ok 29 - Line 117 "\#set($value = "(\#get($foo))")$value" => "(\#get(bar))" ok 30 - Line 118 "\#set($value = '($foo)')$value" => "($foo)" ok 31 - Line 119 "\#set($value = '(\#get($foo))')$value" => "(\#get($foo))" ok 32 - Line 121 "\#set($value = "($foo)")$value" => "($foo)" ok 33 - Line 122 "\#set($value = "(\#get($foo))")$value" => "()" ok 34 - Line 123 "\#set($value = "($foo)")$value" => "($foo)" ok 35 - Line 124 "\#set($value = "(\#get($foo))")$value" => "(\#get($foo))" ok 36 - Line 126 "\#set($value = "($!foo)")$value" => "()" ok 37 - Line 127 "\#set($value = "(\#get($!foo))")$value" => "" ok 38 - Line 128 "\#set($value = "($!foo)")$value" => "()" ok 39 - Line 129 "\#set($value = "(\#get($!foo))")$value" => "(\#get())" ### COMMENTS ######################################## compile perl (0) ok 40 - Line 134 "Foo\#\#interesting # Bar" => "FooBar" ok 41 - Line 135 "Foo\#\#interesting # # Bar" => "Foo # Bar" ok 42 - Line 136 "Foo\#\#interesting" => "Foo" ok 43 - Line 137 "Foo\#*interesting # " => "" ok 44 - Line 138 "Foo\#*interesting # # # *\#" => "Foo" ok 45 - Line 139 "Foo\#*interesting # # # *\#Bar" => "FooBar" ### ESCAPING ######################################## compile perl (0) ok 46 - Line 144 "$email" => "foo" ok 47 - Line 145 "\$email" => "$email" ok 48 - Line 146 "\\$email" => "\foo" ok 49 - Line 147 "\\\$email" => "\$email" ok 50 - Line 149 "$email" => "$email" ok 51 - Line 150 "\$email" => "$email" ok 52 - Line 151 "\\$email" => "\$email" ok 53 - Line 152 "\\\$email" => "\$email" ### IF / ELSEIF / ELSE ############################## compile perl (0) ok 54 - Line 157 "\#if($foo)bar\#{end}bar" => "bar" ok 55 - Line 158 "\#if("1")bar\#end" => "bar" ok 56 - Line 159 "\#if($foo)bar\#end" => "" ok 57 - Line 160 "\#if($foo)bar\#end" => "bar" ok 58 - Line 161 "\#if($foo)bar\#{else}baz\#end" => "bar" ok 59 - Line 162 "\#if($foo)bar\#{else}baz\#end" => "baz" ok 60 - Line 163 "\#if($foo)bar\#elseif($bing)bang\#{else}baz\#end" => "baz" ok 61 - Line 164 "\#if($foo)bar\#elseif($bing)bang\#{else}baz\#end" => "bang" ### FOREACH ######################################## compile perl (0) ok 62 - Line 169 "\#foreach( foo )bar\#{end}" => "bar" ok 63 - Line 170 "\#foreach( f IN foo )bar$f\#{end}" => "bar1bar2" ok 64 - Line 171 "\#foreach( f = foo )bar$f\#{end}" => "bar1bar2" ok 65 - Line 172 "\#foreach( f = [1,2] )bar$f\#{end}" => "bar1bar2" ok 66 - Line 173 "\#foreach( f = [1..3] )bar$f\#{end}" => "bar1bar2bar3" ok 67 - Line 174 "\#foreach( f = [{a=>'A'},{a=>'B'}] )bar$f.a\#{end}" => "barAbarB" ok 68 - Line 175 "\#foreach( [{a=>'A'},{a=>'B'}] )bar$a\#{end}" => "barAbarB" ok 69 - Line 176 "\#foreach( [{a=>'A'},{a=>'B'}] )bar$a\#{end}$!a" => "barAbarB" ok 70 - Line 177 "\#foreach( f = [1..3] )$loop.count/$loop.size \#{end}" => "1/3 2/3 3/3 " ### INCLUDE ######################################### compile perl (0) ok 71 - Line 183 "\#include("foo.vel")" => "Good Day!" ok 72 - Line 184 "\#parse($foo)" => "Good Day!" ok 73 - Line 185 "\#include("bar.vel")" => "($bar)" ok 74 - Line 186 "\#include("bar.vel")" => "($bar)" ### PARSE ############################################ compile perl (0) ok 75 - Line 191 "\#parse("foo.vel")" => "Good Day!" ok 76 - Line 192 "\#parse($foo)" => "Good Day!" ok 77 - Line 193 "\#parse("bar.vel")" => "($bar)" ok 78 - Line 194 "\#parse("bar.vel")" => "(foo)" ### STOP ############################################ compile perl (0) ok 79 - Line 199 "\#stop" => "" ok 80 - Line 200 "One\#{stop}Two" => "One" ok 81 - Line 201 "\#block('foo')One\#{stop}Two\#{end}First\#process('foo')Last" => "FirstOne" ok 82 - Line 202 "\#foreach( $f = [1..3] )$f\#if(loop.first)\#end$f\#end" => "112233" ok 83 - Line 203 "\#foreach( $f = [1..3] )$f\#if(loop.first)\#stop\#end\#end" => "1" ok 84 - Line 204 "\#foreach( $f = [1..3] )\#if(loop.first)\#stop\#end$f\#end" => "" ### EVALUATE ######################################## compile perl (0) ok 85 - Line 209 "\#set($f = '>\#try\#evaluate($f)\#{catch}caught\#end')\#evaluate($f)" => ">>>>>caught" ok 86 - Line 210 "\#set($f = '>\#try\#eval($f)\#{catch}foo\#end')\#eval($f)\#EVALUATE($f)" => ">>foo>>foo" ### MACRO ########################################### compile perl (0) ok 87 - Line 215 "\#macro(foo PROCESS bar )\#block(bar)Hi\#end$foo" => "Hi" ok 88 - Line 216 "\#macro(foo BLOCK)Hi\#end$foo" => "Hi" ok 89 - Line 217 "\#macro(foo $n BLOCK)Hi$n\#end$foo" => "Hi$n" ok 90 - Line 218 "\#macro(foo $n BLOCK)Hi$n\#end$foo(2)" => "Hi2" ok 91 - Line 219 "\#macro(foo(n) BLOCK)Hi$n\#end$foo" => "Hi$n" ok 92 - Line 220 "\#macro(foo(n) BLOCK)Hi$n\#end$foo(2)" => "Hi2" ok 93 - Line 221 "\#macro(foo $n)Hi$n\#end$foo" => "Hi$n" ok 94 - Line 222 "\#macro(foo $n)Hi$n\#end$foo(2)" => "Hi2" ok 95 - Line 223 "\#macro(foo $n)Hi$n\#end\#foo(2)" => "Hi2" ok 96 - Line 224 "\#macro(foo $n $m)Hi($n)($m)\#end\#foo(2 3)" => "Hi(2)(3)" ok 97 - Line 226 "\#macro( inner $foo ) # inner : $foo # \#end # # \#macro( outer $foo ) # \#set($bar = "outerlala") # outer : $foo # \#end # # \#set($bar = "calltimelala") # \#outer( "\#inner($bar)" )" => " outer : inner : calltimelala" ok 98 - Line 238 "\#macro( inner $foo ) # inner : $foo # \#end # # \#macro( outer $foo ) # \#set($bar = "outerlala") # outer : $foo|eval # \#end # # \#set($bar = "calltimelala") # \#outer( "\#inner('$bar')" )" => " outer : inner : outerlala" ### TT3 CHOMPING #################################### compile perl (0) ok 99 - Line 253 " # \#get( $foo )" => " # FOO" ok 100 - Line 254 "\#get( $foo -) # " => "FOO" ok 101 - Line 255 " # \#get(- $foo)" => "FOO" ok 102 - Line 256 " # \#get( -$foo)" => " # -7" ### DONE ############################################ compile perl (0) ### VARIABLES ####################################### compile perl (1) ok 103 - Line 80 "Foo" => "Foo" ok 104 - Line 81 "$mud_Slinger_9" => "bar" ok 105 - Line 82 "$!mud_Slinger_9" => "bar" ok 106 - Line 83 "${mud_Slinger_9}" => "bar" ok 107 - Line 84 "$!{mud_Slinger_9}" => "bar" ok 108 - Line 85 "$mud_Slinger_9<<" => "$mud_Slinger_9<<" ok 109 - Line 86 "$!mud_Slinger_9<<" => "<<" ok 110 - Line 87 "${mud_Slinger_9}<<" => "${mud_Slinger_9}<<" ok 111 - Line 88 "$!{mud_Slinger_9}<<" => "<<" ### SET ############################################# compile perl (1) ok 112 - Line 93 "\#set($foo = "bar")$foo" => "bar" ok 113 - Line 95 "\#set($monkey = $bill)$monkey" => "Bill" ok 114 - Line 96 "\#set($monkey.Friend = 'monica')$monkey.Friend" => "monica" ok 115 - Line 97 "\#set($monkey.Blame = $whitehouse.Leak)$monkey.Blame" => "from_velocity_ref_guide" ok 116 - Line 98 "\#set($monkey.Plan = $spindoctor.weave($web))$monkey.Plan" => "(spider)" ok 117 - Line 99 "\#set($monkey.Number = 123)$monkey.Number" => "123" ok 118 - Line 100 "\#set($monkey.Numbers = [1..3])$monkey.Numbers.2" => "3" ok 119 - Line 101 "\#set($monkey.Map = {"banana" : "good"})$monkey.Map.banana" => "good" ok 120 - Line 103 "\#set($value = $foo + 1)$value" => "9" ok 121 - Line 104 "\#set($value = $bar - 1)$value" => "3" ok 122 - Line 105 "\#set($value = $foo * $bar)$value" => "32" ok 123 - Line 106 "\#set($value = $foo / $bar)$value" => "2" ok 124 - Line 107 "\#set($value = $foo % $bar)$value" => "0" ok 125 - Line 109 "\#set($!value = $foo + 1)$value" => "" ### QUOTED STRINGS ################################## compile perl (1) ok 126 - Line 114 "\#set($value = "($foo)")$value" => "(bar)" ok 127 - Line 115 "\#set($value = "(\#get($foo))")$value" => "(bar)" ok 128 - Line 116 "\#set($value = "($foo)")$value" => "(bar)" ok 129 - Line 117 "\#set($value = "(\#get($foo))")$value" => "(\#get(bar))" ok 130 - Line 118 "\#set($value = '($foo)')$value" => "($foo)" ok 131 - Line 119 "\#set($value = '(\#get($foo))')$value" => "(\#get($foo))" ok 132 - Line 121 "\#set($value = "($foo)")$value" => "($foo)" ok 133 - Line 122 "\#set($value = "(\#get($foo))")$value" => "()" ok 134 - Line 123 "\#set($value = "($foo)")$value" => "($foo)" ok 135 - Line 124 "\#set($value = "(\#get($foo))")$value" => "(\#get($foo))" ok 136 - Line 126 "\#set($value = "($!foo)")$value" => "()" ok 137 - Line 127 "\#set($value = "(\#get($!foo))")$value" => "" ok 138 - Line 128 "\#set($value = "($!foo)")$value" => "()" ok 139 - Line 129 "\#set($value = "(\#get($!foo))")$value" => "(\#get())" ### COMMENTS ######################################## compile perl (1) ok 140 - Line 134 "Foo\#\#interesting # Bar" => "FooBar" ok 141 - Line 135 "Foo\#\#interesting # # Bar" => "Foo # Bar" ok 142 - Line 136 "Foo\#\#interesting" => "Foo" ok 143 - Line 137 "Foo\#*interesting # " => "" ok 144 - Line 138 "Foo\#*interesting # # # *\#" => "Foo" ok 145 - Line 139 "Foo\#*interesting # # # *\#Bar" => "FooBar" ### ESCAPING ######################################## compile perl (1) ok 146 - Line 144 "$email" => "foo" ok 147 - Line 145 "\$email" => "$email" ok 148 - Line 146 "\\$email" => "\foo" ok 149 - Line 147 "\\\$email" => "\$email" ok 150 - Line 149 "$email" => "$email" ok 151 - Line 150 "\$email" => "$email" ok 152 - Line 151 "\\$email" => "\$email" ok 153 - Line 152 "\\\$email" => "\$email" ### IF / ELSEIF / ELSE ############################## compile perl (1) ok 154 - Line 157 "\#if($foo)bar\#{end}bar" => "bar" ok 155 - Line 158 "\#if("1")bar\#end" => "bar" ok 156 - Line 159 "\#if($foo)bar\#end" => "" ok 157 - Line 160 "\#if($foo)bar\#end" => "bar" ok 158 - Line 161 "\#if($foo)bar\#{else}baz\#end" => "bar" ok 159 - Line 162 "\#if($foo)bar\#{else}baz\#end" => "baz" ok 160 - Line 163 "\#if($foo)bar\#elseif($bing)bang\#{else}baz\#end" => "baz" ok 161 - Line 164 "\#if($foo)bar\#elseif($bing)bang\#{else}baz\#end" => "bang" ### FOREACH ######################################## compile perl (1) ok 162 - Line 169 "\#foreach( foo )bar\#{end}" => "bar" ok 163 - Line 170 "\#foreach( f IN foo )bar$f\#{end}" => "bar1bar2" ok 164 - Line 171 "\#foreach( f = foo )bar$f\#{end}" => "bar1bar2" ok 165 - Line 172 "\#foreach( f = [1,2] )bar$f\#{end}" => "bar1bar2" ok 166 - Line 173 "\#foreach( f = [1..3] )bar$f\#{end}" => "bar1bar2bar3" ok 167 - Line 174 "\#foreach( f = [{a=>'A'},{a=>'B'}] )bar$f.a\#{end}" => "barAbarB" ok 168 - Line 175 "\#foreach( [{a=>'A'},{a=>'B'}] )bar$a\#{end}" => "barAbarB" ok 169 - Line 176 "\#foreach( [{a=>'A'},{a=>'B'}] )bar$a\#{end}$!a" => "barAbarB" ok 170 - Line 177 "\#foreach( f = [1..3] )$loop.count/$loop.size \#{end}" => "1/3 2/3 3/3 " ### INCLUDE ######################################### compile perl (1) ok 171 - Line 183 "\#include("foo.vel")" => "Good Day!" ok 172 - Line 184 "\#parse($foo)" => "Good Day!" ok 173 - Line 185 "\#include("bar.vel")" => "($bar)" ok 174 - Line 186 "\#include("bar.vel")" => "($bar)" ### PARSE ############################################ compile perl (1) ok 175 - Line 191 "\#parse("foo.vel")" => "Good Day!" ok 176 - Line 192 "\#parse($foo)" => "Good Day!" ok 177 - Line 193 "\#parse("bar.vel")" => "($bar)" ok 178 - Line 194 "\#parse("bar.vel")" => "(foo)" ### STOP ############################################ compile perl (1) ok 179 - Line 199 "\#stop" => "" ok 180 - Line 200 "One\#{stop}Two" => "One" ok 181 - Line 201 "\#block('foo')One\#{stop}Two\#{end}First\#process('foo')Last" => "FirstOne" ok 182 - Line 202 "\#foreach( $f = [1..3] )$f\#if(loop.first)\#end$f\#end" => "112233" ok 183 - Line 203 "\#foreach( $f = [1..3] )$f\#if(loop.first)\#stop\#end\#end" => "1" ok 184 - Line 204 "\#foreach( $f = [1..3] )\#if(loop.first)\#stop\#end$f\#end" => "" ### EVALUATE ######################################## compile perl (1) ok 185 - Line 209 "\#set($f = '>\#try\#evaluate($f)\#{catch}caught\#end')\#evaluate($f)" => ">>>>>caught" ok 186 - Line 210 "\#set($f = '>\#try\#eval($f)\#{catch}foo\#end')\#eval($f)\#EVALUATE($f)" => ">>foo>>foo" ### MACRO ########################################### compile perl (1) ok 187 - Line 215 "\#macro(foo PROCESS bar )\#block(bar)Hi\#end$foo" => "Hi" ok 188 - Line 216 "\#macro(foo BLOCK)Hi\#end$foo" => "Hi" ok 189 - Line 217 "\#macro(foo $n BLOCK)Hi$n\#end$foo" => "Hi$n" ok 190 - Line 218 "\#macro(foo $n BLOCK)Hi$n\#end$foo(2)" => "Hi2" ok 191 - Line 219 "\#macro(foo(n) BLOCK)Hi$n\#end$foo" => "Hi$n" ok 192 - Line 220 "\#macro(foo(n) BLOCK)Hi$n\#end$foo(2)" => "Hi2" ok 193 - Line 221 "\#macro(foo $n)Hi$n\#end$foo" => "Hi$n" ok 194 - Line 222 "\#macro(foo $n)Hi$n\#end$foo(2)" => "Hi2" ok 195 - Line 223 "\#macro(foo $n)Hi$n\#end\#foo(2)" => "Hi2" ok 196 - Line 224 "\#macro(foo $n $m)Hi($n)($m)\#end\#foo(2 3)" => "Hi(2)(3)" ok 197 - Line 226 "\#macro( inner $foo ) # inner : $foo # \#end # # \#macro( outer $foo ) # \#set($bar = "outerlala") # outer : $foo # \#end # # \#set($bar = "calltimelala") # \#outer( "\#inner($bar)" )" => " outer : inner : calltimelala" ok 198 - Line 238 "\#macro( inner $foo ) # inner : $foo # \#end # # \#macro( outer $foo ) # \#set($bar = "outerlala") # outer : $foo|eval # \#end # # \#set($bar = "calltimelala") # \#outer( "\#inner('$bar')" )" => " outer : inner : outerlala" ### TT3 CHOMPING #################################### compile perl (1) ok 199 - Line 253 " # \#get( $foo )" => " # FOO" ok 200 - Line 254 "\#get( $foo -) # " => "FOO" ok 201 - Line 255 " # \#get(- $foo)" => "FOO" ok 202 - Line 256 " # \#get( -$foo)" => " # -7" ### DONE ############################################ compile perl (1) ok All tests successful. Files=10, Tests=4571, 4 wallclock secs ( 0.57 usr 0.09 sys + 3.46 cusr 0.55 csys = 4.67 CPU) Result: PASS RHANDOM/Template-Alloy-1.020.tar.gz make test TEST_VERBOSE=1 -- OK Fetching with LWP: http://ppm.activestate.com/CPAN/authors/id/R/RH/RHANDOM/CHECKSUMS Paul Seamons <paul@seamons.com> TT2/3, HT, HTE, Tmpl, and Velocity Engine >>> (cd /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Template-Alloy-1.020-KygW_x && tar cvf - Template-Alloy-1.020.ppd blib) | gzip -c >/Users/fly2400/cpanfly-5.24/var/REPO/R/RH/RHANDOM/Template-Alloy-1.020.tar.gz Template-Alloy-1.020.ppd blib/ blib/lib/ blib/lib/Template/ blib/lib/Template/Alloy/ blib/lib/Template/Alloy/Compile.pm blib/lib/Template/Alloy/Context.pm blib/lib/Template/Alloy/Exception.pm blib/lib/Template/Alloy/HTE.pm blib/lib/Template/Alloy/Iterator.pm blib/lib/Template/Alloy/Operator.pm blib/lib/Template/Alloy/Parse.pm blib/lib/Template/Alloy/Play.pm blib/lib/Template/Alloy/Stream.pm blib/lib/Template/Alloy/Tmpl.pm blib/lib/Template/Alloy/TT.pm blib/lib/Template/Alloy/Velocity.pm blib/lib/Template/Alloy/VMethod.pm blib/lib/Template/Alloy.pm blib/lib/Template/Alloy.pod blib/man3/ blib/man3/Template::Alloy.3 blib/man3/Template::Alloy::Compile.3 blib/man3/Template::Alloy::Context.3 blib/man3/Template::Alloy::Exception.3 blib/man3/Template::Alloy::HTE.3 blib/man3/Template::Alloy::Iterator.3 blib/man3/Template::Alloy::Operator.3 blib/man3/Template::Alloy::Parse.3 blib/man3/Template::Alloy::Play.3 blib/man3/Template::Alloy::Stream.3 blib/man3/Template::Alloy::Tmpl.3 blib/man3/Template::Alloy::TT.3 blib/man3/Template::Alloy::Velocity.3 blib/man3/Template::Alloy::VMethod.3 DACAV/App-PFT-v1.0.1.tar.gz Has already been unwrapped into directory /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/App-PFT-v1.0.1-qGW0WA DACAV/App-PFT-v1.0.1.tar.gz Has already been prepared Running make for D/DA/DACAV/App-PFT-v1.0.1.tar.gz Prepending /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Template-Alloy-1.020-KygW_x/blib/arch /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Template-Alloy-1.020-KygW_x/blib/lib to PERL5LIB for 'make' Warning: Prerequisite 'PFT => v0.5.4' for 'DACAV/App-PFT-v1.0.1.tar.gz' failed when processing 'DACAV/PFT-v1.0.0.tar.gz' with 'make_test => NO'. Continuing, but chances to succeed are limited. >>> make cp lib/App/PFT.pm blib/lib/App/PFT.pm cp lib/App/PFT/Util.pm blib/lib/App/PFT/Util.pm cp bin/pft blib/script/pft "/Users/fly2400/ap2400-300558/bin/perl-dynamic" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/pft cp bin/pft-clean blib/script/pft-clean "/Users/fly2400/ap2400-300558/bin/perl-dynamic" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/pft-clean cp bin/pft-grab blib/script/pft-grab "/Users/fly2400/ap2400-300558/bin/perl-dynamic" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/pft-grab cp bin/pft-init blib/script/pft-init "/Users/fly2400/ap2400-300558/bin/perl-dynamic" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/pft-init cp bin/pft-ls blib/script/pft-ls "/Users/fly2400/ap2400-300558/bin/perl-dynamic" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/pft-ls cp bin/pft-make blib/script/pft-make "/Users/fly2400/ap2400-300558/bin/perl-dynamic" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/pft-make cp bin/pft-pub blib/script/pft-pub "/Users/fly2400/ap2400-300558/bin/perl-dynamic" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/pft-pub cp bin/pft-show blib/script/pft-show "/Users/fly2400/ap2400-300558/bin/perl-dynamic" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/pft-show Manifying 8 pod documents DACAV/App-PFT-v1.0.1.tar.gz make -- OK Prepending /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Template-Alloy-1.020-KygW_x/blib/arch /Users/fly2400/cpanfly-5.24/var/tmp/cpan_build/Template-Alloy-1.020-KygW_x/blib/lib to PERL5LIB for 'test' Running make test >>> make test TEST_VERBOSE=1 No tests defined for App::PFT extension. DACAV/App-PFT-v1.0.1.tar.gz Tests succeeded but one dependency not OK (PFT) DACAV/App-PFT-v1.0.1.tar.gz [dependencies] -- NA Finished 2016-06-12T22:11:19