darkhelmet-sinatra 0.9.1.1 → 0.10.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/AUTHORS +2 -0
- data/CHANGES +180 -0
- data/LICENSE +1 -1
- data/README.jp.rdoc +552 -0
- data/README.rdoc +177 -38
- data/Rakefile +18 -25
- data/lib/sinatra.rb +1 -2
- data/lib/sinatra/base.rb +405 -305
- data/lib/sinatra/main.rb +5 -24
- data/lib/sinatra/showexceptions.rb +303 -0
- data/lib/sinatra/tilt.rb +509 -0
- data/sinatra.gemspec +21 -51
- data/test/base_test.rb +123 -93
- data/test/builder_test.rb +2 -1
- data/test/contest.rb +64 -0
- data/test/erb_test.rb +1 -1
- data/test/erubis_test.rb +82 -0
- data/test/extensions_test.rb +24 -8
- data/test/filter_test.rb +99 -3
- data/test/haml_test.rb +25 -3
- data/test/helper.rb +43 -48
- data/test/helpers_test.rb +500 -424
- data/test/mapped_error_test.rb +163 -137
- data/test/middleware_test.rb +3 -3
- data/test/request_test.rb +16 -1
- data/test/response_test.rb +2 -2
- data/test/result_test.rb +1 -1
- data/test/route_added_hook_test.rb +59 -0
- data/test/routing_test.rb +170 -22
- data/test/sass_test.rb +44 -1
- data/test/server_test.rb +19 -13
- data/test/sinatra_test.rb +1 -1
- data/test/static_test.rb +9 -2
- data/test/templates_test.rb +78 -11
- data/test/views/error.builder +3 -0
- data/test/views/error.erb +3 -0
- data/test/views/error.erubis +3 -0
- data/test/views/error.haml +3 -0
- data/test/views/error.sass +2 -0
- data/test/views/foo/hello.test +1 -0
- data/test/views/hello.erubis +1 -0
- data/test/views/layout2.erubis +2 -0
- metadata +37 -55
- data/compat/app_test.rb +0 -282
- data/compat/application_test.rb +0 -262
- data/compat/builder_test.rb +0 -101
- data/compat/compat_test.rb +0 -12
- data/compat/custom_error_test.rb +0 -62
- data/compat/erb_test.rb +0 -136
- data/compat/events_test.rb +0 -78
- data/compat/filter_test.rb +0 -30
- data/compat/haml_test.rb +0 -233
- data/compat/helper.rb +0 -30
- data/compat/mapped_error_test.rb +0 -72
- data/compat/pipeline_test.rb +0 -45
- data/compat/public/foo.xml +0 -1
- data/compat/sass_test.rb +0 -57
- data/compat/sessions_test.rb +0 -42
- data/compat/streaming_test.rb +0 -133
- data/compat/sym_params_test.rb +0 -19
- data/compat/template_test.rb +0 -30
- data/compat/use_in_file_templates_test.rb +0 -47
- data/compat/views/foo.builder +0 -1
- data/compat/views/foo.erb +0 -1
- data/compat/views/foo.haml +0 -1
- data/compat/views/foo.sass +0 -2
- data/compat/views/foo_layout.erb +0 -2
- data/compat/views/foo_layout.haml +0 -2
- data/compat/views/layout_test/foo.builder +0 -1
- data/compat/views/layout_test/foo.erb +0 -1
- data/compat/views/layout_test/foo.haml +0 -1
- data/compat/views/layout_test/foo.sass +0 -2
- data/compat/views/layout_test/layout.builder +0 -3
- data/compat/views/layout_test/layout.erb +0 -1
- data/compat/views/layout_test/layout.haml +0 -1
- data/compat/views/layout_test/layout.sass +0 -2
- data/compat/views/no_layout/no_layout.builder +0 -1
- data/compat/views/no_layout/no_layout.haml +0 -1
- data/lib/sinatra/compat.rb +0 -250
- data/lib/sinatra/test.rb +0 -126
- data/lib/sinatra/test/bacon.rb +0 -19
- data/lib/sinatra/test/rspec.rb +0 -13
- data/lib/sinatra/test/spec.rb +0 -11
- data/lib/sinatra/test/unit.rb +0 -13
- data/test/data/reload_app_file.rb +0 -3
- data/test/options_test.rb +0 -374
- data/test/reload_test.rb +0 -68
- data/test/test_test.rb +0 -144
data/lib/sinatra/test/rspec.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'sinatra/test'
|
2
|
-
require 'sinatra/test/unit'
|
3
|
-
require 'spec'
|
4
|
-
require 'spec/interop/test'
|
5
|
-
|
6
|
-
Sinatra::Test.deprecate('RSpec')
|
7
|
-
|
8
|
-
Sinatra::Default.set(
|
9
|
-
:environment => :test,
|
10
|
-
:run => false,
|
11
|
-
:raise_errors => true,
|
12
|
-
:logging => false
|
13
|
-
)
|
data/lib/sinatra/test/spec.rb
DELETED
data/lib/sinatra/test/unit.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'sinatra/test'
|
2
|
-
require 'test/unit'
|
3
|
-
|
4
|
-
Sinatra::Test.deprecate('test/unit')
|
5
|
-
|
6
|
-
Test::Unit::TestCase.send :include, Sinatra::Test
|
7
|
-
|
8
|
-
Sinatra::Default.set(
|
9
|
-
:environment => :test,
|
10
|
-
:run => false,
|
11
|
-
:raise_errors => true,
|
12
|
-
:logging => false
|
13
|
-
)
|
data/test/options_test.rb
DELETED
@@ -1,374 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/helper'
|
2
|
-
|
3
|
-
describe 'Options' do
|
4
|
-
before do
|
5
|
-
restore_default_options
|
6
|
-
@app = Sinatra.new
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'sets options to literal values' do
|
10
|
-
@app.set(:foo, 'bar')
|
11
|
-
assert @app.respond_to?(:foo)
|
12
|
-
assert_equal 'bar', @app.foo
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'sets options to Procs' do
|
16
|
-
@app.set(:foo, Proc.new { 'baz' })
|
17
|
-
assert @app.respond_to?(:foo)
|
18
|
-
assert_equal 'baz', @app.foo
|
19
|
-
end
|
20
|
-
|
21
|
-
it "sets multiple options with a Hash" do
|
22
|
-
@app.set :foo => 1234,
|
23
|
-
:bar => 'Hello World',
|
24
|
-
:baz => Proc.new { 'bizzle' }
|
25
|
-
assert_equal 1234, @app.foo
|
26
|
-
assert_equal 'Hello World', @app.bar
|
27
|
-
assert_equal 'bizzle', @app.baz
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'inherits option methods when subclassed' do
|
31
|
-
@app.set :foo, 'bar'
|
32
|
-
@app.set :biz, Proc.new { 'baz' }
|
33
|
-
|
34
|
-
sub = Class.new(@app)
|
35
|
-
assert sub.respond_to?(:foo)
|
36
|
-
assert_equal 'bar', sub.foo
|
37
|
-
assert sub.respond_to?(:biz)
|
38
|
-
assert_equal 'baz', sub.biz
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'overrides options in subclass' do
|
42
|
-
@app.set :foo, 'bar'
|
43
|
-
@app.set :biz, Proc.new { 'baz' }
|
44
|
-
sub = Class.new(@app)
|
45
|
-
sub.set :foo, 'bling'
|
46
|
-
assert_equal 'bling', sub.foo
|
47
|
-
assert_equal 'bar', @app.foo
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'creates setter methods when first defined' do
|
51
|
-
@app.set :foo, 'bar'
|
52
|
-
assert @app.respond_to?('foo=')
|
53
|
-
@app.foo = 'biz'
|
54
|
-
assert_equal 'biz', @app.foo
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'creates predicate methods when first defined' do
|
58
|
-
@app.set :foo, 'hello world'
|
59
|
-
assert @app.respond_to?(:foo?)
|
60
|
-
assert @app.foo?
|
61
|
-
@app.set :foo, nil
|
62
|
-
assert !@app.foo?
|
63
|
-
end
|
64
|
-
|
65
|
-
it 'uses existing setter methods if detected' do
|
66
|
-
class << @app
|
67
|
-
def foo
|
68
|
-
@foo
|
69
|
-
end
|
70
|
-
def foo=(value)
|
71
|
-
@foo = 'oops'
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
@app.set :foo, 'bam'
|
76
|
-
assert_equal 'oops', @app.foo
|
77
|
-
end
|
78
|
-
|
79
|
-
it "sets multiple options to true with #enable" do
|
80
|
-
@app.enable :sessions, :foo, :bar
|
81
|
-
assert @app.sessions
|
82
|
-
assert @app.foo
|
83
|
-
assert @app.bar
|
84
|
-
end
|
85
|
-
|
86
|
-
it "sets multiple options to false with #disable" do
|
87
|
-
@app.disable :sessions, :foo, :bar
|
88
|
-
assert !@app.sessions
|
89
|
-
assert !@app.foo
|
90
|
-
assert !@app.bar
|
91
|
-
end
|
92
|
-
|
93
|
-
it 'enables MethodOverride middleware when :methodoverride is enabled' do
|
94
|
-
@app.set :methodoverride, true
|
95
|
-
@app.put('/') { 'okay' }
|
96
|
-
post '/', {'_method'=>'PUT'}, {}
|
97
|
-
assert_equal 200, status
|
98
|
-
assert_equal 'okay', body
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
describe_option 'clean_trace' do
|
103
|
-
def clean_backtrace(trace)
|
104
|
-
@base.new.send(:clean_backtrace, trace)
|
105
|
-
end
|
106
|
-
|
107
|
-
it 'is enabled on Base' do
|
108
|
-
assert @base.clean_trace?
|
109
|
-
end
|
110
|
-
|
111
|
-
it 'is enabled on Default' do
|
112
|
-
assert @default.clean_trace?
|
113
|
-
end
|
114
|
-
|
115
|
-
it 'does nothing when disabled' do
|
116
|
-
backtrace = [
|
117
|
-
"./lib/sinatra/base.rb",
|
118
|
-
"./myapp:42",
|
119
|
-
("#{Gem.dir}/some/lib.rb" if defined?(Gem))
|
120
|
-
].compact
|
121
|
-
@base.set :clean_trace, false
|
122
|
-
assert_equal backtrace, clean_backtrace(backtrace)
|
123
|
-
end
|
124
|
-
|
125
|
-
it 'removes sinatra lib paths from backtrace when enabled' do
|
126
|
-
backtrace = [
|
127
|
-
"./lib/sinatra/base.rb",
|
128
|
-
"./lib/sinatra/compat.rb:42",
|
129
|
-
"./lib/sinatra/main.rb:55 in `foo'"
|
130
|
-
]
|
131
|
-
assert clean_backtrace(backtrace).empty?
|
132
|
-
end
|
133
|
-
|
134
|
-
it 'removes ./ prefix from backtrace paths when enabled' do
|
135
|
-
assert_equal ['myapp.rb:42'], clean_backtrace(['./myapp.rb:42'])
|
136
|
-
end
|
137
|
-
|
138
|
-
if defined?(Gem)
|
139
|
-
it 'removes gem lib paths from backtrace when enabled' do
|
140
|
-
assert clean_backtrace(["#{Gem.dir}/some/lib"]).empty?
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
describe_option 'run' do
|
146
|
-
it 'is disabled on Base' do
|
147
|
-
assert ! @base.run?
|
148
|
-
end
|
149
|
-
|
150
|
-
it 'is enabled on Default when not in test environment' do
|
151
|
-
assert @default.development?
|
152
|
-
assert @default.run?
|
153
|
-
|
154
|
-
@default.set :environment, :development
|
155
|
-
assert @default.run?
|
156
|
-
end
|
157
|
-
|
158
|
-
# TODO: it 'is enabled when $0 == app_file'
|
159
|
-
end
|
160
|
-
|
161
|
-
describe_option 'raise_errors' do
|
162
|
-
it 'is enabled on Base' do
|
163
|
-
assert @base.raise_errors?
|
164
|
-
end
|
165
|
-
|
166
|
-
it 'is enabled on Default only in test' do
|
167
|
-
@default.set(:environment, :development)
|
168
|
-
assert @default.development?
|
169
|
-
assert ! @default.raise_errors?, "disabled development"
|
170
|
-
|
171
|
-
@default.set(:environment, :production)
|
172
|
-
assert ! @default.raise_errors?
|
173
|
-
|
174
|
-
@default.set(:environment, :test)
|
175
|
-
assert @default.raise_errors?
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
describe_option 'dump_errors' do
|
180
|
-
it 'is disabled on Base' do
|
181
|
-
assert ! @base.dump_errors?
|
182
|
-
end
|
183
|
-
|
184
|
-
it 'is enabled on Default' do
|
185
|
-
assert @default.dump_errors?
|
186
|
-
end
|
187
|
-
|
188
|
-
it 'dumps exception with backtrace to rack.errors' do
|
189
|
-
Sinatra::Default.disable(:raise_errors)
|
190
|
-
|
191
|
-
mock_app(Sinatra::Default) {
|
192
|
-
error do
|
193
|
-
error = @env['rack.errors'].instance_variable_get(:@error)
|
194
|
-
error.rewind
|
195
|
-
|
196
|
-
error.read
|
197
|
-
end
|
198
|
-
|
199
|
-
get '/' do
|
200
|
-
raise
|
201
|
-
end
|
202
|
-
}
|
203
|
-
|
204
|
-
get '/'
|
205
|
-
assert body.include?("RuntimeError") && body.include?("options_test.rb")
|
206
|
-
end
|
207
|
-
end
|
208
|
-
|
209
|
-
describe_option 'sessions' do
|
210
|
-
it 'is disabled on Base' do
|
211
|
-
assert ! @base.sessions?
|
212
|
-
end
|
213
|
-
|
214
|
-
it 'is disabled on Default' do
|
215
|
-
assert ! @default.sessions?
|
216
|
-
end
|
217
|
-
|
218
|
-
# TODO: it 'uses Rack::Session::Cookie when enabled' do
|
219
|
-
end
|
220
|
-
|
221
|
-
describe_option 'logging' do
|
222
|
-
it 'is disabled on Base' do
|
223
|
-
assert ! @base.logging?
|
224
|
-
end
|
225
|
-
|
226
|
-
it 'is enabled on Default when not in test environment' do
|
227
|
-
assert @default.logging?
|
228
|
-
|
229
|
-
@default.set :environment, :test
|
230
|
-
assert ! @default.logging
|
231
|
-
end
|
232
|
-
|
233
|
-
# TODO: it 'uses Rack::CommonLogger when enabled' do
|
234
|
-
end
|
235
|
-
|
236
|
-
describe_option 'static' do
|
237
|
-
it 'is disabled on Base' do
|
238
|
-
assert ! @base.static?
|
239
|
-
end
|
240
|
-
|
241
|
-
it 'is enabled on Default' do
|
242
|
-
assert @default.static?
|
243
|
-
end
|
244
|
-
|
245
|
-
# TODO: it setup static routes if public is enabled
|
246
|
-
# TODO: however, that's already tested in static_test so...
|
247
|
-
end
|
248
|
-
|
249
|
-
describe_option 'host' do
|
250
|
-
it 'defaults to 0.0.0.0' do
|
251
|
-
assert_equal '0.0.0.0', @base.host
|
252
|
-
assert_equal '0.0.0.0', @default.host
|
253
|
-
end
|
254
|
-
end
|
255
|
-
|
256
|
-
describe_option 'port' do
|
257
|
-
it 'defaults to 4567' do
|
258
|
-
assert_equal 4567, @base.port
|
259
|
-
assert_equal 4567, @default.port
|
260
|
-
end
|
261
|
-
end
|
262
|
-
|
263
|
-
describe_option 'server' do
|
264
|
-
it 'is one of thin, mongrel, webrick' do
|
265
|
-
assert_equal %w[thin mongrel webrick], @base.server
|
266
|
-
assert_equal %w[thin mongrel webrick], @default.server
|
267
|
-
end
|
268
|
-
end
|
269
|
-
|
270
|
-
describe_option 'app_file' do
|
271
|
-
it 'is nil' do
|
272
|
-
assert @base.app_file.nil?
|
273
|
-
assert @default.app_file.nil?
|
274
|
-
end
|
275
|
-
end
|
276
|
-
|
277
|
-
describe_option 'root' do
|
278
|
-
it 'is nil if app_file is not set' do
|
279
|
-
assert @base.root.nil?
|
280
|
-
assert @default.root.nil?
|
281
|
-
end
|
282
|
-
|
283
|
-
it 'is equal to the expanded basename of app_file' do
|
284
|
-
@base.app_file = __FILE__
|
285
|
-
assert_equal File.expand_path(File.dirname(__FILE__)), @base.root
|
286
|
-
|
287
|
-
@default.app_file = __FILE__
|
288
|
-
assert_equal File.expand_path(File.dirname(__FILE__)), @default.root
|
289
|
-
end
|
290
|
-
end
|
291
|
-
|
292
|
-
describe_option 'views' do
|
293
|
-
it 'is nil if root is not set' do
|
294
|
-
assert @base.views.nil?
|
295
|
-
assert @default.views.nil?
|
296
|
-
end
|
297
|
-
|
298
|
-
it 'is set to root joined with views/' do
|
299
|
-
@base.root = File.dirname(__FILE__)
|
300
|
-
assert_equal File.dirname(__FILE__) + "/views", @base.views
|
301
|
-
|
302
|
-
@default.root = File.dirname(__FILE__)
|
303
|
-
assert_equal File.dirname(__FILE__) + "/views", @default.views
|
304
|
-
end
|
305
|
-
end
|
306
|
-
|
307
|
-
describe_option 'public' do
|
308
|
-
it 'is nil if root is not set' do
|
309
|
-
assert @base.public.nil?
|
310
|
-
assert @default.public.nil?
|
311
|
-
end
|
312
|
-
|
313
|
-
it 'is set to root joined with public/' do
|
314
|
-
@base.root = File.dirname(__FILE__)
|
315
|
-
assert_equal File.dirname(__FILE__) + "/public", @base.public
|
316
|
-
|
317
|
-
@default.root = File.dirname(__FILE__)
|
318
|
-
assert_equal File.dirname(__FILE__) + "/public", @default.public
|
319
|
-
end
|
320
|
-
end
|
321
|
-
|
322
|
-
describe_option 'reload' do
|
323
|
-
it 'is enabled when
|
324
|
-
app_file is set,
|
325
|
-
is not a rackup file,
|
326
|
-
and we are in development' do
|
327
|
-
@base.app_file = __FILE__
|
328
|
-
@base.set(:environment, :development)
|
329
|
-
assert @base.reload?
|
330
|
-
|
331
|
-
@default.app_file = __FILE__
|
332
|
-
@default.set(:environment, :development)
|
333
|
-
assert @default.reload?
|
334
|
-
end
|
335
|
-
|
336
|
-
it 'is disabled if app_file is not set' do
|
337
|
-
assert ! @base.reload?
|
338
|
-
assert ! @default.reload?
|
339
|
-
end
|
340
|
-
|
341
|
-
it 'is disabled if app_file is a rackup file' do
|
342
|
-
@base.app_file = 'config.ru'
|
343
|
-
assert ! @base.reload?
|
344
|
-
|
345
|
-
@default.app_file = 'config.ru'
|
346
|
-
assert ! @base.reload?
|
347
|
-
end
|
348
|
-
|
349
|
-
it 'is disabled if we are not in development' do
|
350
|
-
@base.set(:environment, :foo)
|
351
|
-
assert ! @base.reload
|
352
|
-
|
353
|
-
@default.set(:environment, :bar)
|
354
|
-
assert ! @default.reload
|
355
|
-
end
|
356
|
-
end
|
357
|
-
|
358
|
-
describe_option 'lock' do
|
359
|
-
it 'is enabled when reload is enabled' do
|
360
|
-
@base.enable(:reload)
|
361
|
-
assert @base.lock?
|
362
|
-
|
363
|
-
@default.enable(:reload)
|
364
|
-
assert @default.lock?
|
365
|
-
end
|
366
|
-
|
367
|
-
it 'is disabled when reload is disabled' do
|
368
|
-
@base.disable(:reload)
|
369
|
-
assert ! @base.lock?
|
370
|
-
|
371
|
-
@default.disable(:reload)
|
372
|
-
assert ! @default.lock?
|
373
|
-
end
|
374
|
-
end
|
data/test/reload_test.rb
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/helper'
|
2
|
-
|
3
|
-
$reload_count = 0
|
4
|
-
$reload_app = nil
|
5
|
-
|
6
|
-
describe "Reloading" do
|
7
|
-
before {
|
8
|
-
@app = mock_app(Sinatra::Default)
|
9
|
-
$reload_app = @app
|
10
|
-
}
|
11
|
-
|
12
|
-
after {
|
13
|
-
$reload_app = nil
|
14
|
-
}
|
15
|
-
|
16
|
-
it 'is enabled by default when in development and the app_file is set' do
|
17
|
-
@app.set :app_file, __FILE__
|
18
|
-
@app.set :environment, :development
|
19
|
-
assert_same true, @app.reload
|
20
|
-
assert_same true, @app.reload?
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'is disabled by default when running in non-development environment' do
|
24
|
-
@app.set :app_file, __FILE__
|
25
|
-
@app.set :environment, :test
|
26
|
-
assert !@app.reload
|
27
|
-
assert_same false, @app.reload?
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'is disabled by default when no app_file is available' do
|
31
|
-
@app.set :app_file, nil
|
32
|
-
@app.set :environment, :development
|
33
|
-
assert !@app.reload
|
34
|
-
assert_same false, @app.reload?
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'is disabled when app_file is a rackup (.ru) file' do
|
38
|
-
@app.set :app_file, __FILE__.sub(/\.rb$/, '.ru')
|
39
|
-
@app.set :environment, :development
|
40
|
-
assert !@app.reload
|
41
|
-
assert_same false, @app.reload?
|
42
|
-
end
|
43
|
-
|
44
|
-
it 'can be turned off explicitly' do
|
45
|
-
@app.set :app_file, __FILE__
|
46
|
-
@app.set :environment, :development
|
47
|
-
assert_same true, @app.reload
|
48
|
-
@app.set :reload, false
|
49
|
-
assert_same false, @app.reload
|
50
|
-
assert_same false, @app.reload?
|
51
|
-
end
|
52
|
-
|
53
|
-
it 'reloads the app_file each time a request is made' do
|
54
|
-
@app.set :app_file, File.dirname(__FILE__) + '/data/reload_app_file.rb'
|
55
|
-
@app.set :reload, true
|
56
|
-
@app.get('/') { 'Hello World' }
|
57
|
-
|
58
|
-
get '/'
|
59
|
-
assert_equal 200, status
|
60
|
-
assert_equal 'Hello from reload file', body
|
61
|
-
assert_equal 1, $reload_count
|
62
|
-
|
63
|
-
get '/'
|
64
|
-
assert_equal 200, status
|
65
|
-
assert_equal 'Hello from reload file', body
|
66
|
-
assert_equal 2, $reload_count
|
67
|
-
end
|
68
|
-
end
|