Skip to content

ExceptionsTest.test_alternating_file_names fails on pypy3 #315

Open

Description

@mgorny

When running mako's tests with pypy3, I get one failure:

==================================================================== FAILURES =====================================================================
___________________________________________________ ExceptionsTest.test_alternating_file_names ____________________________________________________
Traceback (most recent call last):
  File "/tmp/portage/dev-python/mako-1.1.1/work/Mako-1.1.1/test/test_exceptions.py", line 457, in test_alternating_file_names
    t.render()
  File "/tmp/portage/dev-python/mako-1.1.1/work/Mako-1.1.1/mako/template.py", line 476, in render
    return runtime._render(self, self.callable_, args, data)
  File "/tmp/portage/dev-python/mako-1.1.1/work/Mako-1.1.1/mako/runtime.py", line 883, in _render
    **_kwargs_for_callable(callable_, data)
  File "/tmp/portage/dev-python/mako-1.1.1/work/Mako-1.1.1/mako/runtime.py", line 920, in _render_context
    _exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
  File "/tmp/portage/dev-python/mako-1.1.1/work/Mako-1.1.1/mako/runtime.py", line 947, in _exec_template
    callable_(context, *args, **kwargs)
  File "base_html", line 30, in render_body
  File "/usr/lib/pypy3.6/lib_pypy/_functools.py", line 80, in __call__
    return self._func(*(self._args + fargs), **fkeywords)
  File "foo_html", line 54, in render_foo
  File "/usr/lib/pypy3.6/lib_pypy/_functools.py", line 80, in __call__
    return self._func(*(self._args + fargs), **fkeywords)
  File "base_html", line 46, in render_foo
  File "base_html", line 17, in broken
RuntimeError: Something went wrong.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/tmp/portage/dev-python/mako-1.1.1/work/Mako-1.1.1/test/test_exceptions.py", line 460, in test_alternating_file_names
    assert """
AssertionError: assert '\n  File "base.html", line 5, in render_body\n    %> body starts here\n  File "foo.html", line 4, in render_foo\n    ... render_foo\n    ${broken()}\n  File "base.html", line 4, in broken\n    raise RuntimeError("Something went wrong.")\n' in '\n\nTraceback (most recent call last):\n  File "/tmp/portage/dev-python/mako-1.1.1/work/Mako-1.1.1/test/test_exceptio..."base.html", line 4, in broken\n    raise RuntimeError("Something went wrong.")\nRuntimeError: Something went wrong.\n'
============================================================= short test summary info =============================================================
FAILED test/test_exceptions.py::ExceptionsTest::test_alternating_file_names - AssertionError: assert '\n  File "base.html", line 5, in render_bo...
================================================ 1 failed, 415 passed, 53 skipped in 23.80 seconds ================================================

Activity

  1. mgorny commented on Feb 21, 2020

    @mgorny
    ContributorAuthor

    FWICS the traceback for PyPy3 is:

    Traceback (most recent call last):
      File "/tmp/mako/test/test_exceptions.py", line 457, in test_alternating_file_names
        t.render()
      File "/tmp/mako/mako/template.py", line 476, in render
        return runtime._render(self, self.callable_, args, data)
      File "/tmp/mako/mako/runtime.py", line 883, in _render
        **_kwargs_for_callable(callable_, data)
      File "/tmp/mako/mako/runtime.py", line 920, in _render_context
        _exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
      File "/tmp/mako/mako/runtime.py", line 947, in _exec_template
        callable_(context, *args, **kwargs)
      File "base.html", line 5, in render_body
        %> body starts here
      File "/usr/lib/pypy3.6/lib_pypy/_functools.py", line 80, in __call__
        return self._func(*(self._args + fargs), **fkeywords)
      File "foo.html", line 4, in render_foo
        ${parent.foo()}
      File "/usr/lib/pypy3.6/lib_pypy/_functools.py", line 80, in __call__
        return self._func(*(self._args + fargs), **fkeywords)
      File "base.html", line 7, in render_foo
        ${broken()}
      File "base.html", line 4, in broken
        raise RuntimeError("Something went wrong.")
    RuntimeError: Something went wrong.
    

    while for CPython 3.6 it is:

    Traceback (most recent call last):
      File "/tmp/mako/test/test_exceptions.py", line 457, in test_alternating_file_names
        t.render()
      File "/tmp/mako/mako/template.py", line 476, in render
        return runtime._render(self, self.callable_, args, data)
      File "/tmp/mako/mako/runtime.py", line 883, in _render
        **_kwargs_for_callable(callable_, data)
      File "/tmp/mako/mako/runtime.py", line 920, in _render_context
        _exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
      File "/tmp/mako/mako/runtime.py", line 947, in _exec_template
        callable_(context, *args, **kwargs)
      File "base.html", line 5, in render_body
        %> body starts here
      File "foo.html", line 4, in render_foo
        ${parent.foo()}
      File "base.html", line 7, in render_foo
        ${broken()}
      File "base.html", line 4, in broken
        raise RuntimeError("Something went wrong.")
    RuntimeError: Something went wrong.
    

    i.e. PyPy3 intersperses the fancy output twice with:

      File "/usr/lib/pypy3.6/lib_pypy/_functools.py", line 80, in __call__
        return self._func(*(self._args + fargs), **fkeywords)
    
  2. zzzeek commented on Feb 21, 2020

    @zzzeek
    Member

    this is a very old test but it does need to assert some way of seeing that the stack trace is correct. I can accept PRs that attempt to refine its approach of asserting this.

  3. mgorny commented on Feb 21, 2020

    @mgorny
    ContributorAuthor

    To be honest, I'm not even sure if it isn't a bug in PyPy3. Are you suggesting accepting this output?

  4. zzzeek commented on Feb 21, 2020

    @zzzeek
    Member

    I'm not sure either but it looks like functools is in pure Python in pypy, which makes sense, im not really sure what the Mako templates are doing involving that, I'd assume its functools.partial() and perhaps in cPython this doesn't put itself into stack traces, not really sure. i don't maintain Mako at this level right now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions