Ticket #2392 (closed defect: fixed)

Opened 9 months ago

Last modified 9 months ago

nevow.test.test_later.SuperLaterDataTest.test_rendererCalledOnce fails when run with coverage tool

Reported by: exarkun Assigned to: exarkun
Priority: highest Milestone:
Component: Nevow Severity: normal
Keywords: Cc:
Author: Branch:

Description (Last modified by pjd)

Python is buggy.

$ trial --coverage nevow.test.test_later.SuperLaterDataTest.test_rendererCalledOnce
Setting coverage directory to coverage.
Running 1 tests.
nevow.test.test_later
  SuperLaterDataTest
    test_rendererCalledOnce ... <nevow.test.test_later.RendererPage object at 0xb74c1aac>
                                         [FAIL]
                                        [ERROR]

===============================================================================
[FAIL]: nevow.test.test_later.SuperLaterDataTest.test_rendererCalledOnce

Traceback (most recent call last):
  File "/home/exarkun/Projects/Divmod/trunk/Nevow/nevow/test/test_later.py", line 166, in test_rendererCalledOnce
    self.assertEquals(req.v, '<html>1</html>')
twisted.trial.unittest.FailTest: not equal:
a = ''
b = '<html>1</html>'

===============================================================================
[ERROR]: nevow.test.test_later.SuperLaterDataTest.test_rendererCalledOnce

Traceback (most recent call last):
  File "/home/exarkun/Projects/Divmod/trunk/Nevow/nevow/flat/twist.py", line 23, in _drive
    next = iterable.next()
  File "/home/exarkun/Projects/Divmod/trunk/Nevow/nevow/flat/ten.py", line 83, in iterflatten
    for item in gen:
  File "/home/exarkun/Projects/Divmod/trunk/Nevow/nevow/flat/flatstan.py", line 200, in ListSerializer
    yield serialize(item, context)
  File "/home/exarkun/Projects/Divmod/trunk/Nevow/nevow/flat/ten.py", line 70, in serialize
    return partialflatten(context, obj)
  File "/home/exarkun/Projects/Divmod/trunk/Nevow/nevow/flat/ten.py", line 61, in partialflatten
    return flattener(obj, context)
  File "/home/exarkun/Projects/Divmod/trunk/Nevow/nevow/flat/flatstan.py", line 264, in DirectiveSerializer
    renderer = rendererFactory.renderer(context, original.name)
exceptions.TypeError: renderer() takes exactly 2 arguments (3 given)
-------------------------------------------------------------------------------
Ran 1 tests in 0.139s

FAILED (failures=1, errors=1)

Related: #2391, #2394

Change History

11/13/07 12:54:03 changed by exarkun

  • keywords set to review.
  • owner changed from exarkun to pjd.
  • priority changed from normal to highest.

Here's a fix:

Index: Nevow/nevow/test/test_later.py
===================================================================
--- Nevow/nevow/test/test_later.py      (revision 14187)
+++ Nevow/nevow/test/test_later.py      (working copy)
@@ -153,14 +153,14 @@
         render function is called only once.
         """
         calls = []
-        def renderer(ctx, data):
+        def recorder(ctx, data):
             calls.append(None)
             return str(len(calls))
         doc = tags.html[tags.directive('renderer')]
         class RendererPage(rend.Page):
             docFactory = loaders.stan(doc)
             def render_renderer(self, ctx, data):
-                return defer.succeed(renderer)
+                return defer.succeed(recorder)
         self.r = RendererPage()
         req = self.renderIt()
         self.assertEquals(req.v, '<html>1</html>')

11/13/07 15:34:44 changed by pjd

  • description changed.

(note #2391)

11/13/07 15:36:32 changed by pjd

  • keywords deleted.
  • owner changed from pjd to exarkun.

There doesn't seem to be any better workaround, so go ahead.

(There are still more failures caused by this bug, but i'll create an offshoot ticket for them.)

11/13/07 15:43:29 changed by pjd

  • description changed.

(note offshoot #2394)

11/18/07 10:24:15 changed by exarkun

  • status changed from new to closed.
  • resolution set to fixed.

(In [14304]) Rename variable in test method so as not to trigger CPython bug

Author: exarkun Reviewer: pjd Fixes #2392

This fixes a renderer test when run using trial's coverage option.

jethro@divmod.org