darkhelmet-sinatra 0.9.1.1 → 0.10.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. data/AUTHORS +2 -0
  2. data/CHANGES +180 -0
  3. data/LICENSE +1 -1
  4. data/README.jp.rdoc +552 -0
  5. data/README.rdoc +177 -38
  6. data/Rakefile +18 -25
  7. data/lib/sinatra.rb +1 -2
  8. data/lib/sinatra/base.rb +405 -305
  9. data/lib/sinatra/main.rb +5 -24
  10. data/lib/sinatra/showexceptions.rb +303 -0
  11. data/lib/sinatra/tilt.rb +509 -0
  12. data/sinatra.gemspec +21 -51
  13. data/test/base_test.rb +123 -93
  14. data/test/builder_test.rb +2 -1
  15. data/test/contest.rb +64 -0
  16. data/test/erb_test.rb +1 -1
  17. data/test/erubis_test.rb +82 -0
  18. data/test/extensions_test.rb +24 -8
  19. data/test/filter_test.rb +99 -3
  20. data/test/haml_test.rb +25 -3
  21. data/test/helper.rb +43 -48
  22. data/test/helpers_test.rb +500 -424
  23. data/test/mapped_error_test.rb +163 -137
  24. data/test/middleware_test.rb +3 -3
  25. data/test/request_test.rb +16 -1
  26. data/test/response_test.rb +2 -2
  27. data/test/result_test.rb +1 -1
  28. data/test/route_added_hook_test.rb +59 -0
  29. data/test/routing_test.rb +170 -22
  30. data/test/sass_test.rb +44 -1
  31. data/test/server_test.rb +19 -13
  32. data/test/sinatra_test.rb +1 -1
  33. data/test/static_test.rb +9 -2
  34. data/test/templates_test.rb +78 -11
  35. data/test/views/error.builder +3 -0
  36. data/test/views/error.erb +3 -0
  37. data/test/views/error.erubis +3 -0
  38. data/test/views/error.haml +3 -0
  39. data/test/views/error.sass +2 -0
  40. data/test/views/foo/hello.test +1 -0
  41. data/test/views/hello.erubis +1 -0
  42. data/test/views/layout2.erubis +2 -0
  43. metadata +37 -55
  44. data/compat/app_test.rb +0 -282
  45. data/compat/application_test.rb +0 -262
  46. data/compat/builder_test.rb +0 -101
  47. data/compat/compat_test.rb +0 -12
  48. data/compat/custom_error_test.rb +0 -62
  49. data/compat/erb_test.rb +0 -136
  50. data/compat/events_test.rb +0 -78
  51. data/compat/filter_test.rb +0 -30
  52. data/compat/haml_test.rb +0 -233
  53. data/compat/helper.rb +0 -30
  54. data/compat/mapped_error_test.rb +0 -72
  55. data/compat/pipeline_test.rb +0 -45
  56. data/compat/public/foo.xml +0 -1
  57. data/compat/sass_test.rb +0 -57
  58. data/compat/sessions_test.rb +0 -42
  59. data/compat/streaming_test.rb +0 -133
  60. data/compat/sym_params_test.rb +0 -19
  61. data/compat/template_test.rb +0 -30
  62. data/compat/use_in_file_templates_test.rb +0 -47
  63. data/compat/views/foo.builder +0 -1
  64. data/compat/views/foo.erb +0 -1
  65. data/compat/views/foo.haml +0 -1
  66. data/compat/views/foo.sass +0 -2
  67. data/compat/views/foo_layout.erb +0 -2
  68. data/compat/views/foo_layout.haml +0 -2
  69. data/compat/views/layout_test/foo.builder +0 -1
  70. data/compat/views/layout_test/foo.erb +0 -1
  71. data/compat/views/layout_test/foo.haml +0 -1
  72. data/compat/views/layout_test/foo.sass +0 -2
  73. data/compat/views/layout_test/layout.builder +0 -3
  74. data/compat/views/layout_test/layout.erb +0 -1
  75. data/compat/views/layout_test/layout.haml +0 -1
  76. data/compat/views/layout_test/layout.sass +0 -2
  77. data/compat/views/no_layout/no_layout.builder +0 -1
  78. data/compat/views/no_layout/no_layout.haml +0 -1
  79. data/lib/sinatra/compat.rb +0 -250
  80. data/lib/sinatra/test.rb +0 -126
  81. data/lib/sinatra/test/bacon.rb +0 -19
  82. data/lib/sinatra/test/rspec.rb +0 -13
  83. data/lib/sinatra/test/spec.rb +0 -11
  84. data/lib/sinatra/test/unit.rb +0 -13
  85. data/test/data/reload_app_file.rb +0 -3
  86. data/test/options_test.rb +0 -374
  87. data/test/reload_test.rb +0 -68
  88. data/test/test_test.rb +0 -144
@@ -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
- )
@@ -1,11 +0,0 @@
1
- require 'test/spec'
2
- require 'sinatra/test'
3
- require 'sinatra/test/unit'
4
-
5
- Sinatra::Test.deprecate('test/spec')
6
-
7
- module Sinatra::Test
8
- def should
9
- @response.should
10
- end
11
- end
@@ -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
- )
@@ -1,3 +0,0 @@
1
- $reload_count += 1
2
-
3
- $reload_app.get('/') { 'Hello from reload file' }
@@ -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
@@ -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