Ticket #1 (assigned defect)

Opened 4 years ago

Last modified 4 years ago

'render' template directive cannot be used recursively

Reported by: deveiant Owned by: deveiant
Priority: high Milestone: Refactor and Cleanup
Component: Templating Version: 0.1
Severity: normal Keywords: render recursion template
Cc:

Description

When the 'render' directive (source:trunk/lib/arrow/template/render.rb) is used recursively, the parser goes into a loop until it gets a SystemStackError?:

 1) Failure:
test_063_render_recursion(Arrow::TemplateTestCase)
    [./tests/template.tests.rb:922:in `test_063_render_recursion'
     ./tests/lib/arrowtestcase.rb:680:in `run']:
Exception raised:
Class: <SystemStackError>
Message: <"When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': When creating 'if': When creating 'render': stack level too deep">
---Backtrace---
./lib/arrow/logger.rb:185:in `readableName'
./lib/arrow/logger.rb:241:in `hierloggers'
./lib/arrow/logger.rb:260:in `hieroutputters'
./lib/arrow/logger.rb:296:in `write'
./lib/arrow/logger.rb:337:in `debug'
./lib/arrow/logger.rb:337:in `debug'
./lib/arrow/template/render.rb:131:in `parseDirectiveContents'
./lib/arrow/template/nodes.rb:354:in `initialize'
./lib/arrow/template/nodes.rb:449:in `initialize'
./lib/arrow/template/render.rb:63:in `initialize'
[...]
./lib/arrow/template.rb:222:in `load'
./lib/arrow/template/render.rb:132:in `parseDirectiveContents'
./lib/arrow/template/nodes.rb:354:in `initialize'
./lib/arrow/template/nodes.rb:449:in `initialize'
./lib/arrow/template/render.rb:63:in `initialize'
./lib/arrow/template/nodes.rb:341:in `create'
./lib/arrow/template/parser.rb:389:in `scanDirective'
./lib/arrow/template/parser.rb:347:in `scanForNodes'
./lib/arrow/template/parser.rb:324:in `catch'
./lib/arrow/template/parser.rb:324:in `scanForNodes'
./lib/arrow/template/parser.rb:319:in `branch'
./lib/arrow/template/parser.rb:319:in `scanForNodes'
./lib/arrow/template/parser.rb:296:in `parse'
./lib/arrow/template.rb:386:in `parse'
./lib/arrow/template.rb:312:in `initialize'
./tests/template.tests.rb:923:in `new'
./tests/template.tests.rb:923:in `test_063_render_recursion'
./tests/template.tests.rb:922:in `assert_nothing_raised'
./tests/template.tests.rb:922:in `test_063_render_recursion'
./tests/lib/arrowtestcase.rb:680:in `run'
---------------

Change History

Changed 4 years ago by deveiant

  • component changed from Dispatcher to Templating

Changed 4 years ago by deveiant

  • version changed from 1.0 to 0.1

Changed 4 years ago by deveiant

  • status changed from new to assigned
Note: See TracTickets for help on using tickets.