Ticket #1 (assigned defect)
'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
Note: See
TracTickets for help on using
tickets.
