Java interface mocking with mocha causes NPE --------------------------------------------
Key: JRUBY-4356 URL: http://jira.codehaus.org/browse/JRUBY-4356 Project: JRuby Issue Type: Bug Components: Java Integration Affects Versions: JRuby 1.5 Environment: jruby 1.5.0.dev (ruby 1.8.7 patchlevel 174) (2009-12-13 5b119f3) (Java HotSpot(TM) Client VM 1.6.0_16) [i386-java] Reporter: Hiroshi Nakamura Attachments: interface_mocking_test.rb HEAD of JRuby master causes NPE for attached test script. Followings are my test results for current master (NPE) and 1.4GA (runs without problem). Tests for jruby-openssl depends on this behavior. NB: org.jruby.ext.openssl.impl.Mime is a Java interface. ---- 0% /home/nahi/git/jruby/bin/jruby -v -I/home/nahi/git/jruby-openssl/lib:/home/nahi/git/jruby-openssl/mocha/lib interface_mocking_test.rb jruby 1.5.0.dev (ruby 1.8.7 patchlevel 174) (2009-12-13 5b119f3) (Java HotSpot(TM) Client VM 1.6.0_16) [i386-java] Loaded suite interface_mocking_test Started RubyBasicObject.java:587:in `getJavaClass': java.lang.NullPointerException from CallableSelector.java:251:in `classHashCode' from CallableSelector.java:221:in `argsHashCode' from CallableSelector.java:45:in `matchingCallableArityOne' from RubyToJavaInvoker.java:100:in `findCallableArityOne' from ConstructorInvoker.java:102:in `call' from ConstructorInvoker.java:199:in `call' from CachingCallSite.java:319:in `cacheAndCall' from CachingCallSite.java:157:in `callBlock' from CachingCallSite.java:162:in `call' from ConcreteJavaProxy.java:43:in `call' from CachingCallSite.java:319:in `cacheAndCall' from CachingCallSite.java:157:in `callBlock' from CachingCallSite.java:162:in `call' from RubyClass.java:707:in `call' from DynamicMethod.java:186:in `call' from CachingCallSite.java:309:in `cacheAndCall' from CachingCallSite.java:148:in `call' from interface_mocking_test.rb:10:in `method__1$RUBY$test_jruby' from interface_mocking_test#test_jruby:-1:in `call' from RubyClass.java:430:in `finvoke' from RubyObject.java:1437:in `send' from org/jruby/RubyObject$i_method_multi$RUBYINVOKER$send.gen:-1:in `call' from JavaMethod.java:267:in `call' from CachingCallSite.java:309:in `cacheAndCall' from CachingCallSite.java:148:in `call' from FCallOneArgNode.java:36:in `interpret' from NewlineNode.java:104:in `interpret' from BlockNode.java:71:in `interpret' from RescueNode.java:225:in `executeBody' from RescueNode.java:147:in `interpretWithJavaExceptions' from RescueNode.java:110:in `interpret' from EnsureNode.java:96:in `interpret' from BeginNode.java:83:in `interpret' from NewlineNode.java:104:in `interpret' from BlockNode.java:71:in `interpret' from EnsureNode.java:96:in `interpret' from BeginNode.java:83:in `interpret' from NewlineNode.java:104:in `interpret' from BlockNode.java:71:in `interpret' from InterpretedMethod.java:192:in `call' from DefaultMethod.java:179:in `call' from CachingCallSite.java:319:in `cacheAndCall' from CachingCallSite.java:157:in `callBlock' from CachingCallSite.java:162:in `call' from CallOneArgBlockPassNode.java:60:in `interpret' from NewlineNode.java:104:in `interpret' from InterpretedBlock.java:317:in `evalBlockBody' from InterpretedBlock.java:268:in `yield' from Block.java:194:in `yield' from RubyArray.java:1611:in `eachCommon' from RubyArray.java:1618:in `each' from org/jruby/RubyArray$i_method_0_0$RUBYFRAMEDINVOKER$each.gen:-1:in `call' from CachingCallSite.java:115:in `callBlock' from CachingCallSite.java:122:in `call' from CallNoArgBlockNode.java:64:in `interpret' from NewlineNode.java:104:in `interpret' from BlockNode.java:71:in `interpret' from InterpretedMethod.java:192:in `call' from DefaultMethod.java:179:in `call' from CachingCallSite.java:319:in `cacheAndCall' from CachingCallSite.java:157:in `callBlock' from CachingCallSite.java:162:in `call' from CallOneArgBlockPassNode.java:60:in `interpret' from NewlineNode.java:104:in `interpret' from InterpretedBlock.java:317:in `evalBlockBody' from InterpretedBlock.java:268:in `yield' from Block.java:194:in `yield' from RubyArray.java:1611:in `eachCommon' from RubyArray.java:1618:in `each' from org/jruby/RubyArray$i_method_0_0$RUBYFRAMEDINVOKER$each.gen:-1:in `call' from CachingCallSite.java:299:in `cacheAndCall' from CachingCallSite.java:117:in `callBlock' from CachingCallSite.java:122:in `call' from CallNoArgBlockNode.java:64:in `interpret' from NewlineNode.java:104:in `interpret' from BlockNode.java:71:in `interpret' from InterpretedMethod.java:192:in `call' from DefaultMethod.java:179:in `call' from CachingCallSite.java:319:in `cacheAndCall' from CachingCallSite.java:157:in `callBlock' from CachingCallSite.java:162:in `call' from CallOneArgBlockNode.java:60:in `interpret' from NewlineNode.java:104:in `interpret' from BlockNode.java:71:in `interpret' from InterpretedMethod.java:136:in `call' from DefaultMethod.java:155:in `call' from CachingCallSite.java:289:in `cacheAndCall' from CachingCallSite.java:108:in `call' from CallNoArgNode.java:61:in `interpret' from ReturnNode.java:88:in `interpret' from NewlineNode.java:104:in `interpret' from InterpretedMethod.java:136:in `call' from DefaultMethod.java:155:in `call' from CachingCallSite.java:289:in `cacheAndCall' from CachingCallSite.java:108:in `call' from VCallNode.java:85:in `interpret' from ReturnNode.java:88:in `interpret' from NewlineNode.java:104:in `interpret' from BlockNode.java:71:in `interpret' from InterpretedMethod.java:136:in `call' from DefaultMethod.java:155:in `call' from CachingCallSite.java:289:in `cacheAndCall' from CachingCallSite.java:108:in `call' from CallNoArgNode.java:61:in `interpret' from ReturnNode.java:88:in `interpret' from NewlineNode.java:104:in `interpret' from InterpretedMethod.java:210:in `call' from DefaultMethod.java:187:in `call' from CachingCallSite.java:329:in `cacheAndCall' from CachingCallSite.java:188:in `call' from CallTwoArgNode.java:59:in `interpret' from CallNoArgNode.java:61:in `interpret' from NewlineNode.java:104:in `interpret' from BlockNode.java:71:in `interpret' from InterpretedMethod.java:136:in `call' from DefaultMethod.java:155:in `call' from CachingCallSite.java:289:in `cacheAndCall' from CachingCallSite.java:108:in `call' from CallNoArgNode.java:61:in `interpret' from NewlineNode.java:104:in `interpret' from BlockNode.java:71:in `interpret' from InterpretedMethod.java:136:in `call' from DefaultMethod.java:155:in `call' from CachingCallSite.java:289:in `cacheAndCall' from CachingCallSite.java:108:in `call' from CallNoArgNode.java:61:in `interpret' from FCallOneArgNode.java:36:in `interpret' from NewlineNode.java:104:in `interpret' from IfNode.java:119:in `interpret' from NewlineNode.java:104:in `interpret' from InterpretedBlock.java:317:in `evalBlockBody' from InterpretedBlock.java:305:in `yield' from BlockBody.java:72:in `call' from BlockBody.java:78:in `call' from Block.java:89:in `call' from RubyProc.java:221:in `call' from RubyProc.java:204:in `call' from Ruby.java:2657:in `tearDown' from Main.java:274:in `run' from Main.java:117:in `run' from Main.java:97:in `main' % /home/nahi/java/jruby-1.4.0/bin/jruby -v -I/home/nahi/git/jruby-openssl/lib:/home/nahi/git/jruby-openssl/mocha/lib interface_mocking_test.rb jruby 1.4.0 (ruby 1.8.7 patchlevel 174) (2009-11-02 69fbfa3) (Java HotSpot(TM) Client VM 1.6.0_16) [i386-java] /home/nahi/git/jruby-openssl/lib/openssl.rb:17 warning: no super class for `OpenSSL::Digest', Object assumed Loaded suite interface_mocking_test Started . Finished in 0.101 seconds. 1 tests, 0 assertions, 0 failures, 0 errors 0% -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email