adamwiggins-sinatra 0.8.9 → 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 (79) hide show
  1. data/AUTHORS +8 -7
  2. data/CHANGES +211 -1
  3. data/LICENSE +1 -1
  4. data/README.rdoc +183 -139
  5. data/Rakefile +20 -81
  6. data/lib/sinatra.rb +5 -1
  7. data/lib/sinatra/base.rb +569 -278
  8. data/lib/sinatra/main.rb +12 -25
  9. data/lib/sinatra/showexceptions.rb +303 -0
  10. data/sinatra.gemspec +20 -44
  11. data/test/base_test.rb +140 -52
  12. data/test/builder_test.rb +14 -17
  13. data/test/contest.rb +64 -0
  14. data/test/erb_test.rb +42 -16
  15. data/test/extensions_test.rb +100 -0
  16. data/test/filter_test.rb +85 -13
  17. data/test/haml_test.rb +39 -21
  18. data/test/helper.rb +76 -0
  19. data/test/helpers_test.rb +219 -84
  20. data/test/mapped_error_test.rb +168 -146
  21. data/test/middleware_test.rb +22 -17
  22. data/test/options_test.rb +323 -54
  23. data/test/render_backtrace_test.rb +145 -0
  24. data/test/request_test.rb +28 -6
  25. data/test/response_test.rb +42 -0
  26. data/test/result_test.rb +27 -21
  27. data/test/route_added_hook_test.rb +59 -0
  28. data/test/routing_test.rb +558 -77
  29. data/test/sass_test.rb +52 -13
  30. data/test/server_test.rb +47 -0
  31. data/test/sinatra_test.rb +3 -5
  32. data/test/static_test.rb +57 -30
  33. data/test/templates_test.rb +74 -25
  34. data/test/views/error.builder +3 -0
  35. data/test/views/error.erb +3 -0
  36. data/test/views/error.haml +3 -0
  37. data/test/views/error.sass +2 -0
  38. data/test/views/foo/hello.test +1 -0
  39. metadata +50 -46
  40. data/compat/app_test.rb +0 -300
  41. data/compat/application_test.rb +0 -334
  42. data/compat/builder_test.rb +0 -101
  43. data/compat/custom_error_test.rb +0 -62
  44. data/compat/erb_test.rb +0 -136
  45. data/compat/events_test.rb +0 -75
  46. data/compat/filter_test.rb +0 -30
  47. data/compat/haml_test.rb +0 -233
  48. data/compat/helper.rb +0 -21
  49. data/compat/mapped_error_test.rb +0 -72
  50. data/compat/pipeline_test.rb +0 -71
  51. data/compat/public/foo.xml +0 -1
  52. data/compat/sass_test.rb +0 -57
  53. data/compat/sessions_test.rb +0 -39
  54. data/compat/streaming_test.rb +0 -121
  55. data/compat/sym_params_test.rb +0 -19
  56. data/compat/template_test.rb +0 -30
  57. data/compat/use_in_file_templates_test.rb +0 -47
  58. data/compat/views/foo.builder +0 -1
  59. data/compat/views/foo.erb +0 -1
  60. data/compat/views/foo.haml +0 -1
  61. data/compat/views/foo.sass +0 -2
  62. data/compat/views/foo_layout.erb +0 -2
  63. data/compat/views/foo_layout.haml +0 -2
  64. data/compat/views/layout_test/foo.builder +0 -1
  65. data/compat/views/layout_test/foo.erb +0 -1
  66. data/compat/views/layout_test/foo.haml +0 -1
  67. data/compat/views/layout_test/foo.sass +0 -2
  68. data/compat/views/layout_test/layout.builder +0 -3
  69. data/compat/views/layout_test/layout.erb +0 -1
  70. data/compat/views/layout_test/layout.haml +0 -1
  71. data/compat/views/layout_test/layout.sass +0 -2
  72. data/compat/views/no_layout/no_layout.builder +0 -1
  73. data/compat/views/no_layout/no_layout.haml +0 -1
  74. data/lib/sinatra/compat.rb +0 -239
  75. data/lib/sinatra/test.rb +0 -112
  76. data/lib/sinatra/test/rspec.rb +0 -2
  77. data/lib/sinatra/test/spec.rb +0 -2
  78. data/lib/sinatra/test/unit.rb +0 -11
  79. data/test/reload_test.rb +0 -65
@@ -1,10 +1,7 @@
1
- require 'test/spec'
2
- require 'sinatra/base'
3
- require 'sinatra/test'
4
-
5
- describe "Sass Templates" do
6
- include Sinatra::Test
1
+ require File.dirname(__FILE__) + '/helper'
2
+ require 'sass'
7
3
 
4
+ class SassTest < Test::Unit::TestCase
8
5
  def sass_app(&block)
9
6
  mock_app {
10
7
  set :views, File.dirname(__FILE__) + '/views'
@@ -15,26 +12,68 @@ describe "Sass Templates" do
15
12
 
16
13
  it 'renders inline Sass strings' do
17
14
  sass_app { sass "#sass\n :background-color #FFF\n" }
18
- should.be.ok
19
- body.should.equal "#sass {\n background-color: #FFF; }\n"
15
+ assert ok?
16
+ assert_equal "#sass {\n background-color: #FFF; }\n", body
20
17
  end
21
18
 
22
19
  it 'renders .sass files in views path' do
23
20
  sass_app { sass :hello }
24
- should.be.ok
25
- body.should.equal "#sass {\n background-color: #FFF; }\n"
21
+ assert ok?
22
+ assert_equal "#sass {\n background-color: #FFF; }\n", body
26
23
  end
27
24
 
28
25
  it 'ignores the layout option' do
29
26
  sass_app { sass :hello, :layout => :layout2 }
30
- should.be.ok
31
- body.should.equal "#sass {\n background-color: #FFF; }\n"
27
+ assert ok?
28
+ assert_equal "#sass {\n background-color: #FFF; }\n", body
32
29
  end
33
30
 
34
31
  it "raises error if template not found" do
35
32
  mock_app {
36
33
  get('/') { sass :no_such_template }
37
34
  }
38
- lambda { get('/') }.should.raise(Errno::ENOENT)
35
+ assert_raise(Errno::ENOENT) { get('/') }
36
+ end
37
+
38
+ it "passes SASS options to the Sass engine" do
39
+ sass_app {
40
+ sass "#sass\n :background-color #FFF\n :color #000\n", :style => :compact
41
+ }
42
+ assert ok?
43
+ assert_equal "#sass { background-color: #FFF; color: #000; }\n", body
44
+ end
45
+
46
+ it "passes default SASS options to the Sass engine" do
47
+ mock_app {
48
+ set :sass, {:style => :compact} # default Sass style is :nested
49
+ get '/' do
50
+ sass "#sass\n :background-color #FFF\n :color #000\n"
51
+ end
52
+ }
53
+ get '/'
54
+ assert ok?
55
+ assert_equal "#sass { background-color: #FFF; color: #000; }\n", body
56
+ end
57
+
58
+ it "merges the default SASS options with the overrides and passes them to the Sass engine" do
59
+ mock_app {
60
+ set :sass, {:style => :compact, :attribute_syntax => :alternate } # default Sass attribute_syntax is :normal (with : in front)
61
+ get '/' do
62
+ sass "#sass\n background-color: #FFF\n color: #000\n"
63
+ end
64
+ get '/raised' do
65
+ sass "#sass\n :background-color #FFF\n :color #000\n", :style => :expanded # retains global attribute_syntax settings
66
+ end
67
+ get '/expanded_normal' do
68
+ sass "#sass\n :background-color #FFF\n :color #000\n", :style => :expanded, :attribute_syntax => :normal
69
+ end
70
+ }
71
+ get '/'
72
+ assert ok?
73
+ assert_equal "#sass { background-color: #FFF; color: #000; }\n", body
74
+ assert_raise(Sass::SyntaxError) { get('/raised') }
75
+ get '/expanded_normal'
76
+ assert ok?
77
+ assert_equal "#sass {\n background-color: #FFF;\n color: #000;\n}\n", body
39
78
  end
40
79
  end
@@ -0,0 +1,47 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ module Rack::Handler
4
+ class Mock
5
+ extend Test::Unit::Assertions
6
+
7
+ def self.run(app, options={})
8
+ assert(app < Sinatra::Base)
9
+ assert_equal 9001, options[:Port]
10
+ assert_equal 'foo.local', options[:Host]
11
+ yield new
12
+ end
13
+
14
+ def stop
15
+ end
16
+ end
17
+
18
+ register 'mock', 'Rack::Handler::Mock'
19
+ end
20
+
21
+ class ServerTest < Test::Unit::TestCase
22
+ setup do
23
+ mock_app {
24
+ set :server, 'mock'
25
+ set :host, 'foo.local'
26
+ set :port, 9001
27
+ }
28
+ $stdout = File.open('/dev/null', 'wb')
29
+ end
30
+
31
+ def teardown
32
+ $stdout = STDOUT
33
+ end
34
+
35
+ it "locates the appropriate Rack handler and calls ::run" do
36
+ @app.run!
37
+ end
38
+
39
+ it "sets options on the app before running" do
40
+ @app.run! :sessions => true
41
+ assert @app.sessions?
42
+ end
43
+
44
+ it "falls back on the next server handler when not found" do
45
+ @app.run! :server => %w[foo bar mock]
46
+ end
47
+ end
@@ -1,8 +1,6 @@
1
- require 'test/spec'
2
- require 'sinatra/base'
3
- require 'sinatra/test'
1
+ require File.dirname(__FILE__) + '/helper'
4
2
 
5
- describe 'Sinatra' do
3
+ class SinatraTest < Test::Unit::TestCase
6
4
  it 'creates a new Sinatra::Base subclass on new' do
7
5
  app =
8
6
  Sinatra.new do
@@ -10,6 +8,6 @@ describe 'Sinatra' do
10
8
  'Hello World'
11
9
  end
12
10
  end
13
- app.superclass.should.be Sinatra::Base
11
+ assert_same Sinatra::Base, app.superclass
14
12
  end
15
13
  end
@@ -1,60 +1,87 @@
1
- require 'test/spec'
2
- require 'sinatra/base'
3
- require 'sinatra/test'
1
+ require File.dirname(__FILE__) + '/helper'
4
2
 
5
- describe 'Static' do
6
- include Sinatra::Test
7
- F = ::File
8
-
9
- before do
10
- @app = mock_app {
3
+ class StaticTest < Test::Unit::TestCase
4
+ setup do
5
+ mock_app {
11
6
  set :static, true
12
- set :public, F.dirname(__FILE__)
7
+ set :public, File.dirname(__FILE__)
13
8
  }
14
9
  end
15
10
 
16
11
  it 'serves GET requests for files in the public directory' do
17
- get "/#{F.basename(__FILE__)}"
18
- should.be.ok
19
- body.should.equal File.read(__FILE__)
20
- response['Content-Length'].should.equal File.size(__FILE__).to_s
21
- response.headers.should.include 'Last-Modified'
12
+ get "/#{File.basename(__FILE__)}"
13
+ assert ok?
14
+ assert_equal File.read(__FILE__), body
15
+ assert_equal File.size(__FILE__).to_s, response['Content-Length']
16
+ assert response.headers.include?('Last-Modified')
17
+ end
18
+
19
+ it 'produces a body that can be iterated over multiple times' do
20
+ env = Rack::MockRequest.env_for("/#{File.basename(__FILE__)}")
21
+ status, headers, body = @app.call(env)
22
+ buf1, buf2 = [], []
23
+ body.each { |part| buf1 << part }
24
+ body.each { |part| buf2 << part }
25
+ assert_equal buf1.join, buf2.join
26
+ assert_equal File.read(__FILE__), buf1.join
22
27
  end
23
28
 
24
29
  it 'serves HEAD requests for files in the public directory' do
25
- head "/#{F.basename(__FILE__)}"
26
- should.be.ok
27
- body.should.be.empty
28
- response['Content-Length'].should.equal File.size(__FILE__).to_s
29
- response.headers.should.include 'Last-Modified'
30
+ head "/#{File.basename(__FILE__)}"
31
+ assert ok?
32
+ assert_equal '', body
33
+ assert_equal File.size(__FILE__).to_s, response['Content-Length']
34
+ assert response.headers.include?('Last-Modified')
35
+ end
36
+
37
+ %w[POST PUT DELETE].each do |verb|
38
+ it "does not serve #{verb} requests" do
39
+ send verb.downcase, "/#{File.basename(__FILE__)}"
40
+ assert_equal 404, status
41
+ end
30
42
  end
31
43
 
32
44
  it 'serves files in preference to custom routes' do
33
- @app.get("/#{F.basename(__FILE__)}") { 'Hello World' }
34
- get "/#{F.basename(__FILE__)}"
35
- should.be.ok
36
- body.should.not.equal 'Hello World'
45
+ @app.get("/#{File.basename(__FILE__)}") { 'Hello World' }
46
+ get "/#{File.basename(__FILE__)}"
47
+ assert ok?
48
+ assert body != 'Hello World'
37
49
  end
38
50
 
39
51
  it 'does not serve directories' do
40
52
  get "/"
41
- should.be.not_found
53
+ assert not_found?
42
54
  end
43
55
 
44
56
  it 'passes to the next handler when the static option is disabled' do
45
57
  @app.set :static, false
46
- get "/#{F.basename(__FILE__)}"
47
- should.be.not_found
58
+ get "/#{File.basename(__FILE__)}"
59
+ assert not_found?
48
60
  end
49
61
 
50
62
  it 'passes to the next handler when the public option is nil' do
51
63
  @app.set :public, nil
52
- get "/#{F.basename(__FILE__)}"
53
- should.be.not_found
64
+ get "/#{File.basename(__FILE__)}"
65
+ assert not_found?
54
66
  end
55
67
 
56
68
  it '404s when a file is not found' do
57
69
  get "/foobarbaz.txt"
58
- should.be.not_found
70
+ assert not_found?
71
+ end
72
+
73
+ it 'serves files when .. path traverses within public directory' do
74
+ get "/data/../#{File.basename(__FILE__)}"
75
+ assert ok?
76
+ assert_equal File.read(__FILE__), body
77
+ end
78
+
79
+ it '404s when .. path traverses outside of public directory' do
80
+ mock_app {
81
+ set :static, true
82
+ set :public, File.dirname(__FILE__) + '/data'
83
+ }
84
+ get "/../#{File.basename(__FILE__)}"
85
+ assert not_found?
59
86
  end
60
87
  end
@@ -1,13 +1,9 @@
1
- require 'test/spec'
2
- require 'sinatra/base'
3
- require 'sinatra/test'
1
+ require File.dirname(__FILE__) + '/helper'
4
2
 
5
- describe 'Templating' do
6
- include Sinatra::Test
7
-
8
- def render_app(&block)
9
- mock_app {
10
- def render_test(template, data, options, &block)
3
+ class TemplatesTest < Test::Unit::TestCase
4
+ def render_app(base=Sinatra::Base, &block)
5
+ mock_app(base) {
6
+ def render_test(data, options, locals, &block)
11
7
  inner = block ? block.call : ''
12
8
  data + inner
13
9
  end
@@ -28,59 +24,112 @@ describe 'Templating' do
28
24
 
29
25
  it 'renders String templates directly' do
30
26
  render_app { render :test, 'Hello World' }
31
- should.be.ok
32
- body.should.equal 'Hello World'
27
+ assert ok?
28
+ assert_equal 'Hello World', body
33
29
  end
34
30
 
35
31
  it 'renders Proc templates using the call result' do
36
32
  render_app { render :test, Proc.new {'Hello World'} }
37
- should.be.ok
38
- body.should.equal 'Hello World'
33
+ assert ok?
34
+ assert_equal 'Hello World', body
39
35
  end
40
36
 
41
37
  it 'looks up Symbol templates in views directory' do
42
38
  render_app { render :test, :hello }
43
- should.be.ok
44
- body.should.equal "Hello World!\n"
39
+ assert ok?
40
+ assert_equal "Hello World!\n", body
45
41
  end
46
42
 
47
43
  it 'uses the default layout template if not explicitly overridden' do
48
44
  with_default_layout do
49
45
  render_app { render :test, :hello }
50
- should.be.ok
51
- body.should.equal "Layout!\nHello World!\n"
46
+ assert ok?
47
+ assert_equal "Layout!\nHello World!\n", body
52
48
  end
53
49
  end
54
50
 
55
51
  it 'uses the default layout template if not really overriden' do
56
52
  with_default_layout do
57
53
  render_app { render :test, :hello, :layout => true }
58
- should.be.ok
59
- body.should.equal "Layout!\nHello World!\n"
54
+ assert ok?
55
+ assert_equal "Layout!\nHello World!\n", body
60
56
  end
61
57
  end
62
58
 
63
59
  it 'uses the layout template specified' do
64
60
  render_app { render :test, :hello, :layout => :layout2 }
65
- should.be.ok
66
- body.should.equal "Layout 2!\nHello World!\n"
61
+ assert ok?
62
+ assert_equal "Layout 2!\nHello World!\n", body
67
63
  end
68
64
 
69
65
  it 'uses layout templates defined with the #template method' do
70
66
  render_app { render :test, :hello, :layout => :layout3 }
71
- should.be.ok
72
- body.should.equal "Layout 3!\nHello World!\n"
67
+ assert ok?
68
+ assert_equal "Layout 3!\nHello World!\n", body
73
69
  end
74
70
 
75
71
  it 'loads templates from source file with use_in_file_templates!' do
76
72
  mock_app {
77
73
  use_in_file_templates!
78
74
  }
79
- @app.templates[:foo].should.equal "this is foo\n\n"
80
- @app.templates[:layout].should.equal "X\n= yield\nX\n"
75
+ assert_equal "this is foo\n\n", @app.templates[:foo][:template]
76
+ assert_equal "X\n= yield\nX\n", @app.templates[:layout][:template]
77
+ end
78
+
79
+ it 'loads templates from specified views directory' do
80
+ render_app { render :test, :hello, :views => options.views + '/foo' }
81
+
82
+ assert_equal "from another views directory\n", body
83
+ end
84
+
85
+ test 'use_in_file_templates simply ignores IO errors' do
86
+ assert_nothing_raised {
87
+ mock_app {
88
+ use_in_file_templates!('/foo/bar')
89
+ }
90
+ }
91
+
92
+ assert @app.templates.empty?
93
+ end
94
+
95
+ it 'passes locals to the layout' do
96
+ mock_app {
97
+ template :my_layout do
98
+ 'Hello <%= name %>!<%= yield %>'
99
+ end
100
+
101
+ get '/' do
102
+ erb '<p>content</p>', { :layout => :my_layout }, { :name => 'Mike'}
103
+ end
104
+ }
105
+
106
+ get '/'
107
+ assert ok?
108
+ assert_equal 'Hello Mike!<p>content</p>', body
109
+ end
110
+
111
+ it 'loads templates defined in subclasses' do
112
+ base = Class.new(Sinatra::Base)
113
+ base.template(:foo) { 'bar' }
114
+ render_app(base) { render :test, :foo }
115
+ assert ok?
116
+ assert_equal 'bar', body
117
+ end
118
+
119
+ it 'uses templates in superclasses before subclasses' do
120
+ base = Class.new(Sinatra::Base)
121
+ base.template(:foo) { 'template in superclass' }
122
+ render_app(base) { render :test, :foo }
123
+ @app.template(:foo) { 'template in subclass' }
124
+
125
+ get '/'
126
+ assert ok?
127
+ assert_equal 'template in subclass', body
81
128
  end
82
129
  end
83
130
 
131
+ # __END__ : this is not the real end of the script.
132
+
84
133
  __END__
85
134
 
86
135
  @@ foo
@@ -0,0 +1,3 @@
1
+ xml.error do
2
+ raise "goodbye"
3
+ end
@@ -0,0 +1,3 @@
1
+ Hello <%= 'World' %>
2
+ <% raise 'Goodbye' unless defined?(french) && french %>
3
+ <% raise 'Au revoir' if defined?(french) && french %>
@@ -0,0 +1,3 @@
1
+ %h1 Hello From Haml
2
+ = raise 'goodbye' unless defined?(french) && french
3
+ = raise 'au revoir' if defined?(french) && french
@@ -0,0 +1,2 @@
1
+ #sass
2
+ +argle-bargle
@@ -0,0 +1 @@
1
+ from another views directory
metadata CHANGED
@@ -1,28 +1,54 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adamwiggins-sinatra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.9
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Mizerany
8
+ - Ryan Tomayko
9
+ - Simon Rozet
8
10
  autorequire:
9
11
  bindir: bin
10
12
  cert_chain: []
11
13
 
12
- date: 2009-01-13 00:00:00 -08:00
14
+ date: 2009-06-07 00:00:00 -07:00
13
15
  default_executable:
14
16
  dependencies:
15
17
  - !ruby/object:Gem::Dependency
16
18
  name: rack
19
+ type: :runtime
17
20
  version_requirement:
18
21
  version_requirements: !ruby/object:Gem::Requirement
19
22
  requirements:
20
23
  - - ">="
21
24
  - !ruby/object:Gem::Version
22
- version: 0.9.0
25
+ version: "1.0"
26
+ version:
27
+ - !ruby/object:Gem::Dependency
28
+ name: shotgun
29
+ type: :development
30
+ version_requirement:
31
+ version_requirements: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: "0.3"
36
+ - - <
37
+ - !ruby/object:Gem::Version
38
+ version: "1.0"
39
+ version:
40
+ - !ruby/object:Gem::Dependency
41
+ name: rack-test
42
+ type: :development
43
+ version_requirement:
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: 0.3.0
23
49
  version:
24
50
  description: Classy web-development dressed in a DSL
25
- email:
51
+ email: sinatrarb@googlegroups.com
26
52
  executables: []
27
53
 
28
54
  extensions: []
@@ -36,69 +62,42 @@ files:
36
62
  - LICENSE
37
63
  - README.rdoc
38
64
  - Rakefile
39
- - compat/app_test.rb
40
- - compat/application_test.rb
41
- - compat/builder_test.rb
42
- - compat/custom_error_test.rb
43
- - compat/erb_test.rb
44
- - compat/events_test.rb
45
- - compat/filter_test.rb
46
- - compat/haml_test.rb
47
- - compat/helper.rb
48
- - compat/mapped_error_test.rb
49
- - compat/pipeline_test.rb
50
- - compat/public/foo.xml
51
- - compat/sass_test.rb
52
- - compat/sessions_test.rb
53
- - compat/streaming_test.rb
54
- - compat/sym_params_test.rb
55
- - compat/template_test.rb
56
- - compat/use_in_file_templates_test.rb
57
- - compat/views/foo.builder
58
- - compat/views/foo.erb
59
- - compat/views/foo.haml
60
- - compat/views/foo.sass
61
- - compat/views/foo_layout.erb
62
- - compat/views/foo_layout.haml
63
- - compat/views/layout_test/foo.builder
64
- - compat/views/layout_test/foo.erb
65
- - compat/views/layout_test/foo.haml
66
- - compat/views/layout_test/foo.sass
67
- - compat/views/layout_test/layout.builder
68
- - compat/views/layout_test/layout.erb
69
- - compat/views/layout_test/layout.haml
70
- - compat/views/layout_test/layout.sass
71
- - compat/views/no_layout/no_layout.builder
72
- - compat/views/no_layout/no_layout.haml
73
65
  - lib/sinatra.rb
74
66
  - lib/sinatra/base.rb
75
- - lib/sinatra/compat.rb
76
67
  - lib/sinatra/images/404.png
77
68
  - lib/sinatra/images/500.png
78
69
  - lib/sinatra/main.rb
79
- - lib/sinatra/test.rb
80
- - lib/sinatra/test/rspec.rb
81
- - lib/sinatra/test/spec.rb
82
- - lib/sinatra/test/unit.rb
70
+ - lib/sinatra/showexceptions.rb
83
71
  - sinatra.gemspec
84
72
  - test/base_test.rb
85
73
  - test/builder_test.rb
74
+ - test/contest.rb
86
75
  - test/data/reload_app_file.rb
87
76
  - test/erb_test.rb
77
+ - test/extensions_test.rb
88
78
  - test/filter_test.rb
89
79
  - test/haml_test.rb
80
+ - test/helper.rb
90
81
  - test/helpers_test.rb
91
82
  - test/mapped_error_test.rb
92
83
  - test/middleware_test.rb
93
84
  - test/options_test.rb
94
- - test/reload_test.rb
85
+ - test/render_backtrace_test.rb
95
86
  - test/request_test.rb
87
+ - test/response_test.rb
96
88
  - test/result_test.rb
89
+ - test/route_added_hook_test.rb
97
90
  - test/routing_test.rb
98
91
  - test/sass_test.rb
92
+ - test/server_test.rb
99
93
  - test/sinatra_test.rb
100
94
  - test/static_test.rb
101
95
  - test/templates_test.rb
96
+ - test/views/error.builder
97
+ - test/views/error.erb
98
+ - test/views/error.haml
99
+ - test/views/error.sass
100
+ - test/views/foo/hello.test
102
101
  - test/views/hello.builder
103
102
  - test/views/hello.erb
104
103
  - test/views/hello.haml
@@ -110,6 +109,7 @@ files:
110
109
  - test/views/layout2.test
111
110
  has_rdoc: true
112
111
  homepage: http://sinatra.rubyforge.org
112
+ licenses:
113
113
  post_install_message:
114
114
  rdoc_options:
115
115
  - --line-numbers
@@ -135,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
135
  requirements: []
136
136
 
137
137
  rubyforge_project: sinatra
138
- rubygems_version: 1.2.0
138
+ rubygems_version: 1.3.5
139
139
  signing_key:
140
140
  specification_version: 2
141
141
  summary: Classy web-development dressed in a DSL
@@ -143,17 +143,21 @@ test_files:
143
143
  - test/base_test.rb
144
144
  - test/builder_test.rb
145
145
  - test/erb_test.rb
146
+ - test/extensions_test.rb
146
147
  - test/filter_test.rb
147
148
  - test/haml_test.rb
148
149
  - test/helpers_test.rb
149
150
  - test/mapped_error_test.rb
150
151
  - test/middleware_test.rb
151
152
  - test/options_test.rb
152
- - test/reload_test.rb
153
+ - test/render_backtrace_test.rb
153
154
  - test/request_test.rb
155
+ - test/response_test.rb
154
156
  - test/result_test.rb
157
+ - test/route_added_hook_test.rb
155
158
  - test/routing_test.rb
156
159
  - test/sass_test.rb
160
+ - test/server_test.rb
157
161
  - test/sinatra_test.rb
158
162
  - test/static_test.rb
159
163
  - test/templates_test.rb