Ticket #2391 (closed defect: fixed)

Opened 9 months ago

Last modified 9 months ago

nevow.test.test_rend.TestPage.test_missingRendererDeprecated fails when run with coverage measuring tool

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

Description (Last modified by pjd)

Python trace hooks are somewhat buggy.

$ trial --coverage nevow.test.test_rend.TestPage.test_missingRendererDeprecated
Setting coverage directory to coverage.
Running 1 tests.
nevow.test.test_rend
  TestPage
    test_missingRendererDeprecated ...                                  [ERROR]

===============================================================================
[ERROR]: nevow.test.test_rend.TestPage.test_missingRendererDeprecated

Traceback (most recent call last):
  File "/home/exarkun/Projects/Divmod/trunk/Nevow/nevow/test/test_rend.py", line 479, in test_missingRendererDeprecated
    page.renderSynchronously)
  File "/home/exarkun/Projects/Twisted/trunk/twisted/trial/unittest.py", line 346, in failUnlessWarns
    result = f(*args, **kwargs)
  File "/home/exarkun/Projects/Divmod/trunk/Nevow/nevow/rend.py", line 614, in renderSynchronously
    list(flat.iterflatten(doc, ctx, io.write, raiseAlways))
  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 103, in TagSerializer
    yield serialize(toBeRenderedBy, 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 263, in DirectiveSerializer
    renderer = rendererFactory.renderer(context, original.name)
exceptions.TypeError: 'str' object is not callable
-------------------------------------------------------------------------------
Ran 1 tests in 0.101s

FAILED (errors=1)

Related: #2392, #2394

Change History

11/13/07 12:41:32 changed by exarkun

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

Here's the fix:

Index: Nevow/nevow/test/test_rend.py
===================================================================
--- Nevow/nevow/test/test_rend.py       (revision 14187)
+++ Nevow/nevow/test/test_rend.py       (working copy)
@@ -468,12 +468,12 @@
         Using a renderer which is not defined should emit a deprecation
         warning.
         """
-        renderer = "notfound"
+        nonRenderer = "notfound"
         class MisdefinedPage(rend.Page):
-            docFactory = loaders.stan(html(render=directive(renderer)))
+            docFactory = loaders.stan(html(render=directive(nonRenderer)))
         page = MisdefinedPage()
         message = "Renderer %r missing on %s will result in an exception."
-        message %= (renderer, qual(MisdefinedPage))
+        message %= (nonRenderer, qual(MisdefinedPage))
         self.assertWarns(
             DeprecationWarning, message, rend.__file__,
             page.renderSynchronously)

11/13/07 13:55:23 changed by moe

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

Looks good, though maybe "rendererName" would be a better name than both. No need for re-review.

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

  • description changed.

(note #2392)

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

  • description changed.

(note offshoot #2394)

11/18/07 10:22:46 changed by exarkun

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

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

Author: exarkun Reviewer: moea Fixes #2391

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

jethro@divmod.org