lucidimagination-warbler 1.3.2.dev
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/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
|