warbler 1.3.0.beta1 → 1.3.0
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/History.txt +9 -0
- data/LICENSE.txt +1 -1
- data/Manifest.txt +22 -0
- data/README.txt +6 -3
- data/Rakefile +2 -2
- data/bin/warble +1 -1
- data/ext/JarMain.java +3 -2
- data/ext/WarMain.java +3 -2
- data/ext/WarblerJar.java +2 -1
- data/ext/WarblerJarService.java +2 -1
- data/lib/warbler.rb +1 -1
- data/lib/warbler/application.rb +17 -1
- data/lib/warbler/config.rb +12 -3
- data/lib/warbler/gems.rb +1 -1
- data/lib/warbler/jar.rb +17 -12
- data/lib/warbler/task.rb +6 -15
- data/lib/warbler/templates/bundler.erb +3 -0
- data/lib/warbler/templates/jar.erb +5 -0
- data/lib/warbler/templates/rack.erb +1 -1
- data/lib/warbler/templates/war.erb +1 -0
- data/lib/warbler/traits.rb +5 -3
- data/lib/warbler/traits/bundler.rb +52 -14
- data/lib/warbler/traits/gemspec.rb +6 -11
- data/lib/warbler/traits/jar.rb +4 -1
- data/lib/warbler/traits/merb.rb +2 -1
- data/lib/warbler/traits/nogemspec.rb +2 -1
- data/lib/warbler/traits/rack.rb +3 -1
- data/lib/warbler/traits/rails.rb +13 -8
- data/lib/warbler/traits/war.rb +12 -6
- data/lib/warbler/version.rb +2 -2
- data/lib/warbler/war.rb +7 -0
- data/lib/warbler_jar.jar +0 -0
- data/spec/drb_helper.rb +41 -0
- data/spec/sample_bundler/Gemfile.lock +10 -0
- data/spec/sample_bundler/config.ru +0 -0
- data/spec/sample_bundler/vendor/bundle/jruby/1.8/cache/rake-0.8.7.gem +0 -0
- data/spec/sample_bundler/vendor/bundle/jruby/1.8/gems/rake-0.8.7/lib/rake.rb +2506 -0
- data/spec/sample_bundler/vendor/bundle/jruby/1.8/specifications/rake-0.8.7.gemspec +31 -0
- data/spec/sample_bundler/vendor/bundle/ruby/1.8/cache/rake-0.8.7.gem +0 -0
- data/spec/sample_bundler/vendor/bundle/ruby/1.8/gems/rake-0.8.7/lib/rake.rb +2506 -0
- data/spec/sample_bundler/vendor/bundle/ruby/1.8/specifications/rake-0.8.7.gemspec +30 -0
- data/spec/sample_bundler/vendor/bundle/ruby/1.9.1/cache/rake-0.8.7.gem +0 -0
- data/spec/sample_bundler/vendor/bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb +2506 -0
- data/spec/sample_bundler/vendor/bundle/ruby/1.9.1/specifications/rake-0.8.7.gemspec +30 -0
- data/spec/sample_jar/sample_jar.gemspec +0 -1
- data/spec/sample_war/config/environments/production.rb +3 -0
- data/spec/spec_helper.rb +32 -5
- data/spec/warbler/application_spec.rb +11 -2
- data/spec/warbler/bundler_spec.rb +136 -0
- data/spec/warbler/config_spec.rb +2 -2
- data/spec/warbler/gems_spec.rb +2 -2
- data/spec/warbler/jar_spec.rb +63 -108
- data/spec/warbler/task_spec.rb +29 -20
- data/spec/warbler/traits_spec.rb +3 -2
- data/spec/warbler/war_spec.rb +3 -2
- data/warble.rb +3 -0
- data/web.xml.erb +2 -2
- metadata +179 -177
@@ -0,0 +1,30 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{rake}
|
5
|
+
s.version = "0.8.7"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Jim Weirich"]
|
9
|
+
s.date = %q{2009-05-14}
|
10
|
+
s.description = %q{Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax.}
|
11
|
+
s.email = %q{jim@weirichhouse.org}
|
12
|
+
s.executables = ["rake"]
|
13
|
+
s.extra_rdoc_files = ["README", "MIT-LICENSE", "TODO", "CHANGES", "doc/command_line_usage.rdoc", "doc/glossary.rdoc", "doc/proto_rake.rdoc", "doc/rakefile.rdoc", "doc/rational.rdoc", "doc/release_notes/rake-0.4.14.rdoc", "doc/release_notes/rake-0.4.15.rdoc", "doc/release_notes/rake-0.5.0.rdoc", "doc/release_notes/rake-0.5.3.rdoc", "doc/release_notes/rake-0.5.4.rdoc", "doc/release_notes/rake-0.6.0.rdoc", "doc/release_notes/rake-0.7.0.rdoc", "doc/release_notes/rake-0.7.1.rdoc", "doc/release_notes/rake-0.7.2.rdoc", "doc/release_notes/rake-0.7.3.rdoc", "doc/release_notes/rake-0.8.0.rdoc", "doc/release_notes/rake-0.8.2.rdoc", "doc/release_notes/rake-0.8.3.rdoc", "doc/release_notes/rake-0.8.4.rdoc", "doc/release_notes/rake-0.8.5.rdoc", "doc/release_notes/rake-0.8.6.rdoc", "doc/release_notes/rake-0.8.7.rdoc"]
|
14
|
+
s.files = ["bin/rake", "README", "MIT-LICENSE", "TODO", "CHANGES", "doc/command_line_usage.rdoc", "doc/glossary.rdoc", "doc/proto_rake.rdoc", "doc/rakefile.rdoc", "doc/rational.rdoc", "doc/release_notes/rake-0.4.14.rdoc", "doc/release_notes/rake-0.4.15.rdoc", "doc/release_notes/rake-0.5.0.rdoc", "doc/release_notes/rake-0.5.3.rdoc", "doc/release_notes/rake-0.5.4.rdoc", "doc/release_notes/rake-0.6.0.rdoc", "doc/release_notes/rake-0.7.0.rdoc", "doc/release_notes/rake-0.7.1.rdoc", "doc/release_notes/rake-0.7.2.rdoc", "doc/release_notes/rake-0.7.3.rdoc", "doc/release_notes/rake-0.8.0.rdoc", "doc/release_notes/rake-0.8.2.rdoc", "doc/release_notes/rake-0.8.3.rdoc", "doc/release_notes/rake-0.8.4.rdoc", "doc/release_notes/rake-0.8.5.rdoc", "doc/release_notes/rake-0.8.6.rdoc", "doc/release_notes/rake-0.8.7.rdoc"]
|
15
|
+
s.homepage = %q{http://rake.rubyforge.org}
|
16
|
+
s.rdoc_options = ["--line-numbers", "--main", "README", "--title", "Rake -- Ruby Make"]
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
s.rubyforge_project = %q{rake}
|
19
|
+
s.rubygems_version = %q{1.7.2}
|
20
|
+
s.summary = %q{Ruby based make-like utility.}
|
21
|
+
|
22
|
+
if s.respond_to? :specification_version then
|
23
|
+
s.specification_version = 2
|
24
|
+
|
25
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
26
|
+
else
|
27
|
+
end
|
28
|
+
else
|
29
|
+
end
|
30
|
+
end
|
@@ -7,7 +7,6 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Nick Sieger"]
|
9
9
|
s.date = %q{2010-11-03}
|
10
|
-
s.default_executable = %q{sample_jar}
|
11
10
|
s.description = %q{Sample jar application for Warbler specs.}
|
12
11
|
s.email = ["nick@nicksieger.com"]
|
13
12
|
s.executables = ["sample_jar"]
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2010 Engine Yard, Inc.
|
2
|
+
# Copyright (c) 2010-2011 Engine Yard, Inc.
|
3
3
|
# Copyright (c) 2007-2009 Sun Microsystems, Inc.
|
4
4
|
# This source code is available under the MIT license.
|
5
5
|
# See the file LICENSE.txt for details.
|
@@ -36,12 +36,13 @@ end
|
|
36
36
|
module Spec::Example::ExampleGroupMethods
|
37
37
|
def run_in_directory(dir)
|
38
38
|
before :each do
|
39
|
-
@pwd
|
39
|
+
(@pwd ||= []) << Dir.getwd
|
40
|
+
Dir.chdir(@pwd.first) # let directory always be relative to project root
|
40
41
|
Dir.chdir(dir)
|
41
42
|
end
|
42
43
|
|
43
44
|
after :each do
|
44
|
-
Dir.chdir(@pwd)
|
45
|
+
Dir.chdir(@pwd.pop)
|
45
46
|
end
|
46
47
|
end
|
47
48
|
|
@@ -56,7 +57,7 @@ module Spec::Example::ExampleGroupMethods
|
|
56
57
|
def use_fresh_environment
|
57
58
|
before(:each) do
|
58
59
|
@env_save = {}
|
59
|
-
(ENV.keys.grep(/BUNDLE/) + ["RUBYOPT"
|
60
|
+
(ENV.keys.grep(/BUNDLE/) + ["RUBYOPT"]).each {|k| @env_save[k] = ENV[k]; ENV.delete(k)}
|
60
61
|
end
|
61
62
|
|
62
63
|
after(:each) do
|
@@ -68,7 +69,33 @@ module Spec::Example::ExampleGroupMethods
|
|
68
69
|
after(:each) do
|
69
70
|
rm_rf FileList["log", ".bundle", "tmp/war"]
|
70
71
|
rm_f FileList["*.war", "*.foobar", "**/config.ru", "*web.xml*", "config/web.xml*", "config/warble.rb",
|
71
|
-
"file.txt", 'manifest', 'Gemfile*', 'MANIFEST.MF*', 'init.rb*', '**/*.class']
|
72
|
+
"file.txt", 'manifest', '*Gemfile*', 'MANIFEST.MF*', 'init.rb*', '**/*.class']
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def run_out_of_process_with_drb
|
77
|
+
before :all do
|
78
|
+
require 'drb'
|
79
|
+
DRb.start_service
|
80
|
+
@orig_dir = Dir.pwd
|
81
|
+
end
|
82
|
+
|
83
|
+
let(:drbclient) do
|
84
|
+
drb
|
85
|
+
DRbObject.new(nil, 'druby://127.0.0.1:7890').tap do |drbclient|
|
86
|
+
loop { (drbclient.alive? && break) rescue nil }
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
let(:drb) do
|
91
|
+
Thread.new do
|
92
|
+
ruby "-I#{Warbler::WARBLER_HOME}/lib", File.join(@orig_dir, 'spec/drb_helper.rb')
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
after :each do
|
97
|
+
drbclient.stop
|
98
|
+
drb.join
|
72
99
|
end
|
73
100
|
end
|
74
101
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2010 Engine Yard, Inc.
|
2
|
+
# Copyright (c) 2010-2011 Engine Yard, Inc.
|
3
3
|
# Copyright (c) 2007-2009 Sun Microsystems, Inc.
|
4
4
|
# This source code is available under the MIT license.
|
5
5
|
# See the file LICENSE.txt for details.
|
6
6
|
#++
|
7
7
|
|
8
|
-
require File.
|
8
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
9
9
|
|
10
10
|
describe Warbler::Application do
|
11
11
|
run_in_directory "spec/sample_war"
|
@@ -84,3 +84,12 @@ describe Warbler::Application do
|
|
84
84
|
Warbler::Application.new.load_project_rakefile
|
85
85
|
end
|
86
86
|
end
|
87
|
+
|
88
|
+
describe Warbler::Application do
|
89
|
+
it "should report Warbler version with --version" do
|
90
|
+
ruby = File.join Config::CONFIG['bindir'], 'ruby'
|
91
|
+
output = `#{ruby} -rubygems -Ilib -S bin/warble --version`.chomp
|
92
|
+
output.should =~ /warbler/i
|
93
|
+
output.should =~ /#{Warbler::VERSION}/
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,136 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2010-2011 Engine Yard, Inc.
|
3
|
+
# Copyright (c) 2007-2009 Sun Microsystems, Inc.
|
4
|
+
# This source code is available under the MIT license.
|
5
|
+
# See the file LICENSE.txt for details.
|
6
|
+
#++
|
7
|
+
|
8
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
9
|
+
|
10
|
+
describe Warbler::Jar, "with Bundler" do
|
11
|
+
use_fresh_rake_application
|
12
|
+
use_fresh_environment
|
13
|
+
run_out_of_process_with_drb
|
14
|
+
|
15
|
+
def file_list(regex)
|
16
|
+
jar.files.keys.select {|f| f =~ regex }
|
17
|
+
end
|
18
|
+
|
19
|
+
def use_config(&block)
|
20
|
+
@extra_config = block
|
21
|
+
end
|
22
|
+
|
23
|
+
let(:config) { drbclient.config(@extra_config) }
|
24
|
+
let(:jar) { drbclient.jar }
|
25
|
+
|
26
|
+
context "in a war project" do
|
27
|
+
run_in_directory "spec/sample_war"
|
28
|
+
cleanup_temp_files
|
29
|
+
|
30
|
+
before :each do
|
31
|
+
File.open("Gemfile", "w") {|f| f << "gem 'rspec'"}
|
32
|
+
end
|
33
|
+
|
34
|
+
it "detects a Bundler trait" do
|
35
|
+
config.traits.should include(Warbler::Traits::Bundler)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "detects a Gemfile and process only its gems" do
|
39
|
+
use_config do |config|
|
40
|
+
config.gems << "rake"
|
41
|
+
end
|
42
|
+
jar.apply(config)
|
43
|
+
file_list(%r{WEB-INF/Gemfile}).should_not be_empty
|
44
|
+
file_list(%r{WEB-INF/gems/specifications/rspec}).should_not be_empty
|
45
|
+
file_list(%r{WEB-INF/gems/specifications/rake}).should be_empty
|
46
|
+
end
|
47
|
+
|
48
|
+
it "copies Gemfiles into the war" do
|
49
|
+
File.open("Gemfile.lock", "w") {|f| f << "GEM"}
|
50
|
+
jar.apply(config)
|
51
|
+
file_list(%r{WEB-INF/Gemfile}).should_not be_empty
|
52
|
+
file_list(%r{WEB-INF/Gemfile.lock}).should_not be_empty
|
53
|
+
end
|
54
|
+
|
55
|
+
it "allows overriding of the gem path when using Bundler" do
|
56
|
+
use_config do |config|
|
57
|
+
config.gem_path = '/WEB-INF/jewels'
|
58
|
+
end
|
59
|
+
jar.apply(config)
|
60
|
+
file_list(%r{WEB-INF/jewels/specifications/rspec}).should_not be_empty
|
61
|
+
end
|
62
|
+
|
63
|
+
it "works with :git entries in Gemfiles" do
|
64
|
+
File.open("Gemfile", "w") {|f| f << "gem 'warbler', :git => '#{Warbler::WARBLER_HOME}'\n"}
|
65
|
+
silence { ruby "-S", "bundle", "install", "--local" }
|
66
|
+
jar.apply(config)
|
67
|
+
file_list(%r{WEB-INF/gems/bundler/gems/warbler[^/]*/lib/warbler/version\.rb}).should_not be_empty
|
68
|
+
file_list(%r{WEB-INF/gems/bundler/gems/warbler[^/]*/warbler.gemspec}).should_not be_empty
|
69
|
+
end
|
70
|
+
|
71
|
+
it "does not work with :path entries in Gemfiles" do
|
72
|
+
File.open("Gemfile", "w") {|f| f << "gem 'warbler', :path => '#{Warbler::WARBLER_HOME}'\n"}
|
73
|
+
silence do
|
74
|
+
ruby "-S", "bundle", "install", "--local"
|
75
|
+
jar.apply(config)
|
76
|
+
end
|
77
|
+
file_list(%r{warbler}).should be_empty
|
78
|
+
end
|
79
|
+
|
80
|
+
it "does not bundle dependencies in the test group by default" do
|
81
|
+
File.open("Gemfile", "w") {|f| f << "gem 'rake'\ngroup :test do\ngem 'rspec'\nend\n"}
|
82
|
+
jar.apply(config)
|
83
|
+
file_list(%r{WEB-INF/gems/gems/rake[^/]*/}).should_not be_empty
|
84
|
+
file_list(%r{WEB-INF/gems/gems/rspec[^/]*/}).should be_empty
|
85
|
+
file_list(%r{WEB-INF/gems/specifications/rake}).should_not be_empty
|
86
|
+
file_list(%r{WEB-INF/gems/specifications/rspec}).should be_empty
|
87
|
+
end
|
88
|
+
|
89
|
+
it "adds BUNDLE_WITHOUT to init.rb" do
|
90
|
+
jar.add_init_file(config)
|
91
|
+
contents = jar.contents('META-INF/init.rb')
|
92
|
+
contents.should =~ /ENV\['BUNDLE_WITHOUT'\]/
|
93
|
+
contents.should =~ /'development:test'/
|
94
|
+
end
|
95
|
+
|
96
|
+
it "uses ENV['BUNDLE_GEMFILE'] if set" do
|
97
|
+
mv "Gemfile", "Special-Gemfile"
|
98
|
+
ENV['BUNDLE_GEMFILE'] = "Special-Gemfile"
|
99
|
+
config.traits.should include(Warbler::Traits::Bundler)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
context "in a jar project" do
|
104
|
+
run_in_directory "spec/sample_jar"
|
105
|
+
cleanup_temp_files
|
106
|
+
|
107
|
+
it "works with :git entries in Gemfiles" do
|
108
|
+
File.open("Gemfile", "w") {|f| f << "gem 'warbler', :git => '#{Warbler::WARBLER_HOME}'\n"}
|
109
|
+
silence { ruby "-S", "bundle", "install", "--local" }
|
110
|
+
jar.apply(config)
|
111
|
+
file_list(%r{^bundler/gems/warbler[^/]*/lib/warbler/version\.rb}).should_not be_empty
|
112
|
+
file_list(%r{^bundler/gems/warbler[^/]*/warbler.gemspec}).should_not be_empty
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
context "when frozen" do
|
117
|
+
run_in_directory "spec/sample_bundler"
|
118
|
+
|
119
|
+
it "includes the bundler gem" do
|
120
|
+
jar.apply(config)
|
121
|
+
config.gems.detect{|k,v| k.name == 'bundler'}.should_not be_nil
|
122
|
+
file_list(/bundler-/).should_not be_empty
|
123
|
+
end
|
124
|
+
|
125
|
+
it "does not include the bundler cache directory" do
|
126
|
+
jar.apply(config)
|
127
|
+
file_list(%r{vendor/bundle}).should be_empty
|
128
|
+
end
|
129
|
+
|
130
|
+
it "includes ENV['BUNDLE_FROZEN'] in init.rb" do
|
131
|
+
jar.apply(config)
|
132
|
+
contents = jar.contents('META-INF/init.rb')
|
133
|
+
contents.split("\n").grep(/ENV\['BUNDLE_FROZEN'\] = '1'/).should_not be_empty
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
data/spec/warbler/config_spec.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2010 Engine Yard, Inc.
|
2
|
+
# Copyright (c) 2010-2011 Engine Yard, Inc.
|
3
3
|
# Copyright (c) 2007-2009 Sun Microsystems, Inc.
|
4
4
|
# This source code is available under the MIT license.
|
5
5
|
# See the file LICENSE.txt for details.
|
6
6
|
#++
|
7
7
|
|
8
|
-
require File.
|
8
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
9
9
|
|
10
10
|
describe Warbler::Config do
|
11
11
|
before :each do
|
data/spec/warbler/gems_spec.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2010 Engine Yard, Inc.
|
2
|
+
# Copyright (c) 2010-2011 Engine Yard, Inc.
|
3
3
|
# Copyright (c) 2007-2009 Sun Microsystems, Inc.
|
4
4
|
# This source code is available under the MIT license.
|
5
5
|
# See the file LICENSE.txt for details.
|
6
6
|
#++
|
7
7
|
|
8
|
-
require File.
|
8
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
9
9
|
|
10
10
|
describe Warbler::Gems do
|
11
11
|
it "should accept a hash for initialization" do
|
data/spec/warbler/jar_spec.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2010 Engine Yard, Inc.
|
2
|
+
# Copyright (c) 2010-2011 Engine Yard, Inc.
|
3
|
+
# Copyright (c) 2007-2009 Sun Microsystems, Inc.
|
3
4
|
# This source code is available under the MIT license.
|
4
5
|
# See the file LICENSE.txt for details.
|
5
6
|
#++
|
6
7
|
|
7
|
-
require File.
|
8
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
8
9
|
|
9
10
|
describe Warbler::Jar do
|
10
11
|
use_fresh_rake_application
|
@@ -50,10 +51,16 @@ describe Warbler::Jar do
|
|
50
51
|
|
51
52
|
it "requires 'rubygems' in init.rb" do
|
52
53
|
jar.add_init_file(config)
|
53
|
-
contents = jar.
|
54
|
+
contents = jar.contents('META-INF/init.rb')
|
54
55
|
contents.split("\n").grep(/require 'rubygems'/).should_not be_empty
|
55
56
|
end
|
56
57
|
|
58
|
+
it "adds ENV['GEM_HOME'] to init.rb" do
|
59
|
+
jar.add_init_file(config)
|
60
|
+
contents = jar.contents('META-INF/init.rb')
|
61
|
+
contents.should =~ /ENV\['GEM_HOME'\]/
|
62
|
+
end
|
63
|
+
|
57
64
|
it "adds a main.rb" do
|
58
65
|
jar.apply(config)
|
59
66
|
file_list(%r{^META-INF/main.rb$}).should_not be_empty
|
@@ -91,23 +98,15 @@ describe Warbler::Jar do
|
|
91
98
|
file_list(%r{^specifications/rubyzip.*\.gemspec}).should_not be_empty
|
92
99
|
end
|
93
100
|
|
94
|
-
it "sets files to be stored in the archive from the spec" do
|
95
|
-
touch "extra.foobar"
|
96
|
-
jar.apply(config)
|
97
|
-
file_list(%r{^sample_jar/History\.txt$}).should_not be_empty
|
98
|
-
file_list(%r{^sample_jar/lib/sample_jar\.rb$}).should_not be_empty
|
99
|
-
file_list(%r{^sample_jar/extra\.foobar$}).should be_empty
|
100
|
-
end
|
101
|
-
|
102
101
|
it "sets load paths in init.rb" do
|
103
102
|
jar.add_init_file(config)
|
104
|
-
contents = jar.
|
103
|
+
contents = jar.contents('META-INF/init.rb')
|
105
104
|
contents.split("\n").grep(/LOAD_PATH\.unshift.*sample_jar\/lib/).should_not be_empty
|
106
105
|
end
|
107
106
|
|
108
107
|
it "loads the default executable in main.rb" do
|
109
108
|
jar.apply(config)
|
110
|
-
contents = jar.
|
109
|
+
contents = jar.contents('META-INF/main.rb')
|
111
110
|
contents.split("\n").grep(/load.*sample_jar\/bin\/sample_jar/).should_not be_empty
|
112
111
|
end
|
113
112
|
|
@@ -116,21 +115,7 @@ describe Warbler::Jar do
|
|
116
115
|
jar.compile(config)
|
117
116
|
jar.apply(config)
|
118
117
|
file_list(%r{^sample_jar/lib/sample_jar\.class$}).should_not be_empty
|
119
|
-
jar.
|
120
|
-
end
|
121
|
-
|
122
|
-
context "and a missing file" do
|
123
|
-
before :each do
|
124
|
-
mv "Rakefile", "Rakefile.tmp"
|
125
|
-
end
|
126
|
-
|
127
|
-
after :each do
|
128
|
-
mv "Rakefile.tmp", "Rakefile"
|
129
|
-
end
|
130
|
-
|
131
|
-
it "should warn about the missing file but still continue" do
|
132
|
-
capture { jar.apply(config) }.should =~ /Rakefile/
|
133
|
-
end
|
118
|
+
jar.contents('sample_jar/lib/sample_jar.rb').should =~ /require __FILE__\.sub/
|
134
119
|
end
|
135
120
|
end
|
136
121
|
|
@@ -154,7 +139,7 @@ describe Warbler::Jar do
|
|
154
139
|
|
155
140
|
it "loads the first bin/executable in main.rb" do
|
156
141
|
silence { jar.apply(config) }
|
157
|
-
contents = jar.
|
142
|
+
contents = jar.contents('META-INF/main.rb')
|
158
143
|
contents.split("\n").grep(/load.*sample_jar\/bin\/sample_jar/).should_not be_empty
|
159
144
|
end
|
160
145
|
end
|
@@ -192,13 +177,13 @@ describe Warbler::Jar do
|
|
192
177
|
|
193
178
|
it "sets load paths in init.rb" do
|
194
179
|
jar.add_init_file(config)
|
195
|
-
contents = jar.
|
180
|
+
contents = jar.contents('META-INF/init.rb')
|
196
181
|
contents.split("\n").grep(/LOAD_PATH\.unshift.*sample_jar\/lib/).should_not be_empty
|
197
182
|
end
|
198
183
|
|
199
184
|
it "loads the first bin/executable in main.rb" do
|
200
185
|
jar.apply(config)
|
201
|
-
contents = jar.
|
186
|
+
contents = jar.contents('META-INF/main.rb')
|
202
187
|
contents.split("\n").grep(/load.*sample_jar\/bin\/sample_jar/).should_not be_empty
|
203
188
|
end
|
204
189
|
end
|
@@ -231,6 +216,13 @@ describe Warbler::Jar do
|
|
231
216
|
file_list(%r{WEB-INF/gems/specifications/rake.*\.gemspec}).should_not be_empty
|
232
217
|
end
|
233
218
|
|
219
|
+
it "adds ENV['GEM_HOME'] to init.rb" do
|
220
|
+
jar.add_init_file(config)
|
221
|
+
contents = jar.contents('META-INF/init.rb')
|
222
|
+
contents.should =~ /ENV\['GEM_HOME'\]/
|
223
|
+
contents.should =~ /WEB-INF\/gems/
|
224
|
+
end
|
225
|
+
|
234
226
|
it "does not include log files by default" do
|
235
227
|
jar.apply(config)
|
236
228
|
file_list(%r{WEB-INF/log}).should_not be_empty
|
@@ -368,6 +360,14 @@ describe Warbler::Jar do
|
|
368
360
|
file_list(%r{lib/tasks/utils.rake}).should be_empty
|
369
361
|
end
|
370
362
|
|
363
|
+
it "can exclude public files from the .war" do
|
364
|
+
use_config do |config|
|
365
|
+
config.excludes += FileList['public/robots.txt']
|
366
|
+
end
|
367
|
+
jar.apply(config)
|
368
|
+
file_list(%r{robots.txt}).should be_empty
|
369
|
+
end
|
370
|
+
|
371
371
|
it "reads configuration from #{Warbler::Config::FILE}" do
|
372
372
|
mkdir_p "config"
|
373
373
|
File.open(Warbler::Config::FILE, "w") do |dest|
|
@@ -394,6 +394,7 @@ describe Warbler::Jar do
|
|
394
394
|
|
395
395
|
it "allows specification of dependency by Gem::Dependency" do
|
396
396
|
spec = mock "gem spec"
|
397
|
+
spec.stub!(:name).and_return "hpricot"
|
397
398
|
spec.stub!(:full_name).and_return "hpricot-0.6.157"
|
398
399
|
spec.stub!(:full_gem_path).and_return "hpricot-0.6.157"
|
399
400
|
spec.stub!(:loaded_from).and_return "hpricot.gemspec"
|
@@ -406,7 +407,7 @@ describe Warbler::Jar do
|
|
406
407
|
use_config do |config|
|
407
408
|
config.gems = [Gem::Dependency.new("hpricot", "> 0.6")]
|
408
409
|
end
|
409
|
-
jar.apply(config)
|
410
|
+
silence { jar.apply(config) }
|
410
411
|
end
|
411
412
|
|
412
413
|
it "copies loose java classes to WEB-INF/classes" do
|
@@ -493,17 +494,30 @@ describe Warbler::Jar do
|
|
493
494
|
config.gems.keys.should include(Gem::Dependency.new("hpricot", Gem::Requirement.new("=0.6")))
|
494
495
|
end
|
495
496
|
|
496
|
-
|
497
|
-
|
498
|
-
config
|
499
|
-
|
500
|
-
config.stub!(:threadsafe!)
|
501
|
-
config.should_receive(:allow_concurrency).and_return true
|
502
|
-
config.should_receive(:preload_frameworks).and_return true
|
497
|
+
context "with threadsafe! enabled" do
|
498
|
+
before :each do
|
499
|
+
cp "config/environments/production.rb", "config/environments/production.rb.orig"
|
500
|
+
File.open("config/environments/production.rb", "a") {|f| f.puts "", "config.threadsafe!" }
|
503
501
|
end
|
504
502
|
|
505
|
-
|
506
|
-
|
503
|
+
after :each do
|
504
|
+
mv "config/environments/production.rb.orig", "config/environments/production.rb"
|
505
|
+
end
|
506
|
+
|
507
|
+
it "sets the jruby min and max runtimes to 1" do
|
508
|
+
config.webxml.booter.should == :rails
|
509
|
+
config.webxml.jruby.min.runtimes.should == 1
|
510
|
+
config.webxml.jruby.max.runtimes.should == 1
|
511
|
+
end
|
512
|
+
|
513
|
+
it "doesn't override already configured runtime numbers" do
|
514
|
+
use_config do |config|
|
515
|
+
config.webxml.jruby.min.runtimes = 2
|
516
|
+
config.webxml.jruby.max.runtimes = 2
|
517
|
+
end
|
518
|
+
config.webxml.jruby.min.runtimes.should == 2
|
519
|
+
config.webxml.jruby.max.runtimes.should == 2
|
520
|
+
end
|
507
521
|
end
|
508
522
|
|
509
523
|
it "adds RAILS_ENV to init.rb" do
|
@@ -511,7 +525,7 @@ describe Warbler::Jar do
|
|
511
525
|
config.webxml.booter = :rails
|
512
526
|
end
|
513
527
|
jar.add_init_file(config)
|
514
|
-
contents = jar.
|
528
|
+
contents = jar.contents('META-INF/init.rb')
|
515
529
|
contents.should =~ /ENV\['RAILS_ENV'\]/
|
516
530
|
contents.should =~ /'production'/
|
517
531
|
end
|
@@ -537,12 +551,12 @@ describe Warbler::Jar do
|
|
537
551
|
merb.const_set("BootLoader", boot_loader)
|
538
552
|
merb.const_set("VERSION", "1.0")
|
539
553
|
dependencies = Class.new do
|
540
|
-
|
554
|
+
@dependencies = []
|
541
555
|
def self.dependencies
|
542
|
-
|
556
|
+
@dependencies
|
543
557
|
end
|
544
558
|
def self.dependencies=(deps)
|
545
|
-
|
559
|
+
@dependencies = deps
|
546
560
|
end
|
547
561
|
end
|
548
562
|
boot_loader.const_set("Dependencies", dependencies)
|
@@ -599,71 +613,12 @@ describe Warbler::Jar do
|
|
599
613
|
|
600
614
|
it "adds RACK_ENV to init.rb" do
|
601
615
|
jar.add_init_file(config)
|
602
|
-
contents = jar.
|
616
|
+
contents = jar.contents('META-INF/init.rb')
|
603
617
|
contents.should =~ /ENV\['RACK_ENV'\]/
|
604
618
|
contents.should =~ /'production'/
|
605
619
|
end
|
606
620
|
end
|
607
621
|
|
608
|
-
context "with Bundler" do
|
609
|
-
before :each do
|
610
|
-
File.open("Gemfile", "w") {|f| f << "gem 'rspec'"}
|
611
|
-
end
|
612
|
-
|
613
|
-
it "detects a Bundler trait" do
|
614
|
-
config.traits.should include(Warbler::Traits::Bundler)
|
615
|
-
end
|
616
|
-
|
617
|
-
it "detects a Bundler Gemfile and process only its gems" do
|
618
|
-
use_config do |config|
|
619
|
-
config.gems << "rake"
|
620
|
-
end
|
621
|
-
jar.apply(config)
|
622
|
-
file_list(%r{WEB-INF/Gemfile}).should_not be_empty
|
623
|
-
file_list(%r{WEB-INF/gems/specifications/rspec}).should_not be_empty
|
624
|
-
file_list(%r{WEB-INF/gems/specifications/rake}).should be_empty
|
625
|
-
end
|
626
|
-
|
627
|
-
it "copies Bundler gemfiles into the war" do
|
628
|
-
File.open("Gemfile.lock", "w") {|f| f << "GEM"}
|
629
|
-
jar.apply(config)
|
630
|
-
file_list(%r{WEB-INF/Gemfile}).should_not be_empty
|
631
|
-
file_list(%r{WEB-INF/Gemfile.lock}).should_not be_empty
|
632
|
-
end
|
633
|
-
|
634
|
-
it "allows overriding of the gem path when using Bundler" do
|
635
|
-
use_config do |config|
|
636
|
-
config.gem_path = '/WEB-INF/jewels'
|
637
|
-
end
|
638
|
-
jar.apply(config)
|
639
|
-
file_list(%r{WEB-INF/jewels/specifications/rspec}).should_not be_empty
|
640
|
-
end
|
641
|
-
|
642
|
-
it "works with :git entries in Bundler Gemfiles" do
|
643
|
-
File.open("Gemfile", "w") {|f| f << "gem 'warbler', :git => '#{Warbler::WARBLER_HOME}'\n"}
|
644
|
-
silence { ruby "-S", "bundle", "install", "--local" }
|
645
|
-
jar.apply(config)
|
646
|
-
file_list(%r{WEB-INF/gems/gems/warbler[^/]*/lib/warbler/version\.rb}).should_not be_empty
|
647
|
-
file_list(%r{WEB-INF/gems/specifications/warbler}).should_not be_empty
|
648
|
-
end
|
649
|
-
|
650
|
-
it "does not bundle dependencies in the test group by default" do
|
651
|
-
File.open("Gemfile", "w") {|f| f << "gem 'rake'\ngroup :test do\ngem 'rspec'\nend\n"}
|
652
|
-
jar.apply(config)
|
653
|
-
file_list(%r{WEB-INF/gems/gems/rake[^/]*/}).should_not be_empty
|
654
|
-
file_list(%r{WEB-INF/gems/gems/rspec[^/]*/}).should be_empty
|
655
|
-
file_list(%r{WEB-INF/gems/specifications/rake}).should_not be_empty
|
656
|
-
file_list(%r{WEB-INF/gems/specifications/rspec}).should be_empty
|
657
|
-
end
|
658
|
-
|
659
|
-
it "adds BUNDLE_WITHOUT to init.rb" do
|
660
|
-
jar.add_init_file(config)
|
661
|
-
contents = jar.files['META-INF/init.rb'].read
|
662
|
-
contents.should =~ /ENV\['BUNDLE_WITHOUT'\]/
|
663
|
-
contents.should =~ /'development:test'/
|
664
|
-
end
|
665
|
-
end
|
666
|
-
|
667
622
|
it "skips directories that don't exist in config.dirs and print a warning" do
|
668
623
|
use_config do |config|
|
669
624
|
config.dirs = %w(lib notexist)
|
@@ -718,7 +673,7 @@ describe Warbler::Jar do
|
|
718
673
|
end
|
719
674
|
jar.apply(config)
|
720
675
|
file_list(%r{WEB-INF/myserver-web.xml}).should_not be_empty
|
721
|
-
jar.
|
676
|
+
jar.contents('WEB-INF/myserver-web.xml').should =~ /web-app.*production/
|
722
677
|
end
|
723
678
|
|
724
679
|
it "excludes test files in gems according to config.gem_excludes" do
|
@@ -747,7 +702,7 @@ describe Warbler::Jar do
|
|
747
702
|
config.init_contents << "Rakefile"
|
748
703
|
end
|
749
704
|
jar.add_init_file(config)
|
750
|
-
contents = jar.
|
705
|
+
contents = jar.contents('META-INF/init.rb')
|
751
706
|
contents.should =~ /require 'rake'/
|
752
707
|
end
|
753
708
|
|
@@ -756,7 +711,7 @@ describe Warbler::Jar do
|
|
756
711
|
config.webxml.dummy = '<dummy/>'
|
757
712
|
end
|
758
713
|
jar.apply(config)
|
759
|
-
jar.
|
714
|
+
jar.contents('META-INF/init.rb').should =~ /<dummy\/>/
|
760
715
|
end
|
761
716
|
end
|
762
717
|
end
|