Sha256: e0d3980e1e28318f36cdf997edfda717ae1f000045c442ff64958ca9db312d50

Contents?: true

Size: 1.79 KB

Versions: 11

Compression:

Stored size: 1.79 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

11 entries across 11 versions & 1 rubygems

Version Path
lock_jar-0.15.2 spec/lock_jar/class_loader_spec.rb
lock_jar-0.15.1 spec/lock_jar/class_loader_spec.rb
lock_jar-0.15.0 spec/lock_jar/class_loader_spec.rb
lock_jar-0.14.7 spec/lock_jar/class_loader_spec.rb
lock_jar-0.14.6 spec/lock_jar/class_loader_spec.rb
lock_jar-0.14.5 spec/lock_jar/class_loader_spec.rb
lock_jar-0.14.4 spec/lock_jar/class_loader_spec.rb
lock_jar-0.14.3 spec/lock_jar/class_loader_spec.rb
lock_jar-0.14.2 spec/lock_jar/class_loader_spec.rb
lock_jar-0.14.1 spec/lock_jar/class_loader_spec.rb
lock_jar-0.14.0 spec/lock_jar/class_loader_spec.rb