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/test/sass_test.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/helper'
|
2
|
+
require 'sass'
|
2
3
|
|
3
|
-
|
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
|
data/test/server_test.rb
CHANGED
@@ -1,21 +1,25 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
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
|
-
|
14
|
-
end
|
18
|
+
register 'mock', 'Rack::Handler::Mock'
|
15
19
|
end
|
16
20
|
|
17
|
-
|
18
|
-
|
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
|
-
|
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!
|
data/test/sinatra_test.rb
CHANGED
data/test/static_test.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
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__)}"
|
data/test/templates_test.rb
CHANGED
@@ -1,12 +1,20 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/helper'
|
2
2
|
|
3
|
-
|
4
|
-
def
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
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
|
79
|
+
it 'loads templates from source file with inline_templates enabled' do
|
72
80
|
mock_app {
|
73
|
-
|
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 @@
|
|
1
|
+
from another views directory
|
@@ -0,0 +1 @@
|
|
1
|
+
Hello <%= 'World' %>
|
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.
|
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-
|
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
|
25
|
+
version: "1.0"
|
24
26
|
version:
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
27
|
-
type: :
|
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.
|
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/
|
95
|
-
- lib/sinatra/
|
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/
|
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/
|
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.
|
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
|