lucidimagination-warbler 1.3.2.dev
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +16 -0
- data/History.txt +217 -0
- data/LICENSE.txt +26 -0
- data/Manifest.txt +92 -0
- data/README.txt +255 -0
- data/Rakefile +103 -0
- data/bin/warble +11 -0
- data/ext/JarMain.java +148 -0
- data/ext/WarMain.java +112 -0
- data/ext/WarblerJar.java +182 -0
- data/ext/WarblerJarService.java +18 -0
- data/lib/warbler.rb +33 -0
- data/lib/warbler/application.rb +86 -0
- data/lib/warbler/config.rb +223 -0
- data/lib/warbler/gems.rb +37 -0
- data/lib/warbler/jar.rb +253 -0
- data/lib/warbler/task.rb +183 -0
- data/lib/warbler/templates/bundler.erb +3 -0
- data/lib/warbler/templates/config.erb +1 -0
- data/lib/warbler/templates/jar.erb +5 -0
- data/lib/warbler/templates/rack.erb +1 -0
- data/lib/warbler/templates/rails.erb +1 -0
- data/lib/warbler/templates/war.erb +1 -0
- data/lib/warbler/traits.rb +107 -0
- data/lib/warbler/traits/bundler.rb +104 -0
- data/lib/warbler/traits/gemspec.rb +59 -0
- data/lib/warbler/traits/jar.rb +56 -0
- data/lib/warbler/traits/merb.rb +35 -0
- data/lib/warbler/traits/nogemspec.rb +42 -0
- data/lib/warbler/traits/rack.rb +33 -0
- data/lib/warbler/traits/rails.rb +62 -0
- data/lib/warbler/traits/war.rb +197 -0
- data/lib/warbler/version.rb +10 -0
- data/lib/warbler/war.rb +8 -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_jar/History.txt +6 -0
- data/spec/sample_jar/Manifest.txt +8 -0
- data/spec/sample_jar/README.txt +30 -0
- data/spec/sample_jar/lib/sample_jar.rb +6 -0
- data/spec/sample_jar/sample_jar.gemspec +40 -0
- data/spec/sample_jar/test/test_sample_jar.rb +8 -0
- data/spec/sample_war/app/controllers/application.rb +15 -0
- data/spec/sample_war/app/helpers/application_helper.rb +3 -0
- data/spec/sample_war/config/boot.rb +109 -0
- data/spec/sample_war/config/database.yml +19 -0
- data/spec/sample_war/config/environment.rb +67 -0
- data/spec/sample_war/config/environments/development.rb +17 -0
- data/spec/sample_war/config/environments/production.rb +25 -0
- data/spec/sample_war/config/environments/test.rb +22 -0
- data/spec/sample_war/config/initializers/inflections.rb +10 -0
- data/spec/sample_war/config/initializers/mime_types.rb +5 -0
- data/spec/sample_war/config/initializers/new_rails_defaults.rb +15 -0
- data/spec/sample_war/config/routes.rb +41 -0
- data/spec/sample_war/lib/tasks/utils.rake +0 -0
- data/spec/sample_war/public/404.html +30 -0
- data/spec/sample_war/public/422.html +30 -0
- data/spec/sample_war/public/500.html +30 -0
- data/spec/sample_war/public/favicon.ico +0 -0
- data/spec/sample_war/public/index.html +274 -0
- data/spec/sample_war/public/robots.txt +5 -0
- data/spec/spec_helper.rb +112 -0
- data/spec/warbler/application_spec.rb +95 -0
- data/spec/warbler/bundler_spec.rb +136 -0
- data/spec/warbler/config_spec.rb +130 -0
- data/spec/warbler/gems_spec.rb +40 -0
- data/spec/warbler/jar_spec.rb +718 -0
- data/spec/warbler/task_spec.rb +170 -0
- data/spec/warbler/traits_spec.rb +17 -0
- data/spec/warbler/war_spec.rb +14 -0
- data/warble.rb +142 -0
- data/web.xml.erb +32 -0
- metadata +198 -0
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,112 @@
|
|
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 'rubygems'
|
9
|
+
require 'spec'
|
10
|
+
|
11
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
|
12
|
+
require 'warbler'
|
13
|
+
|
14
|
+
raise %{Error: detected running Warbler specs in a Rails app;
|
15
|
+
Warbler specs are destructive to application directories.} if File.directory?("app")
|
16
|
+
|
17
|
+
def silence(io = nil)
|
18
|
+
require 'stringio'
|
19
|
+
old_stdout = $stdout
|
20
|
+
old_stderr = $stderr
|
21
|
+
$stdout = io || StringIO.new
|
22
|
+
$stderr = io || StringIO.new
|
23
|
+
yield
|
24
|
+
ensure
|
25
|
+
$stdout = old_stdout
|
26
|
+
$stderr = old_stderr
|
27
|
+
end
|
28
|
+
|
29
|
+
def capture(&block)
|
30
|
+
require 'stringio'
|
31
|
+
io = StringIO.new
|
32
|
+
silence(io, &block)
|
33
|
+
io.string
|
34
|
+
end
|
35
|
+
|
36
|
+
module Spec::Example::ExampleGroupMethods
|
37
|
+
def run_in_directory(dir)
|
38
|
+
before :each do
|
39
|
+
(@pwd ||= []) << Dir.getwd
|
40
|
+
Dir.chdir(@pwd.first) # let directory always be relative to project root
|
41
|
+
mkdir_p(dir, :verbose => false)
|
42
|
+
Dir.chdir(dir)
|
43
|
+
end
|
44
|
+
|
45
|
+
after :each do
|
46
|
+
Dir.chdir(@pwd.pop)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def use_fresh_rake_application
|
51
|
+
before :each do
|
52
|
+
@rake = Rake::Application.new
|
53
|
+
Rake.application = @rake
|
54
|
+
verbose(false)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def use_fresh_environment
|
59
|
+
before(:each) do
|
60
|
+
@env_save = {}
|
61
|
+
(ENV.keys.grep(/BUNDLE/) + ["RUBYOPT"]).each {|k| @env_save[k] = ENV[k]; ENV.delete(k)}
|
62
|
+
end
|
63
|
+
|
64
|
+
after(:each) do
|
65
|
+
@env_save.keys.each {|k| ENV[k] = @env_save[k]}
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def cleanup_temp_files
|
70
|
+
after(:each) do
|
71
|
+
rm_rf FileList["log", ".bundle", "tmp/war"]
|
72
|
+
rm_f FileList["*.war", "*.foobar", "**/config.ru", "*web.xml*", "config/web.xml*", "config/warble.rb",
|
73
|
+
"file.txt", 'manifest', '*Gemfile*', 'MANIFEST.MF*', 'init.rb*', '**/*.class']
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def run_out_of_process_with_drb
|
78
|
+
before :all do
|
79
|
+
require 'drb'
|
80
|
+
DRb.start_service
|
81
|
+
@orig_dir = Dir.pwd
|
82
|
+
end
|
83
|
+
|
84
|
+
let(:drbclient) do
|
85
|
+
drb
|
86
|
+
DRbObject.new(nil, 'druby://127.0.0.1:7890').tap do |drbclient|
|
87
|
+
loop { (drbclient.alive? && break) rescue nil }
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
let(:drb) do
|
92
|
+
Thread.new do
|
93
|
+
ruby "-I#{Warbler::WARBLER_HOME}/lib", File.join(@orig_dir, 'spec/drb_helper.rb')
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
after :each do
|
98
|
+
drbclient.stop
|
99
|
+
drb.join
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
Spec::Runner.configure do |config|
|
105
|
+
config.after(:each) do
|
106
|
+
class << Object
|
107
|
+
public :remove_const
|
108
|
+
end
|
109
|
+
Object.remove_const("Rails") rescue nil
|
110
|
+
rm_rf "vendor"
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,95 @@
|
|
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::Application do
|
11
|
+
run_in_directory "spec/sample_war"
|
12
|
+
|
13
|
+
before :each do
|
14
|
+
verbose(false)
|
15
|
+
@argv = ARGV.dup
|
16
|
+
ARGV.clear
|
17
|
+
@app = Rake.application
|
18
|
+
rm_f "config/warble.rb"
|
19
|
+
@detection = Warbler.framework_detection
|
20
|
+
Warbler.framework_detection = false
|
21
|
+
end
|
22
|
+
|
23
|
+
after :each do
|
24
|
+
Rake.application = @app
|
25
|
+
Warbler.project_application = nil
|
26
|
+
Warbler.application = nil
|
27
|
+
Warbler.framework_detection = @detection
|
28
|
+
@argv.reverse.each {|a| ARGV.unshift a}
|
29
|
+
rm_rf FileList['vendor/plugins/warbler']
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should be able to list its tasks" do
|
33
|
+
ARGV.unshift "-T"
|
34
|
+
output = capture do
|
35
|
+
Warbler::Application.new.run
|
36
|
+
end
|
37
|
+
output.should =~ /warble war\s/
|
38
|
+
output.should =~ /warble war:clean/
|
39
|
+
output.should =~ /warble war:debug/
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should display the version" do
|
43
|
+
ARGV.unshift "version"
|
44
|
+
capture { Warbler::Application.new.run }.should =~ /#{Warbler::VERSION}/
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should copy a fresh config file into place" do
|
48
|
+
File.exists?("config/warble.rb").should_not be_true
|
49
|
+
ARGV.unshift "config"
|
50
|
+
silence { Warbler::Application.new.run }
|
51
|
+
File.exists?("config/warble.rb").should be_true
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should refuse to copy over an existing config file" do
|
55
|
+
touch "config/warble.rb"
|
56
|
+
ARGV.unshift "config"
|
57
|
+
capture { Warbler::Application.new.run }.should =~ /already exists/
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should complain if the config directory is missing" do
|
61
|
+
begin
|
62
|
+
mv "config", "config-tmp"
|
63
|
+
ARGV.unshift "config"
|
64
|
+
capture { Warbler::Application.new.run }.should =~ /missing/
|
65
|
+
ensure
|
66
|
+
mv "config-tmp", "config"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should refuse to pluginize if the vendor/plugins/warbler directory exists" do
|
71
|
+
mkdir_p "vendor/plugins/warbler"
|
72
|
+
ARGV.unshift "pluginize"
|
73
|
+
silence { Warbler::Application.new.run }
|
74
|
+
File.exist?("vendor/plugins/warbler/tasks/warbler.rake").should_not be_true
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should define a pluginize task for adding the tasks to a Rails application" do
|
78
|
+
ARGV.unshift "pluginize"
|
79
|
+
Warbler::Application.new.run
|
80
|
+
File.exist?("vendor/plugins/warbler/tasks/warbler.rake").should be_true
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should provide a means to load the project Rakefile" do
|
84
|
+
Warbler::Application.new.load_project_rakefile
|
85
|
+
end
|
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
|
@@ -0,0 +1,130 @@
|
|
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::Config do
|
11
|
+
before :each do
|
12
|
+
verbose(false)
|
13
|
+
end
|
14
|
+
|
15
|
+
context "in an unknown application" do
|
16
|
+
run_in_directory 'spec/sample_war/tmp'
|
17
|
+
|
18
|
+
it "has suitable default values" do
|
19
|
+
config = Warbler::Config.new
|
20
|
+
config.includes.should be_empty
|
21
|
+
config.jar_name.size.should > 0
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context "in a web application" do
|
26
|
+
run_in_directory 'spec/sample_war'
|
27
|
+
|
28
|
+
after :each do
|
29
|
+
rm_f "vendor/test.log"
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should have suitable default values" do
|
33
|
+
config = Warbler::Config.new
|
34
|
+
config.dirs.should include(*Warbler::Config::TOP_DIRS.select{|d| File.directory?(d)})
|
35
|
+
config.includes.should be_empty
|
36
|
+
config.java_libs.should_not be_empty
|
37
|
+
config.jar_name.size.should > 0
|
38
|
+
config.webxml.should be_kind_of(OpenStruct)
|
39
|
+
config.pathmaps.should be_kind_of(OpenStruct)
|
40
|
+
config.pathmaps.public_html.should == ["%{public/,}p"]
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should allow configuration through an initializer block" do
|
44
|
+
config = Warbler::Config.new do |c|
|
45
|
+
c.jar_name = "mywar"
|
46
|
+
end
|
47
|
+
config.jar_name.should == "mywar"
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should allow gems to be added/changed with =, +=, -=, <<" do
|
51
|
+
config = Warbler::Config.new do |c|
|
52
|
+
c.gems += ["activerecord-jdbc-adapter"]
|
53
|
+
c.gems -= ["rails"]
|
54
|
+
c.gems << "tzinfo"
|
55
|
+
c.gems = ["camping"]
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should exclude log files by default" do
|
60
|
+
mkdir_p "vendor"
|
61
|
+
touch "vendor/test.log"
|
62
|
+
config = Warbler::Config.new
|
63
|
+
config.exclude_logs.should == true
|
64
|
+
config.excludes.include?("vendor/test.log").should == true
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should include log files if exclude_logs is false" do
|
68
|
+
mkdir_p "vendor"
|
69
|
+
touch "vendor/test.log"
|
70
|
+
config = Warbler::Config.new {|c| c.exclude_logs = false }
|
71
|
+
config.exclude_logs.should == false
|
72
|
+
config.excludes.include?("vendor/test.log").should == false
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should exclude Warbler itself when run as a plugin" do
|
76
|
+
config = Warbler::Config.new
|
77
|
+
config.excludes.include?("vendor/plugins/warbler").should == false
|
78
|
+
config = Warbler::Config.new File.join(Dir.getwd, "vendor", "plugins", "warbler")
|
79
|
+
config.excludes.include?("vendor/plugins/warbler").should == true
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should generate context parameters from the webxml openstruct" do
|
83
|
+
config = Warbler::Config.new
|
84
|
+
config.webxml.a.b.c = "123"
|
85
|
+
config.webxml.com.example.config = "blah"
|
86
|
+
config.webxml.rails.env = 'staging'
|
87
|
+
config.webxml.jruby.min.runtimes = 2
|
88
|
+
config.webxml.jruby.max.runtimes = 4
|
89
|
+
config.webxml['org']['jruby']['rack'] = "rails"
|
90
|
+
params = config.webxml.context_params
|
91
|
+
params.should have_key('a.b.c')
|
92
|
+
params.should have_key('rails.env')
|
93
|
+
params.should have_key('jruby.min.runtimes')
|
94
|
+
params.should have_key('jruby.max.runtimes')
|
95
|
+
params['a.b.c'].should == "123"
|
96
|
+
params['com.example.config'].should == "blah"
|
97
|
+
params['rails.env'].should == "staging"
|
98
|
+
params['jruby.min.runtimes'].should == "2"
|
99
|
+
params['jruby.max.runtimes'].should == "4"
|
100
|
+
params['org.jruby.rack'].should == "rails"
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should determine the context listener from the webxml.booter parameter" do
|
104
|
+
config = Warbler::Config.new
|
105
|
+
config.webxml.booter = :rack
|
106
|
+
config.webxml.servlet_context_listener.should == "org.jruby.rack.RackServletContextListener"
|
107
|
+
config = Warbler::Config.new
|
108
|
+
config.webxml.booter = :merb
|
109
|
+
config.webxml.servlet_context_listener.should == "org.jruby.rack.merb.MerbServletContextListener"
|
110
|
+
config = Warbler::Config.new
|
111
|
+
config.webxml.servlet_context_listener.should == "org.jruby.rack.rails.RailsServletContextListener"
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should not include ignored webxml keys in the context params hash" do
|
115
|
+
Warbler::Config.new.webxml.context_params.should_not have_key('ignored')
|
116
|
+
Warbler::Config.new.webxml.context_params.should_not have_key('jndi')
|
117
|
+
Warbler::Config.new.webxml.context_params.should_not have_key('booter')
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should have a helpful string representation for an empty key" do
|
121
|
+
Warbler::Config.new.webxml.missing_key.to_s.should =~ /No value for 'missing_key' found/
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should HTML-escape all webxml keys and values" do
|
125
|
+
config = Warbler::Config.new
|
126
|
+
config.webxml.a["b&"].c = "123<hi>456"
|
127
|
+
config.webxml.context_params['a.b&.c'].should == "123<hi>456"
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|