Sha256: 8a53fb85552dd0c83e4da6a9031670d21ec1847ae97fa6006fb4a8a19e7ddd80

Contents?: true

Size: 1.9 KB

Versions: 14

Compression:

Stored size: 1.9 KB

Contents

require 'spec_helper'
require 'lock_jar/class_loader'


describe LockJar::ClassLoader, "#isolate" do
 
  if Naether.platform != 'java'
    pending "need tests for RJB backed classloader"
  else
    it "should create a SimpleEmail" do
      # Generate the IsolateJarfile.lock 
      LockJar.lock( :lockfile => "#{TEMP_DIR}/IsolateJarfile.lock" ) do
       jar 'org.apache.commons:commons-email:1.2'
      end
      
      email = LockJar::ClassLoader.new( "#{TEMP_DIR}/IsolateJarfile.lock" ).isolate do
          email = new_instance( 'org.apache.commons.mail.SimpleEmail' )
          email.setSubject( 'test subject' )     
          
          email
      end
      
      email.getSubject().should eql 'test subject'
      
      unless $CLASSPATH.nil?
        $CLASSPATH.to_a.join(' ').should_not =~ /commons-email-1\.2\.jar/
      end
      
      expect { org.apache.commons.mail.SimpleEmail.new }.to raise_error
    end
  
    it "should create a JsonFactory and ObjectMapper" do
      # Generate the IsolateJarfile.lock 
      LockJar.lock( :lockfile => "#{TEMP_DIR}/IsolateJarfile.lock" ) do
       jar 'com.fasterxml.jackson.core:jackson-core:2.0.6'
       jar 'com.fasterxml.jackson.core:jackson-databind:2.0.6'
      end
      
      json = '{ "test1": "1test1", "test2": "2test2"}'
      
      map = LockJar::ClassLoader.new( "#{TEMP_DIR}/IsolateJarfile.lock" ).isolate do
          factory = new_instance( 'com.fasterxml.jackson.core.JsonFactory' )
          mapper = new_instance( 'com.fasterxml.jackson.databind.ObjectMapper', factory) 
          mapper.readValue(json, java.util.Map.java_class)
      end
      
      map.get('test1').should eql "1test1"
      map.get('test2').should eql "2test2"
      
      unless $CLASSPATH.nil?
        $CLASSPATH.to_a.join(' ').should_not =~ /jackson-databind-2\.0\.6\.jar/
      end
      
      expect { com.fasterxml.jackson.core.JsonFactory.new }.to raise_error
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
lock_jar-0.13.0 spec/lock_jar/class_loader_spec.rb
lock_jar-0.12.6 spec/lock_jar/class_loader_spec.rb
lock_jar-0.12.5 spec/lock_jar/class_loader_spec.rb
lock_jar-0.12.4 spec/lock_jar/class_loader_spec.rb
lock_jar-0.12.3 spec/lock_jar/class_loader_spec.rb
lock_jar-0.12.2 spec/lock_jar/class_loader_spec.rb
lock_jar-0.12.1 spec/lock_jar/class_loader_spec.rb
lock_jar-0.12.0 spec/lock_jar/class_loader_spec.rb
lock_jar-0.10.5 spec/lock_jar/class_loader_spec.rb
lock_jar-0.10.4 spec/lock_jar/class_loader_spec.rb
lock_jar-0.10.3 spec/lock_jar/class_loader_spec.rb
lock_jar-0.10.2 spec/lock_jar/class_loader_spec.rb
lock_jar-0.8.0 spec/lock_jar/class_loader_spec.rb
lock_jar-0.7.5 spec/lock_jar/class_loader_spec.rb