sinatra 1.4.8 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sinatra might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +111 -47
- data/CONTRIBUTING.md +1 -1
- data/Gemfile +41 -49
- data/LICENSE +4 -1
- data/MAINTENANCE.md +42 -0
- data/README.de.md +644 -436
- data/README.es.md +6 -6
- data/README.fr.md +9 -9
- data/README.hu.md +37 -3
- data/README.ja.md +103 -45
- data/README.ko.md +8 -8
- data/README.md +471 -363
- data/README.pt-br.md +3 -3
- data/README.pt-pt.md +2 -2
- data/README.ru.md +42 -64
- data/README.zh.md +8 -8
- data/Rakefile +72 -49
- data/SECURITY.md +35 -0
- data/lib/sinatra/base.rb +137 -195
- data/lib/sinatra/indifferent_hash.rb +150 -0
- data/lib/sinatra/main.rb +1 -0
- data/lib/sinatra/show_exceptions.rb +63 -55
- data/lib/sinatra/version.rb +1 -1
- data/sinatra.gemspec +19 -7
- metadata +30 -164
- data/lib/sinatra/ext.rb +0 -17
- data/test/asciidoctor_test.rb +0 -72
- data/test/base_test.rb +0 -167
- data/test/builder_test.rb +0 -91
- data/test/coffee_test.rb +0 -96
- data/test/compile_test.rb +0 -183
- data/test/contest.rb +0 -91
- data/test/creole_test.rb +0 -65
- data/test/delegator_test.rb +0 -160
- data/test/encoding_test.rb +0 -20
- data/test/erb_test.rb +0 -116
- data/test/extensions_test.rb +0 -98
- data/test/filter_test.rb +0 -487
- data/test/haml_test.rb +0 -109
- data/test/helper.rb +0 -132
- data/test/helpers_test.rb +0 -1917
- data/test/integration/app.rb +0 -79
- data/test/integration_helper.rb +0 -236
- data/test/integration_test.rb +0 -104
- data/test/less_test.rb +0 -69
- data/test/liquid_test.rb +0 -77
- data/test/mapped_error_test.rb +0 -285
- data/test/markaby_test.rb +0 -80
- data/test/markdown_test.rb +0 -85
- data/test/mediawiki_test.rb +0 -68
- data/test/middleware_test.rb +0 -68
- data/test/nokogiri_test.rb +0 -67
- data/test/public/favicon.ico +0 -0
- data/test/public/hello+world.txt +0 -1
- data/test/rabl_test.rb +0 -89
- data/test/rack_test.rb +0 -45
- data/test/radius_test.rb +0 -59
- data/test/rdoc_test.rb +0 -66
- data/test/readme_test.rb +0 -130
- data/test/request_test.rb +0 -100
- data/test/response_test.rb +0 -63
- data/test/result_test.rb +0 -76
- data/test/route_added_hook_test.rb +0 -59
- data/test/routing_test.rb +0 -1456
- data/test/sass_test.rb +0 -115
- data/test/scss_test.rb +0 -88
- data/test/server_test.rb +0 -56
- data/test/settings_test.rb +0 -582
- data/test/sinatra_test.rb +0 -12
- data/test/slim_test.rb +0 -102
- data/test/static_test.rb +0 -266
- data/test/streaming_test.rb +0 -149
- data/test/stylus_test.rb +0 -90
- data/test/templates_test.rb +0 -382
- data/test/textile_test.rb +0 -65
- data/test/views/a/in_a.str +0 -1
- data/test/views/ascii.erb +0 -2
- data/test/views/b/in_b.str +0 -1
- data/test/views/calc.html.erb +0 -1
- data/test/views/error.builder +0 -3
- data/test/views/error.erb +0 -3
- data/test/views/error.haml +0 -3
- data/test/views/error.sass +0 -2
- data/test/views/explicitly_nested.str +0 -1
- data/test/views/foo/hello.test +0 -1
- data/test/views/hello.asciidoc +0 -1
- data/test/views/hello.builder +0 -1
- data/test/views/hello.coffee +0 -1
- data/test/views/hello.creole +0 -1
- data/test/views/hello.erb +0 -1
- data/test/views/hello.haml +0 -1
- data/test/views/hello.less +0 -5
- data/test/views/hello.liquid +0 -1
- data/test/views/hello.mab +0 -1
- data/test/views/hello.md +0 -1
- data/test/views/hello.mediawiki +0 -1
- data/test/views/hello.nokogiri +0 -1
- data/test/views/hello.rabl +0 -2
- data/test/views/hello.radius +0 -1
- data/test/views/hello.rdoc +0 -1
- data/test/views/hello.sass +0 -2
- data/test/views/hello.scss +0 -3
- data/test/views/hello.slim +0 -1
- data/test/views/hello.str +0 -1
- data/test/views/hello.styl +0 -2
- data/test/views/hello.test +0 -1
- data/test/views/hello.textile +0 -1
- data/test/views/hello.wlang +0 -1
- data/test/views/hello.yajl +0 -1
- data/test/views/layout2.builder +0 -3
- data/test/views/layout2.erb +0 -2
- data/test/views/layout2.haml +0 -2
- data/test/views/layout2.liquid +0 -2
- data/test/views/layout2.mab +0 -2
- data/test/views/layout2.nokogiri +0 -3
- data/test/views/layout2.rabl +0 -3
- data/test/views/layout2.radius +0 -2
- data/test/views/layout2.slim +0 -3
- data/test/views/layout2.str +0 -2
- data/test/views/layout2.test +0 -1
- data/test/views/layout2.wlang +0 -2
- data/test/views/nested.str +0 -1
- data/test/views/utf8.erb +0 -2
- data/test/wlang_test.rb +0 -87
- data/test/yajl_test.rb +0 -86
data/test/sass_test.rb
DELETED
@@ -1,115 +0,0 @@
|
|
1
|
-
require File.expand_path('../helper', __FILE__)
|
2
|
-
|
3
|
-
begin
|
4
|
-
require 'sass'
|
5
|
-
|
6
|
-
class SassTest < Minitest::Test
|
7
|
-
def sass_app(options = {}, &block)
|
8
|
-
mock_app do
|
9
|
-
set :views, File.dirname(__FILE__) + '/views'
|
10
|
-
set options
|
11
|
-
get('/', &block)
|
12
|
-
end
|
13
|
-
get '/'
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'renders inline Sass strings' do
|
17
|
-
sass_app { sass "#sass\n :background-color white\n" }
|
18
|
-
assert ok?
|
19
|
-
assert_equal "#sass {\n background-color: white; }\n", body
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'defaults content type to css' do
|
23
|
-
sass_app { sass "#sass\n :background-color white\n" }
|
24
|
-
assert ok?
|
25
|
-
assert_equal "text/css;charset=utf-8", response['Content-Type']
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'defaults allows setting content type per route' do
|
29
|
-
sass_app do
|
30
|
-
content_type :html
|
31
|
-
sass "#sass\n :background-color white\n"
|
32
|
-
end
|
33
|
-
assert ok?
|
34
|
-
assert_equal "text/html;charset=utf-8", response['Content-Type']
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'defaults allows setting content type globally' do
|
38
|
-
sass_app(:sass => { :content_type => 'html' }) {
|
39
|
-
sass "#sass\n :background-color white\n"
|
40
|
-
}
|
41
|
-
assert ok?
|
42
|
-
assert_equal "text/html;charset=utf-8", response['Content-Type']
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'renders .sass files in views path' do
|
46
|
-
sass_app { sass :hello }
|
47
|
-
assert ok?
|
48
|
-
assert_equal "#sass {\n background-color: white; }\n", body
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'ignores the layout option' do
|
52
|
-
sass_app { sass :hello, :layout => :layout2 }
|
53
|
-
assert ok?
|
54
|
-
assert_equal "#sass {\n background-color: white; }\n", body
|
55
|
-
end
|
56
|
-
|
57
|
-
it "raises error if template not found" do
|
58
|
-
mock_app { get('/') { sass :no_such_template } }
|
59
|
-
assert_raises(Errno::ENOENT) { get('/') }
|
60
|
-
end
|
61
|
-
|
62
|
-
it "passes SASS options to the Sass engine" do
|
63
|
-
sass_app do
|
64
|
-
sass(
|
65
|
-
"#sass\n :background-color white\n :color black\n",
|
66
|
-
:style => :compact
|
67
|
-
)
|
68
|
-
end
|
69
|
-
assert ok?
|
70
|
-
assert_equal("#sass { background-color: white; color: black; }\n", body)
|
71
|
-
end
|
72
|
-
|
73
|
-
it "passes default SASS options to the Sass engine" do
|
74
|
-
mock_app do
|
75
|
-
set :sass, {:style => :compact} # default Sass style is :nested
|
76
|
-
get('/') { sass("#sass\n :background-color white\n :color black\n") }
|
77
|
-
end
|
78
|
-
get '/'
|
79
|
-
assert ok?
|
80
|
-
assert_equal "#sass { background-color: white; color: black; }\n", body
|
81
|
-
end
|
82
|
-
|
83
|
-
it "merges the default SASS options with the overrides" do
|
84
|
-
mock_app do
|
85
|
-
# default Sass attribute_syntax is :normal (with : in front)
|
86
|
-
set :sass, {:style => :compact, :attribute_syntax => :alternate }
|
87
|
-
get('/') { sass("#sass\n background-color: white\n color: black\n") }
|
88
|
-
get('/raised') do
|
89
|
-
# retains global attribute_syntax settings
|
90
|
-
sass(
|
91
|
-
"#sass\n :background-color white\n :color black\n",
|
92
|
-
:style => :expanded
|
93
|
-
)
|
94
|
-
end
|
95
|
-
get('/expanded_normal') do
|
96
|
-
sass(
|
97
|
-
"#sass\n :background-color white\n :color black\n",
|
98
|
-
:style => :expanded, :attribute_syntax => :normal
|
99
|
-
)
|
100
|
-
end
|
101
|
-
end
|
102
|
-
get '/'
|
103
|
-
assert ok?
|
104
|
-
assert_equal "#sass { background-color: white; color: black; }\n", body
|
105
|
-
assert_raises(Sass::SyntaxError) { get('/raised') }
|
106
|
-
get '/expanded_normal'
|
107
|
-
assert ok?
|
108
|
-
assert_equal "#sass {\n background-color: white;\n color: black;\n}\n",
|
109
|
-
body
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
rescue LoadError
|
114
|
-
warn "#{$!.to_s}: skipping sass tests"
|
115
|
-
end
|
data/test/scss_test.rb
DELETED
@@ -1,88 +0,0 @@
|
|
1
|
-
require File.expand_path('../helper', __FILE__)
|
2
|
-
|
3
|
-
begin
|
4
|
-
require 'sass'
|
5
|
-
|
6
|
-
class ScssTest < Minitest::Test
|
7
|
-
def scss_app(options = {}, &block)
|
8
|
-
mock_app do
|
9
|
-
set :views, File.dirname(__FILE__) + '/views'
|
10
|
-
set options
|
11
|
-
get('/', &block)
|
12
|
-
end
|
13
|
-
get '/'
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'renders inline Scss strings' do
|
17
|
-
scss_app { scss "#scss {\n background-color: white; }\n" }
|
18
|
-
assert ok?
|
19
|
-
assert_equal "#scss {\n background-color: white; }\n", body
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'defaults content type to css' do
|
23
|
-
scss_app { scss "#scss {\n background-color: white; }\n" }
|
24
|
-
assert ok?
|
25
|
-
assert_equal "text/css;charset=utf-8", response['Content-Type']
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'defaults allows setting content type per route' do
|
29
|
-
scss_app do
|
30
|
-
content_type :html
|
31
|
-
scss "#scss {\n background-color: white; }\n"
|
32
|
-
end
|
33
|
-
assert ok?
|
34
|
-
assert_equal "text/html;charset=utf-8", response['Content-Type']
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'defaults allows setting content type globally' do
|
38
|
-
scss_app(:scss => { :content_type => 'html' }) {
|
39
|
-
scss "#scss {\n background-color: white; }\n"
|
40
|
-
}
|
41
|
-
assert ok?
|
42
|
-
assert_equal "text/html;charset=utf-8", response['Content-Type']
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'renders .scss files in views path' do
|
46
|
-
scss_app { scss :hello }
|
47
|
-
assert ok?
|
48
|
-
assert_equal "#scss {\n background-color: white; }\n", body
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'ignores the layout option' do
|
52
|
-
scss_app { scss :hello, :layout => :layout2 }
|
53
|
-
assert ok?
|
54
|
-
assert_equal "#scss {\n background-color: white; }\n", body
|
55
|
-
end
|
56
|
-
|
57
|
-
it "raises error if template not found" do
|
58
|
-
mock_app { get('/') { scss(:no_such_template) } }
|
59
|
-
assert_raises(Errno::ENOENT) { get('/') }
|
60
|
-
end
|
61
|
-
|
62
|
-
it "passes scss options to the scss engine" do
|
63
|
-
scss_app do
|
64
|
-
scss(
|
65
|
-
"#scss {\n background-color: white;\n color: black\n}",
|
66
|
-
:style => :compact
|
67
|
-
)
|
68
|
-
end
|
69
|
-
assert ok?
|
70
|
-
assert_equal "#scss { background-color: white; color: black; }\n", body
|
71
|
-
end
|
72
|
-
|
73
|
-
it "passes default scss options to the scss engine" do
|
74
|
-
mock_app do
|
75
|
-
set :scss, {:style => :compact} # default scss style is :nested
|
76
|
-
get('/') {
|
77
|
-
scss("#scss {\n background-color: white;\n color: black;\n}")
|
78
|
-
}
|
79
|
-
end
|
80
|
-
get '/'
|
81
|
-
assert ok?
|
82
|
-
assert_equal "#scss { background-color: white; color: black; }\n", body
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
rescue LoadError
|
87
|
-
warn "#{$!.to_s}: skipping scss tests"
|
88
|
-
end
|
data/test/server_test.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
require File.expand_path('../helper', __FILE__)
|
2
|
-
require 'stringio'
|
3
|
-
|
4
|
-
module Rack::Handler
|
5
|
-
class Mock
|
6
|
-
extend Minitest::Assertions
|
7
|
-
# Allow assertions in request context
|
8
|
-
def self.assertions
|
9
|
-
@assertions ||= 0
|
10
|
-
end
|
11
|
-
|
12
|
-
def self.assertions= assertions
|
13
|
-
@assertions = assertions
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.run(app, options={})
|
17
|
-
assert(app < Sinatra::Base)
|
18
|
-
assert_equal 9001, options[:Port]
|
19
|
-
assert_equal 'foo.local', options[:Host]
|
20
|
-
yield new
|
21
|
-
end
|
22
|
-
|
23
|
-
def stop
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
register 'mock', 'Rack::Handler::Mock'
|
28
|
-
end
|
29
|
-
|
30
|
-
class ServerTest < Minitest::Test
|
31
|
-
setup do
|
32
|
-
mock_app do
|
33
|
-
set :server, 'mock'
|
34
|
-
set :bind, 'foo.local'
|
35
|
-
set :port, 9001
|
36
|
-
end
|
37
|
-
$stderr = StringIO.new
|
38
|
-
end
|
39
|
-
|
40
|
-
def teardown
|
41
|
-
$stderr = STDERR
|
42
|
-
end
|
43
|
-
|
44
|
-
it "locates the appropriate Rack handler and calls ::run" do
|
45
|
-
@app.run!
|
46
|
-
end
|
47
|
-
|
48
|
-
it "sets options on the app before running" do
|
49
|
-
@app.run! :sessions => true
|
50
|
-
assert @app.sessions?
|
51
|
-
end
|
52
|
-
|
53
|
-
it "falls back on the next server handler when not found" do
|
54
|
-
@app.run! :server => %w[foo bar mock]
|
55
|
-
end
|
56
|
-
end
|