sinatra 1.3.6 → 1.4.0.a
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.
Potentially problematic release.
This version of sinatra might be problematic. Click here for more details.
- data/CHANGES +96 -22
- data/Gemfile +11 -3
- data/README.de.md +2590 -0
- data/README.es.rdoc +66 -38
- data/README.fr.md +2630 -0
- data/README.hu.rdoc +3 -2
- data/README.jp.rdoc +16 -3
- data/README.ko.rdoc +11 -5
- data/README.md +2699 -0
- data/README.pt-br.rdoc +152 -21
- data/README.pt-pt.rdoc +3 -2
- data/README.ru.md +2724 -0
- data/README.zh.rdoc +3 -3
- data/Rakefile +3 -4
- data/examples/chat.rb +3 -3
- data/lib/sinatra/base.rb +433 -247
- data/lib/sinatra/main.rb +4 -2
- data/lib/sinatra/showexceptions.rb +6 -1
- data/lib/sinatra/version.rb +1 -1
- data/test/base_test.rb +21 -9
- data/test/builder_test.rb +15 -19
- data/test/coffee_test.rb +4 -6
- data/test/compile_test.rb +154 -0
- data/test/contest.rb +4 -6
- data/test/creole_test.rb +5 -5
- data/test/delegator_test.rb +1 -3
- data/test/erb_test.rb +32 -20
- data/test/extensions_test.rb +1 -3
- data/test/filter_test.rb +65 -56
- data/test/haml_test.rb +34 -26
- data/test/helpers_test.rb +331 -221
- data/test/integration_helper.rb +8 -0
- data/test/integration_test.rb +3 -1
- data/test/less_test.rb +10 -8
- data/test/liquid_test.rb +22 -4
- data/test/mapped_error_test.rb +122 -96
- data/test/markaby_test.rb +5 -5
- data/test/markdown_test.rb +5 -5
- data/test/middleware_test.rb +3 -3
- data/test/nokogiri_test.rb +4 -6
- data/test/rabl_test.rb +89 -0
- data/test/radius_test.rb +4 -4
- data/test/rdoc_test.rb +7 -7
- data/test/readme_test.rb +14 -30
- data/test/request_test.rb +15 -0
- data/test/response_test.rb +3 -4
- data/test/result_test.rb +11 -33
- data/test/route_added_hook_test.rb +10 -10
- data/test/routing_test.rb +123 -1
- data/test/sass_test.rb +26 -26
- data/test/scss_test.rb +16 -16
- data/test/server_test.rb +2 -2
- data/test/settings_test.rb +48 -4
- data/test/sinatra_test.rb +2 -7
- data/test/slim_test.rb +37 -23
- data/test/static_test.rb +56 -15
- data/test/streaming_test.rb +11 -2
- data/test/templates_test.rb +117 -45
- data/test/textile_test.rb +9 -9
- data/test/views/hello.rabl +2 -0
- data/test/views/hello.wlang +1 -0
- data/test/views/hello.yajl +1 -0
- data/test/views/layout2.rabl +3 -0
- data/test/views/layout2.wlang +2 -0
- data/test/wlang_test.rb +87 -0
- data/test/yajl_test.rb +86 -0
- metadata +27 -17
- data/README.de.rdoc +0 -2097
- data/README.fr.rdoc +0 -2036
- data/README.rdoc +0 -2017
- data/README.ru.rdoc +0 -1785
    
        data/test/extensions_test.rb
    CHANGED
    
    | @@ -42,9 +42,7 @@ class ExtensionsTest < Test::Unit::TestCase | |
| 42 42 | 
             
              end
         | 
| 43 43 |  | 
| 44 44 | 
             
              it 'allows extending by passing a block' do
         | 
| 45 | 
            -
                Sinatra::Base.register {
         | 
| 46 | 
            -
                  def im_in_ur_anonymous_module; end
         | 
| 47 | 
            -
                }
         | 
| 45 | 
            +
                Sinatra::Base.register { def im_in_ur_anonymous_module; end }
         | 
| 48 46 | 
             
                assert Sinatra::Base.respond_to?(:im_in_ur_anonymous_module)
         | 
| 49 47 | 
             
              end
         | 
| 50 48 |  | 
    
        data/test/filter_test.rb
    CHANGED
    
    | @@ -5,14 +5,14 @@ class BeforeFilterTest < Test::Unit::TestCase | |
| 5 5 | 
             
                count = 0
         | 
| 6 6 | 
             
                mock_app do
         | 
| 7 7 | 
             
                  get('/') { 'Hello World' }
         | 
| 8 | 
            -
                  before  | 
| 8 | 
            +
                  before do
         | 
| 9 9 | 
             
                    assert_equal 0, count
         | 
| 10 10 | 
             
                    count = 1
         | 
| 11 | 
            -
                   | 
| 12 | 
            -
                  before  | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
                  before do
         | 
| 13 13 | 
             
                    assert_equal 1, count
         | 
| 14 14 | 
             
                    count = 2
         | 
| 15 | 
            -
                   | 
| 15 | 
            +
                  end
         | 
| 16 16 | 
             
                end
         | 
| 17 17 |  | 
| 18 18 | 
             
                get '/'
         | 
| @@ -22,11 +22,11 @@ class BeforeFilterTest < Test::Unit::TestCase | |
| 22 22 | 
             
              end
         | 
| 23 23 |  | 
| 24 24 | 
             
              it "can modify the request" do
         | 
| 25 | 
            -
                mock_app  | 
| 25 | 
            +
                mock_app do
         | 
| 26 26 | 
             
                  get('/foo') { 'foo' }
         | 
| 27 27 | 
             
                  get('/bar') { 'bar' }
         | 
| 28 28 | 
             
                  before { request.path_info = '/bar' }
         | 
| 29 | 
            -
                 | 
| 29 | 
            +
                end
         | 
| 30 30 |  | 
| 31 31 | 
             
                get '/foo'
         | 
| 32 32 | 
             
                assert ok?
         | 
| @@ -34,10 +34,10 @@ class BeforeFilterTest < Test::Unit::TestCase | |
| 34 34 | 
             
              end
         | 
| 35 35 |  | 
| 36 36 | 
             
              it "can modify instance variables available to routes" do
         | 
| 37 | 
            -
                mock_app  | 
| 37 | 
            +
                mock_app do
         | 
| 38 38 | 
             
                  before { @foo = 'bar' }
         | 
| 39 39 | 
             
                  get('/foo') { @foo }
         | 
| 40 | 
            -
                 | 
| 40 | 
            +
                end
         | 
| 41 41 |  | 
| 42 42 | 
             
                get '/foo'
         | 
| 43 43 | 
             
                assert ok?
         | 
| @@ -45,13 +45,13 @@ class BeforeFilterTest < Test::Unit::TestCase | |
| 45 45 | 
             
              end
         | 
| 46 46 |  | 
| 47 47 | 
             
              it "allows redirects" do
         | 
| 48 | 
            -
                mock_app  | 
| 48 | 
            +
                mock_app do
         | 
| 49 49 | 
             
                  before { redirect '/bar' }
         | 
| 50 50 | 
             
                  get('/foo') do
         | 
| 51 51 | 
             
                    fail 'before block should have halted processing'
         | 
| 52 52 | 
             
                    'ORLY?!'
         | 
| 53 53 | 
             
                  end
         | 
| 54 | 
            -
                 | 
| 54 | 
            +
                end
         | 
| 55 55 |  | 
| 56 56 | 
             
                get '/foo'
         | 
| 57 57 | 
             
                assert redirect?
         | 
| @@ -60,13 +60,13 @@ class BeforeFilterTest < Test::Unit::TestCase | |
| 60 60 | 
             
              end
         | 
| 61 61 |  | 
| 62 62 | 
             
              it "does not modify the response with its return value" do
         | 
| 63 | 
            -
                mock_app  | 
| 63 | 
            +
                mock_app do
         | 
| 64 64 | 
             
                  before { 'Hello World!' }
         | 
| 65 | 
            -
                  get | 
| 65 | 
            +
                  get('/foo') do
         | 
| 66 66 | 
             
                    assert_equal [], response.body
         | 
| 67 67 | 
             
                    'cool'
         | 
| 68 68 | 
             
                  end
         | 
| 69 | 
            -
                 | 
| 69 | 
            +
                end
         | 
| 70 70 |  | 
| 71 71 | 
             
                get '/foo'
         | 
| 72 72 | 
             
                assert ok?
         | 
| @@ -74,12 +74,12 @@ class BeforeFilterTest < Test::Unit::TestCase | |
| 74 74 | 
             
              end
         | 
| 75 75 |  | 
| 76 76 | 
             
              it "does modify the response with halt" do
         | 
| 77 | 
            -
                mock_app  | 
| 77 | 
            +
                mock_app do
         | 
| 78 78 | 
             
                  before { halt 302, 'Hi' }
         | 
| 79 79 | 
             
                  get '/foo' do
         | 
| 80 80 | 
             
                    "should not happen"
         | 
| 81 81 | 
             
                  end
         | 
| 82 | 
            -
                 | 
| 82 | 
            +
                end
         | 
| 83 83 |  | 
| 84 84 | 
             
                get '/foo'
         | 
| 85 85 | 
             
                assert_equal 302, response.status
         | 
| @@ -87,10 +87,10 @@ class BeforeFilterTest < Test::Unit::TestCase | |
| 87 87 | 
             
              end
         | 
| 88 88 |  | 
| 89 89 | 
             
              it "gives you access to params" do
         | 
| 90 | 
            -
                mock_app  | 
| 90 | 
            +
                mock_app do
         | 
| 91 91 | 
             
                  before { @foo = params['foo'] }
         | 
| 92 92 | 
             
                  get('/foo') { @foo }
         | 
| 93 | 
            -
                 | 
| 93 | 
            +
                end
         | 
| 94 94 |  | 
| 95 95 | 
             
                get '/foo?foo=cool'
         | 
| 96 96 | 
             
                assert ok?
         | 
| @@ -98,10 +98,10 @@ class BeforeFilterTest < Test::Unit::TestCase | |
| 98 98 | 
             
              end
         | 
| 99 99 |  | 
| 100 100 | 
             
              it "properly unescapes parameters" do
         | 
| 101 | 
            -
                mock_app  | 
| 101 | 
            +
                mock_app do
         | 
| 102 102 | 
             
                  before { @foo = params['foo'] }
         | 
| 103 103 | 
             
                  get('/foo') { @foo }
         | 
| 104 | 
            -
                 | 
| 104 | 
            +
                end
         | 
| 105 105 |  | 
| 106 106 | 
             
                get '/foo?foo=bar%3Abaz%2Fbend'
         | 
| 107 107 | 
             
                assert ok?
         | 
| @@ -112,9 +112,7 @@ class BeforeFilterTest < Test::Unit::TestCase | |
| 112 112 | 
             
                base = Class.new(Sinatra::Base)
         | 
| 113 113 | 
             
                base.before { @foo = 'hello from superclass' }
         | 
| 114 114 |  | 
| 115 | 
            -
                mock_app(base) {
         | 
| 116 | 
            -
                  get('/foo') { @foo }
         | 
| 117 | 
            -
                }
         | 
| 115 | 
            +
                mock_app(base) { get('/foo') { @foo } }
         | 
| 118 116 |  | 
| 119 117 | 
             
                get '/foo'
         | 
| 120 118 | 
             
                assert_equal 'hello from superclass', body
         | 
| @@ -122,11 +120,11 @@ class BeforeFilterTest < Test::Unit::TestCase | |
| 122 120 |  | 
| 123 121 | 
             
              it 'does not run before filter when serving static files' do
         | 
| 124 122 | 
             
                ran_filter = false
         | 
| 125 | 
            -
                mock_app  | 
| 123 | 
            +
                mock_app do
         | 
| 126 124 | 
             
                  before { ran_filter = true }
         | 
| 127 125 | 
             
                  set :static, true
         | 
| 128 126 | 
             
                  set :public_folder, File.dirname(__FILE__)
         | 
| 129 | 
            -
                 | 
| 127 | 
            +
                end
         | 
| 130 128 | 
             
                get "/#{File.basename(__FILE__)}"
         | 
| 131 129 | 
             
                assert ok?
         | 
| 132 130 | 
             
                assert_equal File.read(__FILE__), body
         | 
| @@ -176,14 +174,14 @@ class AfterFilterTest < Test::Unit::TestCase | |
| 176 174 | 
             
                count = 0
         | 
| 177 175 | 
             
                mock_app do
         | 
| 178 176 | 
             
                  get('/') { 'Hello World' }
         | 
| 179 | 
            -
                  after  | 
| 177 | 
            +
                  after do
         | 
| 180 178 | 
             
                    assert_equal 0, count
         | 
| 181 179 | 
             
                    count = 1
         | 
| 182 | 
            -
                   | 
| 183 | 
            -
                  after  | 
| 180 | 
            +
                  end
         | 
| 181 | 
            +
                  after do
         | 
| 184 182 | 
             
                    assert_equal 1, count
         | 
| 185 183 | 
             
                    count = 2
         | 
| 186 | 
            -
                   | 
| 184 | 
            +
                  end
         | 
| 187 185 | 
             
                end
         | 
| 188 186 |  | 
| 189 187 | 
             
                get '/'
         | 
| @@ -193,10 +191,10 @@ class AfterFilterTest < Test::Unit::TestCase | |
| 193 191 | 
             
              end
         | 
| 194 192 |  | 
| 195 193 | 
             
              it "allows redirects" do
         | 
| 196 | 
            -
                mock_app  | 
| 194 | 
            +
                mock_app do
         | 
| 197 195 | 
             
                  get('/foo') { 'ORLY' }
         | 
| 198 196 | 
             
                  after { redirect '/bar' }
         | 
| 199 | 
            -
                 | 
| 197 | 
            +
                end
         | 
| 200 198 |  | 
| 201 199 | 
             
                get '/foo'
         | 
| 202 200 | 
             
                assert redirect?
         | 
| @@ -205,10 +203,10 @@ class AfterFilterTest < Test::Unit::TestCase | |
| 205 203 | 
             
              end
         | 
| 206 204 |  | 
| 207 205 | 
             
              it "does not modify the response with its return value" do
         | 
| 208 | 
            -
                mock_app  | 
| 206 | 
            +
                mock_app do
         | 
| 209 207 | 
             
                  get('/foo') { 'cool' }
         | 
| 210 208 | 
             
                  after { 'Hello World!' }
         | 
| 211 | 
            -
                 | 
| 209 | 
            +
                end
         | 
| 212 210 |  | 
| 213 211 | 
             
                get '/foo'
         | 
| 214 212 | 
             
                assert ok?
         | 
| @@ -216,12 +214,12 @@ class AfterFilterTest < Test::Unit::TestCase | |
| 216 214 | 
             
              end
         | 
| 217 215 |  | 
| 218 216 | 
             
              it "does modify the response with halt" do
         | 
| 219 | 
            -
                mock_app  | 
| 217 | 
            +
                mock_app do
         | 
| 220 218 | 
             
                  get '/foo' do
         | 
| 221 219 | 
             
                    "should not be returned"
         | 
| 222 220 | 
             
                  end
         | 
| 223 221 | 
             
                  after { halt 302, 'Hi' }
         | 
| 224 | 
            -
                 | 
| 222 | 
            +
                end
         | 
| 225 223 |  | 
| 226 224 | 
             
                get '/foo'
         | 
| 227 225 | 
             
                assert_equal 302, response.status
         | 
| @@ -245,11 +243,11 @@ class AfterFilterTest < Test::Unit::TestCase | |
| 245 243 |  | 
| 246 244 | 
             
              it 'does not run after filter when serving static files' do
         | 
| 247 245 | 
             
                ran_filter = false
         | 
| 248 | 
            -
                mock_app  | 
| 246 | 
            +
                mock_app do
         | 
| 249 247 | 
             
                  after { ran_filter = true }
         | 
| 250 248 | 
             
                  set :static, true
         | 
| 251 249 | 
             
                  set :public_folder, File.dirname(__FILE__)
         | 
| 252 | 
            -
                 | 
| 250 | 
            +
                end
         | 
| 253 251 | 
             
                get "/#{File.basename(__FILE__)}"
         | 
| 254 252 | 
             
                assert ok?
         | 
| 255 253 | 
             
                assert_equal File.read(__FILE__), body
         | 
| @@ -308,9 +306,9 @@ class AfterFilterTest < Test::Unit::TestCase | |
| 308 306 | 
             
                  before(:host_name => 'example.com') { ran = true }
         | 
| 309 307 | 
             
                  get('/') { 'welcome' }
         | 
| 310 308 | 
             
                end
         | 
| 311 | 
            -
                get | 
| 309 | 
            +
                get('/', {}, { 'HTTP_HOST' => 'example.org' })
         | 
| 312 310 | 
             
                assert !ran
         | 
| 313 | 
            -
                get | 
| 311 | 
            +
                get('/', {}, { 'HTTP_HOST' => 'example.com' })
         | 
| 314 312 | 
             
                assert ran
         | 
| 315 313 | 
             
              end
         | 
| 316 314 |  | 
| @@ -320,11 +318,11 @@ class AfterFilterTest < Test::Unit::TestCase | |
| 320 318 | 
             
                  before('/foo', :host_name => 'example.com') { ran = true }
         | 
| 321 319 | 
             
                  get('/') { 'welcome' }
         | 
| 322 320 | 
             
                end
         | 
| 323 | 
            -
                get | 
| 321 | 
            +
                get('/', {}, { 'HTTP_HOST' => 'example.com' })
         | 
| 324 322 | 
             
                assert !ran
         | 
| 325 | 
            -
                get | 
| 323 | 
            +
                get('/foo', {}, { 'HTTP_HOST' => 'example.org' })
         | 
| 326 324 | 
             
                assert !ran
         | 
| 327 | 
            -
                get | 
| 325 | 
            +
                get('/foo', {}, { 'HTTP_HOST' => 'example.com' })
         | 
| 328 326 | 
             
                assert ran
         | 
| 329 327 | 
             
              end
         | 
| 330 328 |  | 
| @@ -334,9 +332,9 @@ class AfterFilterTest < Test::Unit::TestCase | |
| 334 332 | 
             
                  after(:host_name => 'example.com') { ran = true }
         | 
| 335 333 | 
             
                  get('/') { 'welcome' }
         | 
| 336 334 | 
             
                end
         | 
| 337 | 
            -
                get | 
| 335 | 
            +
                get('/', {}, { 'HTTP_HOST' => 'example.org' })
         | 
| 338 336 | 
             
                assert !ran
         | 
| 339 | 
            -
                get | 
| 337 | 
            +
                get('/', {}, { 'HTTP_HOST' => 'example.com' })
         | 
| 340 338 | 
             
                assert ran
         | 
| 341 339 | 
             
              end
         | 
| 342 340 |  | 
| @@ -346,11 +344,11 @@ class AfterFilterTest < Test::Unit::TestCase | |
| 346 344 | 
             
                  after('/foo', :host_name => 'example.com') { ran = true }
         | 
| 347 345 | 
             
                  get('/') { 'welcome' }
         | 
| 348 346 | 
             
                end
         | 
| 349 | 
            -
                get | 
| 347 | 
            +
                get('/', {}, { 'HTTP_HOST' => 'example.com' })
         | 
| 350 348 | 
             
                assert !ran
         | 
| 351 | 
            -
                get | 
| 349 | 
            +
                get('/foo', {}, { 'HTTP_HOST' => 'example.org' })
         | 
| 352 350 | 
             
                assert !ran
         | 
| 353 | 
            -
                get | 
| 351 | 
            +
                get('/foo', {}, { 'HTTP_HOST' => 'example.com' })
         | 
| 354 352 | 
             
                assert ran
         | 
| 355 353 | 
             
              end
         | 
| 356 354 |  | 
| @@ -360,9 +358,9 @@ class AfterFilterTest < Test::Unit::TestCase | |
| 360 358 | 
             
                  before(:user_agent => /foo/) { ran = true }
         | 
| 361 359 | 
             
                  get('/') { 'welcome' }
         | 
| 362 360 | 
             
                end
         | 
| 363 | 
            -
                get | 
| 361 | 
            +
                get('/', {}, { 'HTTP_USER_AGENT' => 'bar' })
         | 
| 364 362 | 
             
                assert !ran
         | 
| 365 | 
            -
                get | 
| 363 | 
            +
                get('/', {}, { 'HTTP_USER_AGENT' => 'foo' })
         | 
| 366 364 | 
             
                assert ran
         | 
| 367 365 | 
             
              end
         | 
| 368 366 |  | 
| @@ -372,11 +370,11 @@ class AfterFilterTest < Test::Unit::TestCase | |
| 372 370 | 
             
                  before('/foo', :user_agent => /foo/) { ran = true }
         | 
| 373 371 | 
             
                  get('/') { 'welcome' }
         | 
| 374 372 | 
             
                end
         | 
| 375 | 
            -
                get | 
| 373 | 
            +
                get('/', {}, { 'HTTP_USER_AGENT' => 'foo' })
         | 
| 376 374 | 
             
                assert !ran
         | 
| 377 | 
            -
                get | 
| 375 | 
            +
                get('/foo', {}, { 'HTTP_USER_AGENT' => 'bar' })
         | 
| 378 376 | 
             
                assert !ran
         | 
| 379 | 
            -
                get | 
| 377 | 
            +
                get('/foo', {}, { 'HTTP_USER_AGENT' => 'foo' })
         | 
| 380 378 | 
             
                assert ran
         | 
| 381 379 | 
             
              end
         | 
| 382 380 |  | 
| @@ -406,9 +404,9 @@ class AfterFilterTest < Test::Unit::TestCase | |
| 406 404 | 
             
                  after(:user_agent => /foo/) { ran = true }
         | 
| 407 405 | 
             
                  get('/') { 'welcome' }
         | 
| 408 406 | 
             
                end
         | 
| 409 | 
            -
                get | 
| 407 | 
            +
                get('/', {}, { 'HTTP_USER_AGENT' => 'bar' })
         | 
| 410 408 | 
             
                assert !ran
         | 
| 411 | 
            -
                get | 
| 409 | 
            +
                get('/', {}, { 'HTTP_USER_AGENT' => 'foo' })
         | 
| 412 410 | 
             
                assert ran
         | 
| 413 411 | 
             
              end
         | 
| 414 412 |  | 
| @@ -418,11 +416,22 @@ class AfterFilterTest < Test::Unit::TestCase | |
| 418 416 | 
             
                  after('/foo', :user_agent => /foo/) { ran = true }
         | 
| 419 417 | 
             
                  get('/') { 'welcome' }
         | 
| 420 418 | 
             
                end
         | 
| 421 | 
            -
                get | 
| 419 | 
            +
                get('/', {}, { 'HTTP_USER_AGENT' => 'foo' })
         | 
| 422 420 | 
             
                assert !ran
         | 
| 423 | 
            -
                get | 
| 421 | 
            +
                get('/foo', {}, { 'HTTP_USER_AGENT' => 'bar' })
         | 
| 424 422 | 
             
                assert !ran
         | 
| 425 | 
            -
                get | 
| 423 | 
            +
                get('/foo', {}, { 'HTTP_USER_AGENT' => 'foo' })
         | 
| 426 424 | 
             
                assert ran
         | 
| 427 425 | 
             
              end
         | 
| 426 | 
            +
             | 
| 427 | 
            +
              it 'only triggeres provides condition if conforms with current Content-Type' do
         | 
| 428 | 
            +
                mock_app do
         | 
| 429 | 
            +
                  before(:provides => :txt)  { @type = 'txt' }
         | 
| 430 | 
            +
                  before(:provides => :html) { @type = 'html' }
         | 
| 431 | 
            +
                  get('/') { @type }
         | 
| 432 | 
            +
                end
         | 
| 433 | 
            +
             | 
| 434 | 
            +
                get('/', {}, { 'HTTP_ACCEPT' => '*/*' })
         | 
| 435 | 
            +
                assert_body 'txt'
         | 
| 436 | 
            +
              end
         | 
| 428 437 | 
             
            end
         | 
    
        data/test/haml_test.rb
    CHANGED
    
    | @@ -5,10 +5,10 @@ require 'haml' | |
| 5 5 |  | 
| 6 6 | 
             
            class HAMLTest < Test::Unit::TestCase
         | 
| 7 7 | 
             
              def haml_app(&block)
         | 
| 8 | 
            -
                mock_app  | 
| 8 | 
            +
                mock_app do
         | 
| 9 9 | 
             
                  set :views, File.dirname(__FILE__) + '/views'
         | 
| 10 | 
            -
                  get | 
| 11 | 
            -
                 | 
| 10 | 
            +
                  get('/', &block)
         | 
| 11 | 
            +
                end
         | 
| 12 12 | 
             
                get '/'
         | 
| 13 13 | 
             
              end
         | 
| 14 14 |  | 
| @@ -25,35 +25,29 @@ class HAMLTest < Test::Unit::TestCase | |
| 25 25 | 
             
              end
         | 
| 26 26 |  | 
| 27 27 | 
             
              it "renders with inline layouts" do
         | 
| 28 | 
            -
                mock_app  | 
| 28 | 
            +
                mock_app do
         | 
| 29 29 | 
             
                  layout { %q(%h1= 'THIS. IS. ' + yield.upcase) }
         | 
| 30 30 | 
             
                  get('/') { haml '%em Sparta' }
         | 
| 31 | 
            -
                 | 
| 31 | 
            +
                end
         | 
| 32 32 | 
             
                get '/'
         | 
| 33 33 | 
             
                assert ok?
         | 
| 34 34 | 
             
                assert_equal "<h1>THIS. IS. <EM>SPARTA</EM></h1>\n", body
         | 
| 35 35 | 
             
              end
         | 
| 36 36 |  | 
| 37 37 | 
             
              it "renders with file layouts" do
         | 
| 38 | 
            -
                haml_app {
         | 
| 39 | 
            -
                  haml 'Hello World', :layout => :layout2
         | 
| 40 | 
            -
                }
         | 
| 38 | 
            +
                haml_app { haml 'Hello World', :layout => :layout2 }
         | 
| 41 39 | 
             
                assert ok?
         | 
| 42 40 | 
             
                assert_equal "<h1>HAML Layout!</h1>\n<p>Hello World</p>\n", body
         | 
| 43 41 | 
             
              end
         | 
| 44 42 |  | 
| 45 43 | 
             
              it "raises error if template not found" do
         | 
| 46 | 
            -
                mock_app {
         | 
| 47 | 
            -
                  get('/') { haml :no_such_template }
         | 
| 48 | 
            -
                }
         | 
| 44 | 
            +
                mock_app { get('/') { haml :no_such_template } }
         | 
| 49 45 | 
             
                assert_raise(Errno::ENOENT) { get('/') }
         | 
| 50 46 | 
             
              end
         | 
| 51 47 |  | 
| 52 48 | 
             
              it "passes HAML options to the Haml engine" do
         | 
| 53 49 | 
             
                mock_app {
         | 
| 54 | 
            -
                  get | 
| 55 | 
            -
                    haml "!!!\n%h1 Hello World", :format => :html5
         | 
| 56 | 
            -
                  end
         | 
| 50 | 
            +
                  get('/') { haml "!!!\n%h1 Hello World", :format => :html5 }
         | 
| 57 51 | 
             
                }
         | 
| 58 52 | 
             
                get '/'
         | 
| 59 53 | 
             
                assert ok?
         | 
| @@ -61,27 +55,23 @@ class HAMLTest < Test::Unit::TestCase | |
| 61 55 | 
             
              end
         | 
| 62 56 |  | 
| 63 57 | 
             
              it "passes default HAML options to the Haml engine" do
         | 
| 64 | 
            -
                mock_app  | 
| 58 | 
            +
                mock_app do
         | 
| 65 59 | 
             
                  set :haml, {:format => :html5}
         | 
| 66 | 
            -
                  get | 
| 67 | 
            -
             | 
| 68 | 
            -
                  end
         | 
| 69 | 
            -
                }
         | 
| 60 | 
            +
                  get('/') { haml "!!!\n%h1 Hello World" }
         | 
| 61 | 
            +
                end
         | 
| 70 62 | 
             
                get '/'
         | 
| 71 63 | 
             
                assert ok?
         | 
| 72 64 | 
             
                assert_equal "<!DOCTYPE html>\n<h1>Hello World</h1>\n", body
         | 
| 73 65 | 
             
              end
         | 
| 74 66 |  | 
| 75 67 | 
             
              it "merges the default HAML options with the overrides and passes them to the Haml engine" do
         | 
| 76 | 
            -
                mock_app  | 
| 68 | 
            +
                mock_app do
         | 
| 77 69 | 
             
                  set :haml, {:format => :html5, :attr_wrapper => '"'} # default HAML attr are <tag attr='single-quoted'>
         | 
| 78 | 
            -
                  get | 
| 79 | 
            -
             | 
| 80 | 
            -
                  end
         | 
| 81 | 
            -
                  get '/html4' do
         | 
| 70 | 
            +
                  get('/') { haml "!!!\n%h1{:class => :header} Hello World" }
         | 
| 71 | 
            +
                  get('/html4') {
         | 
| 82 72 | 
             
                    haml "!!!\n%h1{:class => 'header'} Hello World", :format => :html4
         | 
| 83 | 
            -
                   | 
| 84 | 
            -
                 | 
| 73 | 
            +
                  }
         | 
| 74 | 
            +
                end
         | 
| 85 75 | 
             
                get '/'
         | 
| 86 76 | 
             
                assert ok?
         | 
| 87 77 | 
             
                assert_equal "<!DOCTYPE html>\n<h1 class=\"header\">Hello World</h1>\n", body
         | 
| @@ -94,6 +84,24 @@ class HAMLTest < Test::Unit::TestCase | |
| 94 84 | 
             
                haml_app { haml "= foo", :locals => { :foo => 'bar' }}
         | 
| 95 85 | 
             
                assert_equal "bar\n", body
         | 
| 96 86 | 
             
              end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
              it "can rendere 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
         | 
| 97 105 | 
             
            end
         | 
| 98 106 |  | 
| 99 107 | 
             
            rescue LoadError
         |