sinatra 1.4.8 → 2.0.8.1

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.

Files changed (129) hide show
  1. checksums.yaml +5 -5
  2. data/AUTHORS.md +1 -0
  3. data/CHANGELOG.md +238 -54
  4. data/CONTRIBUTING.md +8 -8
  5. data/Gemfile +47 -47
  6. data/LICENSE +4 -1
  7. data/MAINTENANCE.md +42 -0
  8. data/README.de.md +650 -442
  9. data/README.es.md +738 -357
  10. data/README.fr.md +15 -15
  11. data/README.hu.md +37 -3
  12. data/README.ja.md +124 -66
  13. data/README.ko.md +14 -14
  14. data/README.malayalam.md +3141 -0
  15. data/README.md +530 -403
  16. data/README.pt-br.md +2361 -334
  17. data/README.pt-pt.md +2 -2
  18. data/README.ru.md +856 -607
  19. data/README.zh.md +90 -28
  20. data/Rakefile +77 -51
  21. data/SECURITY.md +35 -0
  22. data/VERSION +1 -0
  23. data/lib/sinatra/base.rb +177 -239
  24. data/lib/sinatra/indifferent_hash.rb +200 -0
  25. data/lib/sinatra/main.rb +30 -10
  26. data/lib/sinatra/show_exceptions.rb +102 -62
  27. data/lib/sinatra/version.rb +1 -1
  28. data/sinatra.gemspec +44 -8
  29. metadata +41 -166
  30. data/lib/sinatra/ext.rb +0 -17
  31. data/test/asciidoctor_test.rb +0 -72
  32. data/test/base_test.rb +0 -167
  33. data/test/builder_test.rb +0 -91
  34. data/test/coffee_test.rb +0 -96
  35. data/test/compile_test.rb +0 -183
  36. data/test/contest.rb +0 -91
  37. data/test/creole_test.rb +0 -65
  38. data/test/delegator_test.rb +0 -160
  39. data/test/encoding_test.rb +0 -20
  40. data/test/erb_test.rb +0 -116
  41. data/test/extensions_test.rb +0 -98
  42. data/test/filter_test.rb +0 -487
  43. data/test/haml_test.rb +0 -109
  44. data/test/helper.rb +0 -132
  45. data/test/helpers_test.rb +0 -1917
  46. data/test/integration/app.rb +0 -79
  47. data/test/integration_helper.rb +0 -236
  48. data/test/integration_test.rb +0 -104
  49. data/test/less_test.rb +0 -69
  50. data/test/liquid_test.rb +0 -77
  51. data/test/mapped_error_test.rb +0 -285
  52. data/test/markaby_test.rb +0 -80
  53. data/test/markdown_test.rb +0 -85
  54. data/test/mediawiki_test.rb +0 -68
  55. data/test/middleware_test.rb +0 -68
  56. data/test/nokogiri_test.rb +0 -67
  57. data/test/public/favicon.ico +0 -0
  58. data/test/public/hello+world.txt +0 -1
  59. data/test/rabl_test.rb +0 -89
  60. data/test/rack_test.rb +0 -45
  61. data/test/radius_test.rb +0 -59
  62. data/test/rdoc_test.rb +0 -66
  63. data/test/readme_test.rb +0 -130
  64. data/test/request_test.rb +0 -100
  65. data/test/response_test.rb +0 -63
  66. data/test/result_test.rb +0 -76
  67. data/test/route_added_hook_test.rb +0 -59
  68. data/test/routing_test.rb +0 -1456
  69. data/test/sass_test.rb +0 -115
  70. data/test/scss_test.rb +0 -88
  71. data/test/server_test.rb +0 -56
  72. data/test/settings_test.rb +0 -582
  73. data/test/sinatra_test.rb +0 -12
  74. data/test/slim_test.rb +0 -102
  75. data/test/static_test.rb +0 -266
  76. data/test/streaming_test.rb +0 -149
  77. data/test/stylus_test.rb +0 -90
  78. data/test/templates_test.rb +0 -382
  79. data/test/textile_test.rb +0 -65
  80. data/test/views/a/in_a.str +0 -1
  81. data/test/views/ascii.erb +0 -2
  82. data/test/views/b/in_b.str +0 -1
  83. data/test/views/calc.html.erb +0 -1
  84. data/test/views/error.builder +0 -3
  85. data/test/views/error.erb +0 -3
  86. data/test/views/error.haml +0 -3
  87. data/test/views/error.sass +0 -2
  88. data/test/views/explicitly_nested.str +0 -1
  89. data/test/views/foo/hello.test +0 -1
  90. data/test/views/hello.asciidoc +0 -1
  91. data/test/views/hello.builder +0 -1
  92. data/test/views/hello.coffee +0 -1
  93. data/test/views/hello.creole +0 -1
  94. data/test/views/hello.erb +0 -1
  95. data/test/views/hello.haml +0 -1
  96. data/test/views/hello.less +0 -5
  97. data/test/views/hello.liquid +0 -1
  98. data/test/views/hello.mab +0 -1
  99. data/test/views/hello.md +0 -1
  100. data/test/views/hello.mediawiki +0 -1
  101. data/test/views/hello.nokogiri +0 -1
  102. data/test/views/hello.rabl +0 -2
  103. data/test/views/hello.radius +0 -1
  104. data/test/views/hello.rdoc +0 -1
  105. data/test/views/hello.sass +0 -2
  106. data/test/views/hello.scss +0 -3
  107. data/test/views/hello.slim +0 -1
  108. data/test/views/hello.str +0 -1
  109. data/test/views/hello.styl +0 -2
  110. data/test/views/hello.test +0 -1
  111. data/test/views/hello.textile +0 -1
  112. data/test/views/hello.wlang +0 -1
  113. data/test/views/hello.yajl +0 -1
  114. data/test/views/layout2.builder +0 -3
  115. data/test/views/layout2.erb +0 -2
  116. data/test/views/layout2.haml +0 -2
  117. data/test/views/layout2.liquid +0 -2
  118. data/test/views/layout2.mab +0 -2
  119. data/test/views/layout2.nokogiri +0 -3
  120. data/test/views/layout2.rabl +0 -3
  121. data/test/views/layout2.radius +0 -2
  122. data/test/views/layout2.slim +0 -3
  123. data/test/views/layout2.str +0 -2
  124. data/test/views/layout2.test +0 -1
  125. data/test/views/layout2.wlang +0 -2
  126. data/test/views/nested.str +0 -1
  127. data/test/views/utf8.erb +0 -2
  128. data/test/wlang_test.rb +0 -87
  129. data/test/yajl_test.rb +0 -86
data/test/haml_test.rb DELETED
@@ -1,109 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- begin
4
- require 'haml'
5
-
6
- class HAMLTest < Minitest::Test
7
- def haml_app(&block)
8
- mock_app do
9
- set :views, File.dirname(__FILE__) + '/views'
10
- get('/', &block)
11
- end
12
- get '/'
13
- end
14
-
15
- it 'renders inline HAML strings' do
16
- haml_app { haml '%h1 Hiya' }
17
- assert ok?
18
- assert_equal "<h1>Hiya</h1>\n", body
19
- end
20
-
21
- it 'renders .haml files in views path' do
22
- haml_app { haml :hello }
23
- assert ok?
24
- assert_equal "<h1>Hello From Haml</h1>\n", body
25
- end
26
-
27
- it "renders with inline layouts" do
28
- mock_app do
29
- layout { %q(%h1= 'THIS. IS. ' + yield.upcase) }
30
- get('/') { haml '%em Sparta' }
31
- end
32
- get '/'
33
- assert ok?
34
- assert_equal "<h1>THIS. IS. <EM>SPARTA</EM></h1>\n", body
35
- end
36
-
37
- it "renders with file layouts" do
38
- haml_app { haml 'Hello World', :layout => :layout2 }
39
- assert ok?
40
- assert_equal "<h1>HAML Layout!</h1>\n<p>Hello World</p>\n", body
41
- end
42
-
43
- it "raises error if template not found" do
44
- mock_app { get('/') { haml :no_such_template } }
45
- assert_raises(Errno::ENOENT) { get('/') }
46
- end
47
-
48
- it "passes HAML options to the Haml engine" do
49
- mock_app {
50
- get('/') { haml "!!!\n%h1 Hello World", :format => :html5 }
51
- }
52
- get '/'
53
- assert ok?
54
- assert_equal "<!DOCTYPE html>\n<h1>Hello World</h1>\n", body
55
- end
56
-
57
- it "passes default HAML options to the Haml engine" do
58
- mock_app do
59
- set :haml, {:format => :html5}
60
- get('/') { haml "!!!\n%h1 Hello World" }
61
- end
62
- get '/'
63
- assert ok?
64
- assert_equal "<!DOCTYPE html>\n<h1>Hello World</h1>\n", body
65
- end
66
-
67
- it "merges the default HAML options with the overrides and passes them to the Haml engine" do
68
- mock_app do
69
- set :haml, {:format => :html5, :attr_wrapper => '"'} # default HAML attr are <tag attr='single-quoted'>
70
- get('/') { haml "!!!\n%h1{:class => :header} Hello World" }
71
- get('/html4') {
72
- haml "!!!\n%h1{:class => 'header'} Hello World", :format => :html4
73
- }
74
- end
75
- get '/'
76
- assert ok?
77
- assert_equal "<!DOCTYPE html>\n<h1 class=\"header\">Hello World</h1>\n", body
78
- get '/html4'
79
- assert ok?
80
- assert_match(/^<!DOCTYPE html PUBLIC (.*) HTML 4.01/, body)
81
- end
82
-
83
- it "is possible to pass locals" do
84
- haml_app { haml "= foo", :locals => { :foo => 'bar' }}
85
- assert_equal "bar\n", body
86
- end
87
-
88
- it "can render truly nested layouts by accepting a layout and a block with the contents" do
89
- mock_app do
90
- template(:main_outer_layout) { "%h1 Title\n= yield" }
91
- template(:an_inner_layout) { "%h2 Subtitle\n= yield" }
92
- template(:a_page) { "%p Contents." }
93
- get('/') do
94
- haml :main_outer_layout, :layout => false do
95
- haml :an_inner_layout do
96
- haml :a_page
97
- end
98
- end
99
- end
100
- end
101
- get '/'
102
- assert ok?
103
- assert_body "<h1>Title</h1>\n<h2>Subtitle</h2>\n<p>Contents.</p>\n"
104
- end
105
- end
106
-
107
- rescue LoadError
108
- warn "#{$!.to_s}: skipping haml tests"
109
- end
data/test/helper.rb DELETED
@@ -1,132 +0,0 @@
1
- ENV['RACK_ENV'] = 'test'
2
- Encoding.default_external = "UTF-8" if defined? Encoding
3
-
4
- RUBY_ENGINE = 'ruby' unless defined? RUBY_ENGINE
5
-
6
- begin
7
- require 'rack'
8
- rescue LoadError
9
- require 'rubygems'
10
- require 'rack'
11
- end
12
-
13
- testdir = File.dirname(__FILE__)
14
- $LOAD_PATH.unshift testdir unless $LOAD_PATH.include?(testdir)
15
-
16
- libdir = File.dirname(File.dirname(__FILE__)) + '/lib'
17
- $LOAD_PATH.unshift libdir unless $LOAD_PATH.include?(libdir)
18
-
19
- require 'minitest'
20
- require 'contest'
21
- require 'rack/test'
22
- require 'sinatra/base'
23
-
24
- class Sinatra::Base
25
- include Minitest::Assertions
26
- # Allow assertions in request context
27
- def assertions
28
- @assertions ||= 0
29
- end
30
-
31
- attr_writer :assertions
32
- end
33
-
34
- class Rack::Builder
35
- def include?(middleware)
36
- @ins.any? { |m| p m ; middleware === m }
37
- end
38
- end
39
-
40
- Sinatra::Base.set :environment, :test
41
-
42
- class Minitest::Test
43
- include Rack::Test::Methods
44
-
45
- class << self
46
- alias_method :it, :test
47
- alias_method :section, :context
48
- end
49
-
50
- def self.example(desc = nil, &block)
51
- @example_count = 0 unless instance_variable_defined? :@example_count
52
- @example_count += 1
53
- it(desc || "Example #{@example_count}", &block)
54
- end
55
-
56
- alias_method :response, :last_response
57
-
58
- setup do
59
- Sinatra::Base.set :environment, :test
60
- end
61
-
62
- # Sets up a Sinatra::Base subclass defined with the block
63
- # given. Used in setup or individual spec methods to establish
64
- # the application.
65
- def mock_app(base=Sinatra::Base, &block)
66
- @app = Sinatra.new(base, &block)
67
- end
68
-
69
- def app
70
- Rack::Lint.new(@app)
71
- end
72
-
73
- def body
74
- response.body.to_s
75
- end
76
-
77
- def assert_body(value)
78
- if value.respond_to? :to_str
79
- assert_equal value.lstrip.gsub(/\s*\n\s*/, ""), body.lstrip.gsub(/\s*\n\s*/, "")
80
- else
81
- assert_match value, body
82
- end
83
- end
84
-
85
- def assert_status(expected)
86
- assert_equal Integer(expected), Integer(status)
87
- end
88
-
89
- def assert_like(a,b)
90
- pattern = /id=['"][^"']*["']|\s+/
91
- assert_equal a.strip.gsub(pattern, ""), b.strip.gsub(pattern, "")
92
- end
93
-
94
- def assert_include(str, substr)
95
- assert str.include?(substr), "expected #{str.inspect} to include #{substr.inspect}"
96
- end
97
-
98
- def options(uri, params = {}, env = {}, &block)
99
- request(uri, env.merge(:method => "OPTIONS", :params => params), &block)
100
- end
101
-
102
- def patch(uri, params = {}, env = {}, &block)
103
- request(uri, env.merge(:method => "PATCH", :params => params), &block)
104
- end
105
-
106
- def link(uri, params = {}, env = {}, &block)
107
- request(uri, env.merge(:method => "LINK", :params => params), &block)
108
- end
109
-
110
- def unlink(uri, params = {}, env = {}, &block)
111
- request(uri, env.merge(:method => "UNLINK", :params => params), &block)
112
- end
113
-
114
- # Delegate other missing methods to response.
115
- def method_missing(name, *args, &block)
116
- if response && response.respond_to?(name)
117
- response.send(name, *args, &block)
118
- else
119
- super
120
- end
121
- rescue Rack::Test::Error
122
- super
123
- end
124
-
125
- # Do not output warnings for the duration of the block.
126
- def silence_warnings
127
- $VERBOSE, v = nil, $VERBOSE
128
- yield
129
- ensure
130
- $VERBOSE = v
131
- end
132
- end