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.
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