ruby2jar 0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +674 -0
- data/README +48 -0
- data/Rakefile +83 -0
- data/TODO +2 -0
- data/lib/ruby2jar.rb +31 -0
- data/lib/ruby2jar/builder.rb +436 -0
- data/lib/ruby2jar/console.rb +34 -0
- data/lib/ruby2jar/error.rb +23 -0
- data/lib/ruby2jar/jartask.rb +85 -0
- data/lib/ruby2jar/listener.rb +38 -0
- data/spec/builder/before_spec.rb +105 -0
- data/spec/builder/builder_spec.rb +100 -0
- data/spec/builder/copy_spec.rb +138 -0
- data/spec/builder/create_init_spec.rb +69 -0
- data/spec/builder/fixtures/app/ext/greeters/JavaGreeter.java +7 -0
- data/spec/builder/fixtures/app/greeters/english.rb +8 -0
- data/spec/builder/fixtures/app/main.rb +4 -0
- data/spec/builder/fixtures/jruby/lib/jruby.jar +0 -0
- data/spec/builder/package_spec.rb +52 -0
- data/spec/builder/spec_helper.rb +121 -0
- data/spec/console/console_spec.rb +27 -0
- data/spec/console/spec_helper.rb +17 -0
- data/spec/jartask/jartask_spec.rb +37 -0
- data/spec/listener/listener_spec.rb +49 -0
- data/spec/spec_helper.rb +1 -0
- metadata +90 -0
@@ -0,0 +1,34 @@
|
|
1
|
+
=begin
|
2
|
+
Command line interface for ruby2jar builder.
|
3
|
+
|
4
|
+
Copyright (C) 2008 Andrey "A.I." Sitnik <andrey@sitnik.ru>
|
5
|
+
|
6
|
+
This program is free software: you can redistribute it and/or modify
|
7
|
+
it under the terms of the GNU General Public License as published by
|
8
|
+
the Free Software Foundation, either version 3 of the License, or
|
9
|
+
(at your option) any later version.
|
10
|
+
|
11
|
+
This program is distributed in the hope that it will be useful,
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
GNU General Public License for more details.
|
15
|
+
|
16
|
+
You should have received a copy of the GNU General Public License
|
17
|
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
=end
|
19
|
+
|
20
|
+
module Ruby2Jar
|
21
|
+
# Command line interface for builder. Check builder parameters and
|
22
|
+
# print error and warnings to console.
|
23
|
+
class Console < Listener
|
24
|
+
# Print message for standart builder error
|
25
|
+
def on_error(error)
|
26
|
+
if Error == error.class
|
27
|
+
STDERR.puts "ERROR: #{error.message}"
|
28
|
+
true
|
29
|
+
else
|
30
|
+
false
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
=begin
|
2
|
+
Error on building.
|
3
|
+
|
4
|
+
Copyright (C) 2008 Andrey "A.I." Sitnik <andrey@sitnik.ru>
|
5
|
+
|
6
|
+
This program is free software: you can redistribute it and/or modify
|
7
|
+
it under the terms of the GNU General Public License as published by
|
8
|
+
the Free Software Foundation, either version 3 of the License, or
|
9
|
+
(at your option) any later version.
|
10
|
+
|
11
|
+
This program is distributed in the hope that it will be useful,
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
GNU General Public License for more details.
|
15
|
+
|
16
|
+
You should have received a copy of the GNU General Public License
|
17
|
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
=end
|
19
|
+
|
20
|
+
module Ruby2Jar
|
21
|
+
# Error on JAR building
|
22
|
+
class Error < Exception; end
|
23
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
=begin
|
2
|
+
Rake task for building.
|
3
|
+
|
4
|
+
Copyright (C) 2008 Andrey "A.I." Sitnik <andrey@sitnik.ru>
|
5
|
+
|
6
|
+
This program is free software: you can redistribute it and/or modify
|
7
|
+
it under the terms of the GNU General Public License as published by
|
8
|
+
the Free Software Foundation, either version 3 of the License, or
|
9
|
+
(at your option) any later version.
|
10
|
+
|
11
|
+
This program is distributed in the hope that it will be useful,
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
GNU General Public License for more details.
|
15
|
+
|
16
|
+
You should have received a copy of the GNU General Public License
|
17
|
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
=end
|
19
|
+
|
20
|
+
module Ruby2Jar
|
21
|
+
# Rake task to build JAR.
|
22
|
+
#
|
23
|
+
# Example:
|
24
|
+
# require "ruby2jar"
|
25
|
+
#
|
26
|
+
# PKG_NAME = "program"
|
27
|
+
# PKG_VERSION = "0.1"
|
28
|
+
#
|
29
|
+
# Ruby2Jar::Rake::JarTask.new do |jar|
|
30
|
+
# jar.files = FileList["lib/**/*", "bin/*"]
|
31
|
+
# jar.main = "bin/program"
|
32
|
+
# jar.name = PKG_NAME
|
33
|
+
# jar.version = PKG_VERSION
|
34
|
+
# jar.add_dependency "rspec"
|
35
|
+
# end
|
36
|
+
class JarTask
|
37
|
+
# Name of JAR package
|
38
|
+
attr_accessor :name
|
39
|
+
|
40
|
+
# Version of application to use in JAR name
|
41
|
+
attr_accessor :version
|
42
|
+
|
43
|
+
# Create an RDoc task named +task+ (default task name is +jar+)
|
44
|
+
def initialize(task = :jar)
|
45
|
+
@task = task
|
46
|
+
@builder = Builder.new
|
47
|
+
Console.new(@builder)
|
48
|
+
yield self if block_given?
|
49
|
+
if @builder.jar.nil? and not @name.nil?
|
50
|
+
if not @version.nil?
|
51
|
+
@builder.jar = "pkg/#{@name}-#{@version}.jar"
|
52
|
+
else
|
53
|
+
@builder.jar = "pkg/#{@name}.jar"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
define
|
57
|
+
end
|
58
|
+
|
59
|
+
# Create the tasks
|
60
|
+
def define
|
61
|
+
task :package => [@task]
|
62
|
+
desc "Build the JAR file #{@builder.jar}"
|
63
|
+
task @task do
|
64
|
+
@builder.build
|
65
|
+
end
|
66
|
+
|
67
|
+
task :clobber => ["clobber_#{@task}"]
|
68
|
+
desc "Remove JAR file #{@builder.jar}"
|
69
|
+
task "clobber_#{@task}" do
|
70
|
+
File.delete @builder.jar if File.exists? @builder.jar
|
71
|
+
pkg = File.dirname(@builder.jar)
|
72
|
+
Dir.delete pkg if Dir.entries(pkg)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
# Set parameters of JAR builder
|
77
|
+
def method_missing(method, *args)
|
78
|
+
if not @builder.method(method).nil?
|
79
|
+
@builder.method(method).call(*args)
|
80
|
+
else
|
81
|
+
super(method, *args)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
=begin
|
2
|
+
Simple metaclass to create extensions for builder.
|
3
|
+
|
4
|
+
Copyright (C) 2008 Andrey "A.I." Sitnik <andrey@sitnik.ru>
|
5
|
+
|
6
|
+
This program is free software: you can redistribute it and/or modify
|
7
|
+
it under the terms of the GNU General Public License as published by
|
8
|
+
the Free Software Foundation, either version 3 of the License, or
|
9
|
+
(at your option) any later version.
|
10
|
+
|
11
|
+
This program is distributed in the hope that it will be useful,
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
GNU General Public License for more details.
|
15
|
+
|
16
|
+
You should have received a copy of the GNU General Public License
|
17
|
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
=end
|
19
|
+
|
20
|
+
module Ruby2Jar
|
21
|
+
# Simple metaclass to create extensions for builder, which provide user
|
22
|
+
# interface or special functions, such as creating Java Web Start files.
|
23
|
+
#
|
24
|
+
# It add all listener methods started by "before_" to builder.
|
25
|
+
class Listener
|
26
|
+
# Add listeners to +builder+
|
27
|
+
def initialize(builder = nil)
|
28
|
+
if not builder.nil?
|
29
|
+
@builder = builder
|
30
|
+
builder.methods.reject {|i| not i =~ /^(before_|on_error$)/}.each do |m|
|
31
|
+
if methods.include? m
|
32
|
+
builder.method(m).call << method(m)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "spec_helper")
|
2
|
+
|
3
|
+
describe Ruby2Jar::Builder do
|
4
|
+
before :each do
|
5
|
+
@builder = Ruby2Jar::Builder.new
|
6
|
+
@builder.path = "."
|
7
|
+
@builder.include_jruby = false
|
8
|
+
@builder.before_copy << lambda { @builder.stop }
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should set result jar path automatically" do
|
12
|
+
tmpdir = TempDir.create
|
13
|
+
FileUtils.mkdir File.join(tmpdir, "my_project")
|
14
|
+
FileUtils.touch File.join(tmpdir, "my_application.rb")
|
15
|
+
|
16
|
+
@builder.path = File.join(tmpdir, "my_project")
|
17
|
+
@builder.build
|
18
|
+
|
19
|
+
@builder.jar.should == File.join(tmpdir, "my_project", "pkg", "my_project.jar")
|
20
|
+
|
21
|
+
@builder.path = File.join(tmpdir, "my_application.rb")
|
22
|
+
@builder.jar = nil
|
23
|
+
@builder.build
|
24
|
+
|
25
|
+
@builder.jar.should == File.join(tmpdir, "my_application.jar")
|
26
|
+
|
27
|
+
tmpdir.delete
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should raise error if path didn't set" do
|
31
|
+
@builder.path = nil
|
32
|
+
@builder.method(:build).should raise_error(Ruby2Jar::Error, /didn't set path/)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should raise error if path isn't exist" do
|
36
|
+
nodir = TempDir.new
|
37
|
+
|
38
|
+
@builder.path = nodir
|
39
|
+
@builder.method(:build).should raise_error(Ruby2Jar::Error, /path is already exist/)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should raise error if result jar is already exist" do
|
43
|
+
tmpdir = TempDir.create
|
44
|
+
FileUtils.touch File.join(tmpdir, "result.jar")
|
45
|
+
@builder.jar = File.join(tmpdir, "result.jar")
|
46
|
+
|
47
|
+
@builder.method(:build).should raise_error(Ruby2Jar::Error, /jar/)
|
48
|
+
|
49
|
+
tmpdir.delete
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should raise error if main script isn't exist" do
|
53
|
+
tmpdir = TempDir.create
|
54
|
+
@builder.path = tmpdir
|
55
|
+
@builder.main = "script.rb"
|
56
|
+
|
57
|
+
@builder.method(:build).should raise_error(Ruby2Jar::Error, /Main script isn't exist/)
|
58
|
+
|
59
|
+
FileUtils.touch File.join(tmpdir, "script.rb")
|
60
|
+
@builder.method(:build).should_not raise_error(Ruby2Jar::Error)
|
61
|
+
|
62
|
+
tmpdir.delete
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should raise error if it can't find JRuby jar" do
|
66
|
+
jruby = ENV['JRUBY_HOME']
|
67
|
+
ENV['JRUBY_HOME'] = nil
|
68
|
+
@builder.include_jruby = true
|
69
|
+
|
70
|
+
@builder.method(:build).should raise_error(Ruby2Jar::Error, /Can't find JRuby/)
|
71
|
+
|
72
|
+
ENV['JRUBY_HOME'] = jruby
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should raise error if JRuby jar isn't exist" do
|
76
|
+
@builder.include_jruby = true
|
77
|
+
tmpdir = TempDir.new
|
78
|
+
@builder.jruby = File.join(tmpdir, "jruby.jar")
|
79
|
+
|
80
|
+
@builder.method(:build).should raise_error(Ruby2Jar::Error, /JRuby isn't exist/)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should find JRuby jar by JRUBY_HOME enviroment" do
|
84
|
+
jruby = ENV['JRUBY_HOME']
|
85
|
+
ENV['JRUBY_HOME'] = File.join(File.dirname(__FILE__), "fixtures", "jruby")
|
86
|
+
@builder.include_jruby = true
|
87
|
+
|
88
|
+
@builder.build
|
89
|
+
@builder.jruby.should == File.join(ENV['JRUBY_HOME'], "lib", "jruby.jar")
|
90
|
+
|
91
|
+
ENV['JRUBY_HOME'] = jruby
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should create temporal dir on start and delete it on finish " do
|
95
|
+
@build_dir = nil
|
96
|
+
@builder.before_copy << lambda {
|
97
|
+
@build_dir = @builder.build_dir
|
98
|
+
@build_dir.should_not be_nil
|
99
|
+
File.directory?(@build_dir).should be_true
|
100
|
+
}
|
101
|
+
|
102
|
+
@builder.build
|
103
|
+
File.directory?(@build_dir).should be_false
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "spec_helper")
|
2
|
+
|
3
|
+
describe Ruby2Jar::Builder do
|
4
|
+
include DirHelper
|
5
|
+
|
6
|
+
it "should do all steps and extension functions in order" do
|
7
|
+
builder = TracerBuilder.new
|
8
|
+
builder.before_copy << lambda {
|
9
|
+
builder.steps << "touch"
|
10
|
+
}
|
11
|
+
|
12
|
+
builder.build
|
13
|
+
builder.steps.should == [
|
14
|
+
"before_start", "start",
|
15
|
+
"before_copy", "touch", "copy",
|
16
|
+
"before_create_init", "create_init",
|
17
|
+
"before_compile", "compile",
|
18
|
+
"before_package", "package",
|
19
|
+
"before_finish", "finish"]
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should can stop finish it work" do
|
23
|
+
builder = TracerBuilder.new
|
24
|
+
builder.before_create_init << lambda {
|
25
|
+
builder.steps << "STOP"
|
26
|
+
builder.stop
|
27
|
+
}
|
28
|
+
|
29
|
+
builder.build
|
30
|
+
builder.steps.should == [
|
31
|
+
"before_start", "start",
|
32
|
+
"before_copy", "copy",
|
33
|
+
"before_create_init", "STOP",
|
34
|
+
"before_finish", "finish"]
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should finish it work on exception" do
|
38
|
+
builder = TracerBuilder.new
|
39
|
+
builder.before_copy << lambda {
|
40
|
+
builder.steps << "SHOT"
|
41
|
+
raise "Shot"
|
42
|
+
}
|
43
|
+
builder.before_finish << lambda {
|
44
|
+
builder.steps << "HEADSHOT"
|
45
|
+
raise "Headshot"
|
46
|
+
}
|
47
|
+
|
48
|
+
begin
|
49
|
+
builder.build
|
50
|
+
rescue; end
|
51
|
+
builder.steps.should == [
|
52
|
+
"before_start", "start",
|
53
|
+
"before_copy", "SHOT", "on_error Shot",
|
54
|
+
"before_finish", "HEADSHOT", "finish"]
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should raise error if it doesn't rescue on_error extensions" do
|
58
|
+
builder = TracerBuilder.new
|
59
|
+
builder.before_start << lambda { raise }
|
60
|
+
|
61
|
+
builder.on_error = [lambda { true }]
|
62
|
+
builder.method(:build).should_not raise_error
|
63
|
+
|
64
|
+
builder.on_error = [lambda { false }]
|
65
|
+
builder.method(:build).should raise_error
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should remember added gems" do
|
69
|
+
builder = Ruby2Jar::Builder.new
|
70
|
+
builder.add_dependency "one"
|
71
|
+
builder.add_dependency "two", ">=0.1", "< 1.0"
|
72
|
+
builder.gems.should == [["one", []], ["two", [">=0.1", "< 1.0"]]]
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should compile all Ruby and Java files" do
|
76
|
+
builder = Ruby2Jar::Builder.new
|
77
|
+
builder.path = File.join(File.dirname(__FILE__), "fixtures", "app")
|
78
|
+
|
79
|
+
builder.before_package << lambda {
|
80
|
+
builder.build_dir.should contain_files("ruby/app/main.class",
|
81
|
+
"ruby/app/greeters/english.class", "greeters/JavaGreeter.class")
|
82
|
+
builder.stop
|
83
|
+
}
|
84
|
+
builder.build
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should create working JAR" do
|
88
|
+
builder = Ruby2Jar::Builder.new
|
89
|
+
builder.path = File.join(File.dirname(__FILE__), "fixtures", "app")
|
90
|
+
builder.main = "main.rb"
|
91
|
+
dir = TempDir.create
|
92
|
+
builder.include_jruby = true
|
93
|
+
builder.jar = File.join(dir, "result.jar")
|
94
|
+
builder.build
|
95
|
+
|
96
|
+
`java -jar #{builder.jar}`.should == "Hello World!\n"
|
97
|
+
|
98
|
+
dir.delete
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,138 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "spec_helper")
|
2
|
+
|
3
|
+
describe Ruby2Jar::Builder do
|
4
|
+
include DirHelper
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
@builder = Ruby2Jar::Builder.new
|
8
|
+
@builder.include_jruby = false
|
9
|
+
@app_path = TempDir.create
|
10
|
+
@builder.path = @app_path
|
11
|
+
@builder.before_create_init << lambda { @builder.stop }
|
12
|
+
@builder.gems_index = FakeGems.new
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should copy all neccessary file from application dir" do
|
16
|
+
create_files @builder.path, ["1.rb", "1.no", "subdir/2.rb", "subdir/3.rb"]
|
17
|
+
Dir.chdir(@builder.path) do
|
18
|
+
@builder.files = FileList["**/*"].exclude("*.no")
|
19
|
+
end
|
20
|
+
|
21
|
+
@builder.before_create_init << lambda {
|
22
|
+
@builder.build_dir.should contain_files(
|
23
|
+
"ruby/app/1.rb", "ruby/app/subdir/2.rb", "ruby/app/subdir/3.rb")
|
24
|
+
}
|
25
|
+
@builder.build
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should copy file if application is a one script" do
|
29
|
+
create_files @builder.path, "application.rb"
|
30
|
+
@builder.path = File.join(@builder.path, "application.rb")
|
31
|
+
|
32
|
+
@builder.before_create_init << lambda {
|
33
|
+
@builder.build_dir.should contain_files("ruby/app/application.rb")
|
34
|
+
}
|
35
|
+
@builder.build
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should copy all Java file to archive root" do
|
39
|
+
create_files @builder.path, ["one.rb", "ext/subdir/pure.java"]
|
40
|
+
|
41
|
+
@builder.before_create_init << lambda {
|
42
|
+
@builder.build_dir.should contain_files("ruby/app/one.rb", "subdir/pure.java")
|
43
|
+
}
|
44
|
+
@builder.build
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should delete java source file if compiled class file if already exist" do
|
48
|
+
create_files @builder.path, ["one.rb", "ext/pure.java", "ext/pure.class"]
|
49
|
+
|
50
|
+
@builder.before_create_init << lambda {
|
51
|
+
@builder.build_dir.should contain_files("ruby/app/one.rb", "pure.class")
|
52
|
+
}
|
53
|
+
@builder.build
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should raise error if gem isn't found" do
|
57
|
+
@builder.gems_index.gems = {}
|
58
|
+
@builder.add_dependency "gem"
|
59
|
+
@builder.method(:build).should raise_error(Ruby2Jar::Error, /Can't find gem/)
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should raise error if gem with different version is already added" do
|
63
|
+
@builder.gems_index.gems = {
|
64
|
+
"gem-1.0" => FakeSpecification.new("gem", "1.0", @builder.path),
|
65
|
+
"gem-0.9" => FakeSpecification.new("gem", "0.9", @builder.path)}
|
66
|
+
@builder.add_dependency "gem", "1.0"
|
67
|
+
@builder.add_dependency "gem", "0.9"
|
68
|
+
|
69
|
+
@builder.method(:build).should raise_error(Ruby2Jar::Error, /different version/)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should copy gem dependencies too" do
|
73
|
+
|
74
|
+
@builder.gems_index.gems = {
|
75
|
+
"one-" => FakeSpecification.new("one", "", @builder.path, ["two"]),
|
76
|
+
"two-" => FakeSpecification.new("two", "", @builder.path, ["one"])}
|
77
|
+
@builder.add_dependency "one"
|
78
|
+
|
79
|
+
@builder.before_create_init << lambda {
|
80
|
+
@builder.loaded_gems.should == ["one", "two"]
|
81
|
+
}
|
82
|
+
@builder.build
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should load java config from gem" do
|
86
|
+
gem_path = TempDir.create
|
87
|
+
File.open(File.join(gem_path, "java.yaml"), "w") do |file|
|
88
|
+
file.write({"name" => "value"}.to_yaml)
|
89
|
+
end
|
90
|
+
@builder.gems_index.gems = {
|
91
|
+
"gem-" => FakeSpecification.new("gem", "", gem_path)}
|
92
|
+
@builder.add_dependency "gem"
|
93
|
+
|
94
|
+
@builder.before_create_init << lambda {
|
95
|
+
@builder.configs["gem"].should == {"name" => "value"}
|
96
|
+
}
|
97
|
+
@builder.build
|
98
|
+
|
99
|
+
gem_path.delete
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should copy all neccessary file from gem dir" do
|
103
|
+
gem_path = TempDir.create
|
104
|
+
create_files gem_path, ["one.rb", "1.no", "subdir/two.rb", "ext/pure.java"]
|
105
|
+
File.open(File.join(gem_path, "java.yaml"), "w") do |file|
|
106
|
+
file.write({"jar" => {"exclude" => "*.no"}}.to_yaml)
|
107
|
+
end
|
108
|
+
@builder.gems_index.gems = {
|
109
|
+
"gem-" => FakeSpecification.new("gem", "", gem_path)}
|
110
|
+
@builder.add_dependency "gem"
|
111
|
+
|
112
|
+
@builder.before_create_init << lambda {
|
113
|
+
@builder.build_dir.should contain_files(
|
114
|
+
"ruby/gems/gem/one.rb", "ruby/gems/gem/subdir/two.rb", "pure.java")
|
115
|
+
}
|
116
|
+
@builder.build
|
117
|
+
|
118
|
+
gem_path.delete
|
119
|
+
end
|
120
|
+
|
121
|
+
it "should add gem and app paths to init_require_paths" do
|
122
|
+
@builder.gems_index.gems = {
|
123
|
+
"gem-" => FakeSpecification.new("gem", "", @builder.path)}
|
124
|
+
@builder.add_dependency "gem"
|
125
|
+
@builder.require_paths = ["one", "two"]
|
126
|
+
|
127
|
+
@builder.before_create_init << lambda {
|
128
|
+
@builder.init_require_paths.should include("ruby/gems/gem/lib")
|
129
|
+
@builder.init_require_paths.should include("ruby/app/one")
|
130
|
+
@builder.init_require_paths.should include("ruby/app/two")
|
131
|
+
}
|
132
|
+
@builder.build
|
133
|
+
end
|
134
|
+
|
135
|
+
after :each do
|
136
|
+
@app_path.delete
|
137
|
+
end
|
138
|
+
end
|