Ticket #13 (closed defect: fixed)

Opened 2 years ago

Last modified 2 years ago

5 tests does not seem to pass when running on Jython

Reported by: anonymous Assigned to: steve
Priority: normal Milestone:
Component: airspeed Version:
Severity: blocker Keywords: Jython
Cc:

Description (Last modified by steve)

Hello guys

Congratulations, Airspeed rocks ! I am still a Jython novice but getting in love really fast. I tried to run your nice tests in Jython and got this output:

........EE.............E...............................................................E...E
======================================================================
ERROR: test_can_return_value_from_a_method_of_a_context_object (__main__.TemplateTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\dev\tools\jython22a1\Lib\unittest.py", line 213, in __call__
    testMethod()
  File "airspeedtest.py", line 72, in test_can_return_value_from_a_method_of_a_context_object
    print template.merge({"name": MyObj()})
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 52, in merge
    self.merge_to(namespace, output, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 62, in merge_to
    self.root_element.evaluate(fileobj, namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 718, in evaluate
    self.block.evaluate(stream, namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 730, in evaluate
    child.evaluate(stream, namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 422, in evaluate
    value = self.expression.calculate(namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 392, in calculate
    value = self.subexpression.calculate(value, loader, global_namespace)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 376, in calculate
    return self.expression.calculate(current_object, loader, global_namespace)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 388, in calculate
    if global_namespace == None:
TypeError: dict.__cmp__(x,y) requires y to be 'dict', not a 'none'

======================================================================
ERROR: test_can_return_value_from_an_attribute_of_a_context_object (__main__.TemplateTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\dev\tools\jython22a1\Lib\unittest.py", line 213, in __call__
    testMethod()
  File "airspeedtest.py", line 66, in test_can_return_value_from_an_attribute_of_a_context_object
    self.assertEquals("Hello Chris", template.merge({"name": o}))
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 52, in merge
    self.merge_to(namespace, output, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 62, in merge_to
    self.root_element.evaluate(fileobj, namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 718, in evaluate
    self.block.evaluate(stream, namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 730, in evaluate
    child.evaluate(stream, namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 422, in evaluate
    value = self.expression.calculate(namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 392, in calculate
    value = self.subexpression.calculate(value, loader, global_namespace)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 376, in calculate
    return self.expression.calculate(current_object, loader, global_namespace)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 388, in calculate
    if global_namespace == None:
TypeError: dict.__cmp__(x,y) requires y to be 'dict', not a 'none'

======================================================================
ERROR: test_correct_scope_for_parameters_of_method_calls (__main__.TemplateTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\dev\tools\jython22a1\Lib\unittest.py", line 213, in __call__
    testMethod()
  File "airspeedtest.py", line 520, in test_correct_scope_for_parameters_of_method_calls
    value = template.merge({'obj': C(), 'param':'bat'})
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 52, in merge
    self.merge_to(namespace, output, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 62, in merge_to
    self.root_element.evaluate(fileobj, namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 718, in evaluate
    self.block.evaluate(stream, namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 730, in evaluate
    child.evaluate(stream, namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 422, in evaluate
    value = self.expression.calculate(namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 392, in calculate
    value = self.subexpression.calculate(value, loader, global_namespace)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 376, in calculate
    return self.expression.calculate(current_object, loader, global_namespace)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 388, in calculate
    if global_namespace == None:
TypeError: dict.__cmp__(x,y) requires y to be 'dict', not a 'none'

======================================================================
ERROR: test_when_dictionary_does_not_contain_referenced_attribute_no_substitution_occurs (__main__.TemplateTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\dev\tools\jython22a1\Lib\unittest.py", line 213, in __call__
    testMethod()
  File "airspeedtest.py", line 481, in test_when_dictionary_does_not_contain_referenced_attribute_no_substitution_occurs
    self.assertEquals(" $user.name ", template.merge({'user':self}))
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 52, in merge
    self.merge_to(namespace, output, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 62, in merge_to
    self.root_element.evaluate(fileobj, namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 718, in evaluate
    self.block.evaluate(stream, namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 730, in evaluate
    child.evaluate(stream, namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 422, in evaluate
    value = self.expression.calculate(namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 392, in calculate
    value = self.subexpression.calculate(value, loader, global_namespace)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 376, in calculate
    return self.expression.calculate(current_object, loader, global_namespace)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 388, in calculate
    if global_namespace == None:
TypeError: dict.__cmp__(x,y) requires y to be 'dict', not a 'none'

======================================================================
ERROR: test_when_non_dictionary_object_does_not_contain_referenced_attribute_no_substitution_occurs (__main__.TemplateTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\dev\tools\jython22a1\Lib\unittest.py", line 213, in __call__
    testMethod()
  File "airspeedtest.py", line 486, in test_when_non_dictionary_object_does_not_contain_referenced_attribute_no_substitution_occurs
    self.assertEquals(" $user.name ", template.merge({'user':MyObject()}))
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 52, in merge
    self.merge_to(namespace, output, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 62, in merge_to
    self.root_element.evaluate(fileobj, namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 718, in evaluate
    self.block.evaluate(stream, namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 730, in evaluate
    child.evaluate(stream, namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 422, in evaluate
    value = self.expression.calculate(namespace, loader)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 392, in calculate
    value = self.subexpression.calculate(value, loader, global_namespace)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 376, in calculate
    return self.expression.calculate(current_object, loader, global_namespace)
  File "C:\dev\workspaces\jython2\AirSpeed\airspeed.py", line 388, in calculate
    if global_namespace == None:
TypeError: dict.__cmp__(x,y) requires y to be 'dict', not a 'none'

----------------------------------------------------------------------
Ran 92 tests in 1.082s

FAILED (errors=5)

Change History

09/02/06 09:38:46 changed by steve

  • description changed.

09/02/06 11:21:48 changed by steve

  • owner changed from somebody to steve.
  • status changed from new to assigned.

I can't reproduce this bug with Jython 2.1.0; what version of Jython are you using?

Nonetheless, I have changed the '==' comparison to an 'is' comparison in changeset [55], so please let me know if the problem persists for you.

10/02/06 01:22:21 changed by steve

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

Fixed in [55]