To reproduce:
>> from pybars import Compiler
>> compiler = Compiler()
>> text = "{{#test}}a{{/#test}}"
>> compiler.compile(unicode(text))
<function render at 0x275f2a8> # no error reported here
After inspecting the parse error, it seems that OMeta only reports the position, but None for the error.
>> tree, error = compiler._handlebars(text).apply('template')
>>> error
ParseError(13, None)
I think a parse error should be raised whenever the parse position is less than the length of the string.