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,6 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/helper'
2
+ require 'sass'
2
3
 
3
- describe "Sass Templates" do
4
+ class SassTest < Test::Unit::TestCase
4
5
  def sass_app(&block)
5
6
  mock_app {
6
7
  set :views, File.dirname(__FILE__) + '/views'
@@ -33,4 +34,46 @@ describe "Sass Templates" do
33
34
  }
34
35
  assert_raise(Errno::ENOENT) { get('/') }
35
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
78
+ end
36
79
  end
@@ -1,21 +1,25 @@
1
1
  require File.dirname(__FILE__) + '/helper'
2
2
 
3
- class Rack::Handler::Mock
4
- extend Test::Unit::Assertions
5
-
6
- def self.run(app, options={})
7
- assert(app < Sinatra::Base)
8
- assert_equal 9001, options[:Port]
9
- assert_equal 'foo.local', options[:Host]
10
- yield new
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
11
16
  end
12
17
 
13
- def stop
14
- end
18
+ register 'mock', 'Rack::Handler::Mock'
15
19
  end
16
20
 
17
- describe 'Sinatra::Base.run!' do
18
- before do
21
+ class ServerTest < Test::Unit::TestCase
22
+ setup do
19
23
  mock_app {
20
24
  set :server, 'mock'
21
25
  set :host, 'foo.local'
@@ -24,7 +28,9 @@ describe 'Sinatra::Base.run!' do
24
28
  $stdout = File.open('/dev/null', 'wb')
25
29
  end
26
30
 
27
- after { $stdout = STDOUT }
31
+ def teardown
32
+ $stdout = STDOUT
33
+ end
28
34
 
29
35
  it "locates the appropriate Rack handler and calls ::run" do
30
36
  @app.run!
@@ -1,6 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/helper'
2
2
 
3
- describe 'Sinatra' do
3
+ class SinatraTest < Test::Unit::TestCase
4
4
  it 'creates a new Sinatra::Base subclass on new' do
5
5
  app =
6
6
  Sinatra.new do
@@ -1,7 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/helper'
2
2
 
3
- describe 'Static' do
4
- before do
3
+ class StaticTest < Test::Unit::TestCase
4
+ setup do
5
5
  mock_app {
6
6
  set :static, true
7
7
  set :public, File.dirname(__FILE__)
@@ -34,6 +34,13 @@ describe 'Static' do
34
34
  assert response.headers.include?('Last-Modified')
35
35
  end
36
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
42
+ end
43
+
37
44
  it 'serves files in preference to custom routes' do
38
45
  @app.get("/#{File.basename(__FILE__)}") { 'Hello World' }
39
46
  get "/#{File.basename(__FILE__)}"
@@ -1,12 +1,20 @@
1
1
  require File.dirname(__FILE__) + '/helper'
2
2
 
3
- describe 'Templating' do
4
- def render_app(&block)
5
- mock_app {
6
- def render_test(template, data, options, &block)
7
- inner = block ? block.call : ''
8
- data + inner
9
- end
3
+ class TestTemplate < Tilt::Template
4
+ def compile!
5
+ end
6
+
7
+ def evaluate(scope, locals={}, &block)
8
+ inner = block ? block.call : ''
9
+ data + inner
10
+ end
11
+
12
+ Tilt.register 'test', self
13
+ end
14
+
15
+ class TemplatesTest < Test::Unit::TestCase
16
+ def render_app(base=Sinatra::Base, &block)
17
+ mock_app(base) {
10
18
  set :views, File.dirname(__FILE__) + '/views'
11
19
  get '/', &block
12
20
  template(:layout3) { "Layout 3!\n" }
@@ -68,15 +76,74 @@ describe 'Templating' do
68
76
  assert_equal "Layout 3!\nHello World!\n", body
69
77
  end
70
78
 
71
- it 'loads templates from source file with use_in_file_templates!' do
79
+ it 'loads templates from source file with inline_templates enabled' do
72
80
  mock_app {
73
- use_in_file_templates!
81
+ enable :inline_templates
74
82
  }
75
- assert_equal "this is foo\n\n", @app.templates[:foo]
76
- assert_equal "X\n= yield\nX\n", @app.templates[:layout]
83
+ assert_equal "this is foo\n\n", @app.templates[:foo][0]
84
+ assert_equal "X\n= yield\nX\n", @app.templates[:layout][0]
85
+ end
86
+
87
+ it 'loads templates from specified views directory' do
88
+ render_app { render :test, :hello, :views => options.views + '/foo' }
89
+
90
+ assert_equal "from another views directory\n", body
91
+ end
92
+
93
+ test 'use_in_file_templates simply ignores IO errors' do
94
+ assert_nothing_raised {
95
+ mock_app {
96
+ set :inline_templates, '/foo/bar'
97
+ }
98
+ }
99
+
100
+ assert @app.templates.empty?
101
+ end
102
+
103
+ it 'passes locals to the layout' do
104
+ mock_app {
105
+ template :my_layout do
106
+ 'Hello <%= name %>!<%= yield %>'
107
+ end
108
+
109
+ get '/' do
110
+ erb '<p>content</p>', { :layout => :my_layout }, { :name => 'Mike'}
111
+ end
112
+ }
113
+
114
+ get '/'
115
+ assert ok?
116
+ assert_equal 'Hello Mike!<p>content</p>', body
117
+ end
118
+
119
+ it 'loads templates defined in subclasses' do
120
+ base = Class.new(Sinatra::Base)
121
+ base.template(:foo) { 'bar' }
122
+ render_app(base) { render :test, :foo }
123
+ assert ok?
124
+ assert_equal 'bar', body
125
+ end
126
+
127
+ it 'uses templates in superclasses before subclasses' do
128
+ base = Class.new(Sinatra::Base)
129
+ base.template(:foo) { 'template in superclass' }
130
+ assert_equal 'template in superclass', base.templates[:foo].first.call
131
+
132
+ mock_app(base) {
133
+ set :views, File.dirname(__FILE__) + '/views'
134
+ template(:foo) { 'template in subclass' }
135
+ get('/') { render :test, :foo }
136
+ }
137
+ assert_equal 'template in subclass', @app.templates[:foo].first.call
138
+
139
+ get '/'
140
+ assert ok?
141
+ assert_equal 'template in subclass', body
77
142
  end
78
143
  end
79
144
 
145
+ # __END__ : this is not the real end of the script.
146
+
80
147
  __END__
81
148
 
82
149
  @@ 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
+ 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
@@ -0,0 +1 @@
1
+ Hello <%= 'World' %>
@@ -0,0 +1,2 @@
1
+ ERubis Layout!
2
+ <%= yield %>
metadata CHANGED
@@ -1,15 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: darkhelmet-sinatra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1.1
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-03-09 00:00:00 -07:00
14
+ date: 2009-12-13 00:00:00 -07:00
13
15
  default_executable:
14
16
  dependencies:
15
17
  - !ruby/object:Gem::Dependency
@@ -20,21 +22,31 @@ dependencies:
20
22
  requirements:
21
23
  - - ">="
22
24
  - !ruby/object:Gem::Version
23
- version: 0.9.1
25
+ version: "1.0"
24
26
  version:
25
27
  - !ruby/object:Gem::Dependency
26
- name: rack
27
- type: :runtime
28
+ name: shotgun
29
+ type: :development
28
30
  version_requirement:
29
31
  version_requirements: !ruby/object:Gem::Requirement
30
32
  requirements:
31
33
  - - ">="
32
34
  - !ruby/object:Gem::Version
33
- version: 0.9.1
35
+ version: "0.3"
34
36
  - - <
35
37
  - !ruby/object:Gem::Version
36
38
  version: "1.0"
37
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
49
+ version:
38
50
  description: Classy web-development dressed in a DSL
39
51
  email: sinatrarb@googlegroups.com
40
52
  executables: []
@@ -48,59 +60,22 @@ files:
48
60
  - AUTHORS
49
61
  - CHANGES
50
62
  - LICENSE
63
+ - README.jp.rdoc
51
64
  - README.rdoc
52
65
  - Rakefile
53
- - compat/app_test.rb
54
- - compat/application_test.rb
55
- - compat/builder_test.rb
56
- - compat/compat_test.rb
57
- - compat/custom_error_test.rb
58
- - compat/erb_test.rb
59
- - compat/events_test.rb
60
- - compat/filter_test.rb
61
- - compat/haml_test.rb
62
- - compat/helper.rb
63
- - compat/mapped_error_test.rb
64
- - compat/pipeline_test.rb
65
- - compat/public/foo.xml
66
- - compat/sass_test.rb
67
- - compat/sessions_test.rb
68
- - compat/streaming_test.rb
69
- - compat/sym_params_test.rb
70
- - compat/template_test.rb
71
- - compat/use_in_file_templates_test.rb
72
- - compat/views/foo.builder
73
- - compat/views/foo.erb
74
- - compat/views/foo.haml
75
- - compat/views/foo.sass
76
- - compat/views/foo_layout.erb
77
- - compat/views/foo_layout.haml
78
- - compat/views/layout_test/foo.builder
79
- - compat/views/layout_test/foo.erb
80
- - compat/views/layout_test/foo.haml
81
- - compat/views/layout_test/foo.sass
82
- - compat/views/layout_test/layout.builder
83
- - compat/views/layout_test/layout.erb
84
- - compat/views/layout_test/layout.haml
85
- - compat/views/layout_test/layout.sass
86
- - compat/views/no_layout/no_layout.builder
87
- - compat/views/no_layout/no_layout.haml
88
66
  - lib/sinatra.rb
89
67
  - lib/sinatra/base.rb
90
- - lib/sinatra/compat.rb
91
68
  - lib/sinatra/images/404.png
92
69
  - lib/sinatra/images/500.png
93
70
  - lib/sinatra/main.rb
94
- - lib/sinatra/test.rb
95
- - lib/sinatra/test/bacon.rb
96
- - lib/sinatra/test/rspec.rb
97
- - lib/sinatra/test/spec.rb
98
- - lib/sinatra/test/unit.rb
71
+ - lib/sinatra/showexceptions.rb
72
+ - lib/sinatra/tilt.rb
99
73
  - sinatra.gemspec
100
74
  - test/base_test.rb
101
75
  - test/builder_test.rb
102
- - test/data/reload_app_file.rb
76
+ - test/contest.rb
103
77
  - test/erb_test.rb
78
+ - test/erubis_test.rb
104
79
  - test/extensions_test.rb
105
80
  - test/filter_test.rb
106
81
  - test/haml_test.rb
@@ -108,29 +83,37 @@ files:
108
83
  - test/helpers_test.rb
109
84
  - test/mapped_error_test.rb
110
85
  - test/middleware_test.rb
111
- - test/options_test.rb
112
- - test/reload_test.rb
113
86
  - test/request_test.rb
114
87
  - test/response_test.rb
115
88
  - test/result_test.rb
89
+ - test/route_added_hook_test.rb
116
90
  - test/routing_test.rb
117
91
  - test/sass_test.rb
118
92
  - test/server_test.rb
119
93
  - test/sinatra_test.rb
120
94
  - test/static_test.rb
121
95
  - test/templates_test.rb
122
- - test/test_test.rb
96
+ - test/views/error.builder
97
+ - test/views/error.erb
98
+ - test/views/error.erubis
99
+ - test/views/error.haml
100
+ - test/views/error.sass
101
+ - test/views/foo/hello.test
123
102
  - test/views/hello.builder
124
103
  - test/views/hello.erb
104
+ - test/views/hello.erubis
125
105
  - test/views/hello.haml
126
106
  - test/views/hello.sass
127
107
  - test/views/hello.test
128
108
  - test/views/layout2.builder
129
109
  - test/views/layout2.erb
110
+ - test/views/layout2.erubis
130
111
  - test/views/layout2.haml
131
112
  - test/views/layout2.test
132
113
  has_rdoc: true
133
114
  homepage: http://sinatra.rubyforge.org
115
+ licenses: []
116
+
134
117
  post_install_message:
135
118
  rdoc_options:
136
119
  - --line-numbers
@@ -156,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
139
  requirements: []
157
140
 
158
141
  rubyforge_project: sinatra
159
- rubygems_version: 1.2.0
142
+ rubygems_version: 1.3.5
160
143
  signing_key:
161
144
  specification_version: 2
162
145
  summary: Classy web-development dressed in a DSL
@@ -164,21 +147,20 @@ test_files:
164
147
  - test/base_test.rb
165
148
  - test/builder_test.rb
166
149
  - test/erb_test.rb
150
+ - test/erubis_test.rb
167
151
  - test/extensions_test.rb
168
152
  - test/filter_test.rb
169
153
  - test/haml_test.rb
170
154
  - test/helpers_test.rb
171
155
  - test/mapped_error_test.rb
172
156
  - test/middleware_test.rb
173
- - test/options_test.rb
174
- - test/reload_test.rb
175
157
  - test/request_test.rb
176
158
  - test/response_test.rb
177
159
  - test/result_test.rb
160
+ - test/route_added_hook_test.rb
178
161
  - test/routing_test.rb
179
162
  - test/sass_test.rb
180
163
  - test/server_test.rb
181
164
  - test/sinatra_test.rb
182
165
  - test/static_test.rb
183
166
  - test/templates_test.rb
184
- - test/test_test.rb