adamwiggins-sinatra 0.8.9 → 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 +8 -7
 - data/CHANGES +211 -1
 - data/LICENSE +1 -1
 - data/README.rdoc +183 -139
 - data/Rakefile +20 -81
 - data/lib/sinatra.rb +5 -1
 - data/lib/sinatra/base.rb +569 -278
 - data/lib/sinatra/main.rb +12 -25
 - data/lib/sinatra/showexceptions.rb +303 -0
 - data/sinatra.gemspec +20 -44
 - data/test/base_test.rb +140 -52
 - data/test/builder_test.rb +14 -17
 - data/test/contest.rb +64 -0
 - data/test/erb_test.rb +42 -16
 - data/test/extensions_test.rb +100 -0
 - data/test/filter_test.rb +85 -13
 - data/test/haml_test.rb +39 -21
 - data/test/helper.rb +76 -0
 - data/test/helpers_test.rb +219 -84
 - data/test/mapped_error_test.rb +168 -146
 - data/test/middleware_test.rb +22 -17
 - data/test/options_test.rb +323 -54
 - data/test/render_backtrace_test.rb +145 -0
 - data/test/request_test.rb +28 -6
 - data/test/response_test.rb +42 -0
 - data/test/result_test.rb +27 -21
 - data/test/route_added_hook_test.rb +59 -0
 - data/test/routing_test.rb +558 -77
 - data/test/sass_test.rb +52 -13
 - data/test/server_test.rb +47 -0
 - data/test/sinatra_test.rb +3 -5
 - data/test/static_test.rb +57 -30
 - data/test/templates_test.rb +74 -25
 - data/test/views/error.builder +3 -0
 - data/test/views/error.erb +3 -0
 - data/test/views/error.haml +3 -0
 - data/test/views/error.sass +2 -0
 - data/test/views/foo/hello.test +1 -0
 - metadata +50 -46
 - data/compat/app_test.rb +0 -300
 - data/compat/application_test.rb +0 -334
 - data/compat/builder_test.rb +0 -101
 - data/compat/custom_error_test.rb +0 -62
 - data/compat/erb_test.rb +0 -136
 - data/compat/events_test.rb +0 -75
 - data/compat/filter_test.rb +0 -30
 - data/compat/haml_test.rb +0 -233
 - data/compat/helper.rb +0 -21
 - data/compat/mapped_error_test.rb +0 -72
 - data/compat/pipeline_test.rb +0 -71
 - data/compat/public/foo.xml +0 -1
 - data/compat/sass_test.rb +0 -57
 - data/compat/sessions_test.rb +0 -39
 - data/compat/streaming_test.rb +0 -121
 - 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 -239
 - data/lib/sinatra/test.rb +0 -112
 - data/lib/sinatra/test/rspec.rb +0 -2
 - data/lib/sinatra/test/spec.rb +0 -2
 - data/lib/sinatra/test/unit.rb +0 -11
 - data/test/reload_test.rb +0 -65
 
    
        data/compat/views/foo.builder
    DELETED
    
    | 
         @@ -1 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            xml.exclaim "You rock #{@name}!"
         
     | 
    
        data/compat/views/foo.erb
    DELETED
    
    | 
         @@ -1 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            You rock <%= @name %>!
         
     | 
    
        data/compat/views/foo.haml
    DELETED
    
    | 
         @@ -1 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            == You rock #{@name}!
         
     | 
    
        data/compat/views/foo.sass
    DELETED
    
    
    
        data/compat/views/foo_layout.erb
    DELETED
    
    
| 
         @@ -1 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            xml.this "is foo!"
         
     | 
| 
         @@ -1 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            This is foo!
         
     | 
| 
         @@ -1 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            This is foo!
         
     | 
| 
         @@ -1 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            x <%= yield %> x 
         
     | 
| 
         @@ -1 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            == x #{yield} x
         
     | 
| 
         @@ -1 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            xml.foo "No Layout!"
         
     | 
| 
         @@ -1 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            %h1 No Layout!
         
     | 
    
        data/lib/sinatra/compat.rb
    DELETED
    
    | 
         @@ -1,239 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # Sinatra 0.3.x compatibility module.
         
     | 
| 
       2 
     | 
    
         
            -
            #
         
     | 
| 
       3 
     | 
    
         
            -
            # The following code makes Sinatra 0.9.x compatible with Sinatra 0.3.x to
         
     | 
| 
       4 
     | 
    
         
            -
            # ease the transition to the final 1.0 release. Everything defined in this
         
     | 
| 
       5 
     | 
    
         
            -
            # file will be removed for the 1.0 release.
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            require 'ostruct'
         
     | 
| 
       8 
     | 
    
         
            -
            require 'sinatra/base'
         
     | 
| 
       9 
     | 
    
         
            -
            require 'sinatra/main'
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
            # Like Kernel#warn but outputs the location that triggered the warning.
         
     | 
| 
       12 
     | 
    
         
            -
            def sinatra_warn(*message)
         
     | 
| 
       13 
     | 
    
         
            -
              line = caller.
         
     | 
| 
       14 
     | 
    
         
            -
                detect { |line| line !~ /(?:lib\/sinatra\/|__DELEGATE__)/ }.
         
     | 
| 
       15 
     | 
    
         
            -
                sub(/:in .*/, '')
         
     | 
| 
       16 
     | 
    
         
            -
              warn "#{line}: warning: #{message.join(' ')}"
         
     | 
| 
       17 
     | 
    
         
            -
            end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
            # Rack now supports evented and swiftiplied mongrels through separate
         
     | 
| 
       20 
     | 
    
         
            -
            # handler.
         
     | 
| 
       21 
     | 
    
         
            -
            if ENV['SWIFT']
         
     | 
| 
       22 
     | 
    
         
            -
              sinatra_warn 'the SWIFT environment variable is deprecated;',
         
     | 
| 
       23 
     | 
    
         
            -
                'use Rack::Handler::SwiftipliedMongrel instead.'
         
     | 
| 
       24 
     | 
    
         
            -
              require 'swiftcore/swiftiplied_mongrel'
         
     | 
| 
       25 
     | 
    
         
            -
              puts "Using Swiftiplied Mongrel"
         
     | 
| 
       26 
     | 
    
         
            -
            elsif ENV['EVENT']
         
     | 
| 
       27 
     | 
    
         
            -
              sinatra_warn 'the EVENT environment variable is deprecated;',
         
     | 
| 
       28 
     | 
    
         
            -
                'use Rack::Handler::EventedMongrel instead.'
         
     | 
| 
       29 
     | 
    
         
            -
              require 'swiftcore/evented_mongrel'
         
     | 
| 
       30 
     | 
    
         
            -
              puts "Using Evented Mongrel"
         
     | 
| 
       31 
     | 
    
         
            -
            end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
            # Make Rack 0.9.0 backward compatibile with 0.4.0 mime types. This isn't
         
     | 
| 
       34 
     | 
    
         
            -
            # technically a Sinatra issue but many Sinatra apps access the old
         
     | 
| 
       35 
     | 
    
         
            -
            # MIME_TYPES constants due to Sinatra example code.
         
     | 
| 
       36 
     | 
    
         
            -
            require 'rack/file'
         
     | 
| 
       37 
     | 
    
         
            -
            class Rack::File
         
     | 
| 
       38 
     | 
    
         
            -
              def self.const_missing(const_name)
         
     | 
| 
       39 
     | 
    
         
            -
                if const_name == :MIME_TYPES
         
     | 
| 
       40 
     | 
    
         
            -
                  hash = Hash.new { |hash,key| Rack::Mime::MIME_TYPES[".#{key}"] }
         
     | 
| 
       41 
     | 
    
         
            -
                  const_set :MIME_TYPES, hash
         
     | 
| 
       42 
     | 
    
         
            -
                  sinatra_warn 'Rack::File::MIME_TYPES is deprecated; use Rack::Mime instead.'
         
     | 
| 
       43 
     | 
    
         
            -
                  hash
         
     | 
| 
       44 
     | 
    
         
            -
                else
         
     | 
| 
       45 
     | 
    
         
            -
                  super
         
     | 
| 
       46 
     | 
    
         
            -
                end
         
     | 
| 
       47 
     | 
    
         
            -
              end
         
     | 
| 
       48 
     | 
    
         
            -
            end
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
            module Sinatra
         
     | 
| 
       51 
     | 
    
         
            -
              module Compat
         
     | 
| 
       52 
     | 
    
         
            -
              end
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
              # The ServerError exception is deprecated. Any exception is considered an
         
     | 
| 
       55 
     | 
    
         
            -
              # internal server error.
         
     | 
| 
       56 
     | 
    
         
            -
              class ServerError < RuntimeError
         
     | 
| 
       57 
     | 
    
         
            -
                def initialize(*args, &block)
         
     | 
| 
       58 
     | 
    
         
            -
                  sinatra_warn 'Sinatra::ServerError is deprecated;',
         
     | 
| 
       59 
     | 
    
         
            -
                    'use another exception, error, or Kernel#fail instead.'
         
     | 
| 
       60 
     | 
    
         
            -
                end
         
     | 
| 
       61 
     | 
    
         
            -
                def code ; 500 ; end
         
     | 
| 
       62 
     | 
    
         
            -
              end
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
              class Default < Base
         
     | 
| 
       65 
     | 
    
         
            -
                def self.const_missing(const_name)
         
     | 
| 
       66 
     | 
    
         
            -
                  if const_name == :FORWARD_METHODS
         
     | 
| 
       67 
     | 
    
         
            -
                    sinatra_warn 'Sinatra::Application::FORWARD_METHODS is deprecated;',
         
     | 
| 
       68 
     | 
    
         
            -
                      'use Sinatra::Delegator::METHODS instead.'
         
     | 
| 
       69 
     | 
    
         
            -
                    const_set :FORWARD_METHODS, Sinatra::Delegator::METHODS
         
     | 
| 
       70 
     | 
    
         
            -
                    Sinatra::Delegator::METHODS
         
     | 
| 
       71 
     | 
    
         
            -
                  else
         
     | 
| 
       72 
     | 
    
         
            -
                    super
         
     | 
| 
       73 
     | 
    
         
            -
                  end
         
     | 
| 
       74 
     | 
    
         
            -
                end
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
                # Deprecated. Use: response['Header-Name']
         
     | 
| 
       77 
     | 
    
         
            -
                def headers(header=nil)
         
     | 
| 
       78 
     | 
    
         
            -
                  sinatra_warn "The 'headers' method is deprecated; use 'response' instead."
         
     | 
| 
       79 
     | 
    
         
            -
                  response.headers.merge!(header) if header
         
     | 
| 
       80 
     | 
    
         
            -
                  response.headers
         
     | 
| 
       81 
     | 
    
         
            -
                end
         
     | 
| 
       82 
     | 
    
         
            -
                alias :header :headers
         
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
     | 
    
         
            -
                # Deprecated. Use: halt
         
     | 
| 
       85 
     | 
    
         
            -
                def stop(*args, &block)
         
     | 
| 
       86 
     | 
    
         
            -
                  sinatra_warn "The 'stop' method is deprecated; use 'halt' instead."
         
     | 
| 
       87 
     | 
    
         
            -
                  halt(*args, &block)
         
     | 
| 
       88 
     | 
    
         
            -
                end
         
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
       90 
     | 
    
         
            -
                # Deprecated. Use: etag
         
     | 
| 
       91 
     | 
    
         
            -
                def entity_tag(*args, &block)
         
     | 
| 
       92 
     | 
    
         
            -
                  sinatra_warn "The 'entity_tag' method is deprecated; use 'etag' instead."
         
     | 
| 
       93 
     | 
    
         
            -
                  etag(*args, &block)
         
     | 
| 
       94 
     | 
    
         
            -
                end
         
     | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
       96 
     | 
    
         
            -
                # The :disposition option is deprecated; use: #attachment. This method
         
     | 
| 
       97 
     | 
    
         
            -
                # setting the Content-Transfer-Encoding header is deprecated.
         
     | 
| 
       98 
     | 
    
         
            -
                #--
         
     | 
| 
       99 
     | 
    
         
            -
                # TODO deprecation warning for :disposition argument.
         
     | 
| 
       100 
     | 
    
         
            -
                def send_file(path, opts={})
         
     | 
| 
       101 
     | 
    
         
            -
                  opts[:disposition] = 'attachment' if !opts.key?(:disposition)
         
     | 
| 
       102 
     | 
    
         
            -
                  attachment opts[:filename] || path if opts[:filename] || opts[:disposition]
         
     | 
| 
       103 
     | 
    
         
            -
                  response['Content-Transfer-Encoding'] = 'binary' if opts[:disposition]
         
     | 
| 
       104 
     | 
    
         
            -
                  super(path, opts)
         
     | 
| 
       105 
     | 
    
         
            -
                end
         
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
       107 
     | 
    
         
            -
                # Throwing halt with a Symbol and the to_result convention are
         
     | 
| 
       108 
     | 
    
         
            -
                # deprecated. Override the invoke method to detect those types of return
         
     | 
| 
       109 
     | 
    
         
            -
                # values.
         
     | 
| 
       110 
     | 
    
         
            -
                def invoke(handler)
         
     | 
| 
       111 
     | 
    
         
            -
                  res = super
         
     | 
| 
       112 
     | 
    
         
            -
                  case
         
     | 
| 
       113 
     | 
    
         
            -
                  when res.kind_of?(Symbol)
         
     | 
| 
       114 
     | 
    
         
            -
                    sinatra_warn "Invoking the :#{res} helper by returning a Symbol is deprecated;",
         
     | 
| 
       115 
     | 
    
         
            -
                      "call the helper directly instead."
         
     | 
| 
       116 
     | 
    
         
            -
                    @response.body = __send__(res)
         
     | 
| 
       117 
     | 
    
         
            -
                  when res.respond_to?(:to_result)
         
     | 
| 
       118 
     | 
    
         
            -
                    sinatra_warn "The to_result convention is deprecated."
         
     | 
| 
       119 
     | 
    
         
            -
                    @response.body = res.to_result(self)
         
     | 
| 
       120 
     | 
    
         
            -
                  end
         
     | 
| 
       121 
     | 
    
         
            -
                  res
         
     | 
| 
       122 
     | 
    
         
            -
                end
         
     | 
| 
       123 
     | 
    
         
            -
             
     | 
| 
       124 
     | 
    
         
            -
                def options
         
     | 
| 
       125 
     | 
    
         
            -
                  Options.new(self.class)
         
     | 
| 
       126 
     | 
    
         
            -
                end
         
     | 
| 
       127 
     | 
    
         
            -
             
     | 
| 
       128 
     | 
    
         
            -
                class Options < Struct.new(:target) #:nodoc:
         
     | 
| 
       129 
     | 
    
         
            -
                  def method_missing(name, *args, &block)
         
     | 
| 
       130 
     | 
    
         
            -
                    if target.respond_to?(name)
         
     | 
| 
       131 
     | 
    
         
            -
                      target.__send__(name, *args, &block)
         
     | 
| 
       132 
     | 
    
         
            -
                    elsif args.empty? && name.to_s !~ /=$/
         
     | 
| 
       133 
     | 
    
         
            -
                      sinatra_warn 'accessing undefined options will raise a NameError in Sinatra 1.0'
         
     | 
| 
       134 
     | 
    
         
            -
                      nil
         
     | 
| 
       135 
     | 
    
         
            -
                    else
         
     | 
| 
       136 
     | 
    
         
            -
                      super
         
     | 
| 
       137 
     | 
    
         
            -
                    end
         
     | 
| 
       138 
     | 
    
         
            -
                  end
         
     | 
| 
       139 
     | 
    
         
            -
                end
         
     | 
| 
       140 
     | 
    
         
            -
             
     | 
| 
       141 
     | 
    
         
            -
                class << self
         
     | 
| 
       142 
     | 
    
         
            -
                  # Deprecated. Options are stored directly on the class object.
         
     | 
| 
       143 
     | 
    
         
            -
                  def options
         
     | 
| 
       144 
     | 
    
         
            -
                    sinatra_warn "The 'options' class method is deprecated; use 'self' instead."
         
     | 
| 
       145 
     | 
    
         
            -
                    Options.new(self)
         
     | 
| 
       146 
     | 
    
         
            -
                  end
         
     | 
| 
       147 
     | 
    
         
            -
             
     | 
| 
       148 
     | 
    
         
            -
                  # Deprecated. Use: configure
         
     | 
| 
       149 
     | 
    
         
            -
                  def configures(*args, &block)
         
     | 
| 
       150 
     | 
    
         
            -
                    sinatra_warn "The 'configures' method is deprecated; use 'configure' instead."
         
     | 
| 
       151 
     | 
    
         
            -
                    configure(*args, &block)
         
     | 
| 
       152 
     | 
    
         
            -
                  end
         
     | 
| 
       153 
     | 
    
         
            -
             
     | 
| 
       154 
     | 
    
         
            -
                  # Deprecated. Use: set
         
     | 
| 
       155 
     | 
    
         
            -
                  def default_options
         
     | 
| 
       156 
     | 
    
         
            -
                    sinatra_warn "Sinatra::Application.default_options is deprecated; use 'set' instead."
         
     | 
| 
       157 
     | 
    
         
            -
                    fake = lambda { |options| set(options) }
         
     | 
| 
       158 
     | 
    
         
            -
                    def fake.merge!(options) ; call(options) ; end
         
     | 
| 
       159 
     | 
    
         
            -
                    fake
         
     | 
| 
       160 
     | 
    
         
            -
                  end
         
     | 
| 
       161 
     | 
    
         
            -
             
     | 
| 
       162 
     | 
    
         
            -
                  # Deprecated. Use: set
         
     | 
| 
       163 
     | 
    
         
            -
                  def set_option(*args, &block)
         
     | 
| 
       164 
     | 
    
         
            -
                    sinatra_warn "The 'set_option' method is deprecated; use 'set' instead."
         
     | 
| 
       165 
     | 
    
         
            -
                    set(*args, &block)
         
     | 
| 
       166 
     | 
    
         
            -
                  end
         
     | 
| 
       167 
     | 
    
         
            -
             
     | 
| 
       168 
     | 
    
         
            -
                  def set_options(*args, &block)
         
     | 
| 
       169 
     | 
    
         
            -
                    sinatra_warn "The 'set_options' method is deprecated; use 'set' instead."
         
     | 
| 
       170 
     | 
    
         
            -
                    set(*args, &block)
         
     | 
| 
       171 
     | 
    
         
            -
                  end
         
     | 
| 
       172 
     | 
    
         
            -
             
     | 
| 
       173 
     | 
    
         
            -
                  # Deprecated. Use: set :environment, ENV
         
     | 
| 
       174 
     | 
    
         
            -
                  def env=(value)
         
     | 
| 
       175 
     | 
    
         
            -
                    sinatra_warn "The :env option is deprecated; use :environment instead."
         
     | 
| 
       176 
     | 
    
         
            -
                    set :environment, value
         
     | 
| 
       177 
     | 
    
         
            -
                  end
         
     | 
| 
       178 
     | 
    
         
            -
             
     | 
| 
       179 
     | 
    
         
            -
                  # Deprecated. Use: options.environment
         
     | 
| 
       180 
     | 
    
         
            -
                  def env
         
     | 
| 
       181 
     | 
    
         
            -
                    sinatra_warn "The :env option is deprecated; use :environment instead."
         
     | 
| 
       182 
     | 
    
         
            -
                    environment
         
     | 
| 
       183 
     | 
    
         
            -
                  end
         
     | 
| 
       184 
     | 
    
         
            -
                end
         
     | 
| 
       185 
     | 
    
         
            -
             
     | 
| 
       186 
     | 
    
         
            -
                # Deprecated. Missing messages are no longer delegated to @response.
         
     | 
| 
       187 
     | 
    
         
            -
                def method_missing(name, *args, &b)
         
     | 
| 
       188 
     | 
    
         
            -
                  if @response.respond_to?(name)
         
     | 
| 
       189 
     | 
    
         
            -
                    sinatra_warn "The '#{name}' method is deprecated; use 'response.#{name}' instead."
         
     | 
| 
       190 
     | 
    
         
            -
                    @response.send(name, *args, &b)
         
     | 
| 
       191 
     | 
    
         
            -
                  else
         
     | 
| 
       192 
     | 
    
         
            -
                    super
         
     | 
| 
       193 
     | 
    
         
            -
                  end
         
     | 
| 
       194 
     | 
    
         
            -
                end
         
     | 
| 
       195 
     | 
    
         
            -
              end
         
     | 
| 
       196 
     | 
    
         
            -
             
     | 
| 
       197 
     | 
    
         
            -
              class << self
         
     | 
| 
       198 
     | 
    
         
            -
                # Deprecated. Use: Sinatra::Application
         
     | 
| 
       199 
     | 
    
         
            -
                def application
         
     | 
| 
       200 
     | 
    
         
            -
                  sinatra_warn "Sinatra.application is deprecated; use Sinatra::Application instead."
         
     | 
| 
       201 
     | 
    
         
            -
                  Sinatra::Application
         
     | 
| 
       202 
     | 
    
         
            -
                end
         
     | 
| 
       203 
     | 
    
         
            -
             
     | 
| 
       204 
     | 
    
         
            -
                # Deprecated. Use: Sinatra::Application.reset!
         
     | 
| 
       205 
     | 
    
         
            -
                def application=(value)
         
     | 
| 
       206 
     | 
    
         
            -
                  raise ArgumentError unless value.nil?
         
     | 
| 
       207 
     | 
    
         
            -
                  sinatra_warn "Setting Sinatra.application to nil is deprecated; create a new instance instead."
         
     | 
| 
       208 
     | 
    
         
            -
                  Sinatra.class_eval do
         
     | 
| 
       209 
     | 
    
         
            -
                    remove_const :Application
         
     | 
| 
       210 
     | 
    
         
            -
                    const_set :Application, Class.new(Sinatra::Default)
         
     | 
| 
       211 
     | 
    
         
            -
                  end
         
     | 
| 
       212 
     | 
    
         
            -
                end
         
     | 
| 
       213 
     | 
    
         
            -
             
     | 
| 
       214 
     | 
    
         
            -
                def build_application
         
     | 
| 
       215 
     | 
    
         
            -
                  sinatra_warn "Sinatra.build_application is deprecated; use Sinatra::Application instead."
         
     | 
| 
       216 
     | 
    
         
            -
                  Sinatra::Application
         
     | 
| 
       217 
     | 
    
         
            -
                end
         
     | 
| 
       218 
     | 
    
         
            -
             
     | 
| 
       219 
     | 
    
         
            -
                def options
         
     | 
| 
       220 
     | 
    
         
            -
                  sinatra_warn "Sinatra.options is deprecated; use Sinatra::Application.option_name instead."
         
     | 
| 
       221 
     | 
    
         
            -
                  Sinatra::Application.options
         
     | 
| 
       222 
     | 
    
         
            -
                end
         
     | 
| 
       223 
     | 
    
         
            -
             
     | 
| 
       224 
     | 
    
         
            -
                def port
         
     | 
| 
       225 
     | 
    
         
            -
                  sinatra_warn "Sinatra.port is deprecated; use Sinatra::Application.port instead."
         
     | 
| 
       226 
     | 
    
         
            -
                  options.port
         
     | 
| 
       227 
     | 
    
         
            -
                end
         
     | 
| 
       228 
     | 
    
         
            -
             
     | 
| 
       229 
     | 
    
         
            -
                def host
         
     | 
| 
       230 
     | 
    
         
            -
                  sinatra_warn "Sinatra.host is deprecated; use Sinatra::Application.host instead."
         
     | 
| 
       231 
     | 
    
         
            -
                  options.host
         
     | 
| 
       232 
     | 
    
         
            -
                end
         
     | 
| 
       233 
     | 
    
         
            -
             
     | 
| 
       234 
     | 
    
         
            -
                def env
         
     | 
| 
       235 
     | 
    
         
            -
                  sinatra_warn "Sinatra.env is deprecated; use Sinatra::Application.environment instead."
         
     | 
| 
       236 
     | 
    
         
            -
                  options.environment
         
     | 
| 
       237 
     | 
    
         
            -
                end
         
     | 
| 
       238 
     | 
    
         
            -
              end
         
     | 
| 
       239 
     | 
    
         
            -
            end
         
     | 
    
        data/lib/sinatra/test.rb
    DELETED
    
    | 
         @@ -1,112 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'sinatra/base'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'test/unit'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            module Sinatra::Test
         
     | 
| 
       5 
     | 
    
         
            -
              include Rack::Utils
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
              attr_reader :app, :request, :response
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
              def mock_app(base=Sinatra::Base, &block)
         
     | 
| 
       10 
     | 
    
         
            -
                @app = Sinatra.new(base, &block)
         
     | 
| 
       11 
     | 
    
         
            -
              end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              undef request if method_defined?(:request)
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
              def request(verb, path, *args)
         
     | 
| 
       16 
     | 
    
         
            -
                fail "@app not set - cannot make request" if @app.nil?
         
     | 
| 
       17 
     | 
    
         
            -
                @request = Rack::MockRequest.new(@app)
         
     | 
| 
       18 
     | 
    
         
            -
                opts, input =
         
     | 
| 
       19 
     | 
    
         
            -
                  case args.size
         
     | 
| 
       20 
     | 
    
         
            -
                  when 2 # input, env
         
     | 
| 
       21 
     | 
    
         
            -
                    input, env = args
         
     | 
| 
       22 
     | 
    
         
            -
                    if input.kind_of?(Hash) # params, env
         
     | 
| 
       23 
     | 
    
         
            -
                      [env, param_string(input)]
         
     | 
| 
       24 
     | 
    
         
            -
                    else
         
     | 
| 
       25 
     | 
    
         
            -
                      [env, input]
         
     | 
| 
       26 
     | 
    
         
            -
                    end
         
     | 
| 
       27 
     | 
    
         
            -
                  when 1 # params
         
     | 
| 
       28 
     | 
    
         
            -
                    if (data = args.first).kind_of?(Hash)
         
     | 
| 
       29 
     | 
    
         
            -
                      env = (data.delete(:env) || {})
         
     | 
| 
       30 
     | 
    
         
            -
                      [env, param_string(data)]
         
     | 
| 
       31 
     | 
    
         
            -
                    else
         
     | 
| 
       32 
     | 
    
         
            -
                      [{}, data]
         
     | 
| 
       33 
     | 
    
         
            -
                    end
         
     | 
| 
       34 
     | 
    
         
            -
                  when 0
         
     | 
| 
       35 
     | 
    
         
            -
                    [{}, '']
         
     | 
| 
       36 
     | 
    
         
            -
                  else
         
     | 
| 
       37 
     | 
    
         
            -
                    raise ArgumentError, "zero, one, or two arguments expected"
         
     | 
| 
       38 
     | 
    
         
            -
                  end
         
     | 
| 
       39 
     | 
    
         
            -
                opts = rack_opts(opts)
         
     | 
| 
       40 
     | 
    
         
            -
                opts[:input] ||= input
         
     | 
| 
       41 
     | 
    
         
            -
                yield @request if block_given?
         
     | 
| 
       42 
     | 
    
         
            -
                @response = @request.request(verb, path, opts)
         
     | 
| 
       43 
     | 
    
         
            -
              end
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
              def get(path, *args, &b)  ; request('GET', path, *args, &b) ; end
         
     | 
| 
       46 
     | 
    
         
            -
              def head(path, *args, &b) ; request('HEAD', path, *args, &b) ; end
         
     | 
| 
       47 
     | 
    
         
            -
              def post(path, *args, &b) ; request('POST', path, *args, &b) ; end
         
     | 
| 
       48 
     | 
    
         
            -
              def put(path, *args, &b)  ; request('PUT', path, *args, &b) ; end
         
     | 
| 
       49 
     | 
    
         
            -
              def delete(path, *args, &b) ; request('DELETE', path, *args, &b) ; end
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
              def follow!
         
     | 
| 
       52 
     | 
    
         
            -
                request 'GET', @response.location
         
     | 
| 
       53 
     | 
    
         
            -
              end
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
              def should
         
     | 
| 
       56 
     | 
    
         
            -
                @response.should
         
     | 
| 
       57 
     | 
    
         
            -
              end
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
              def body
         
     | 
| 
       60 
     | 
    
         
            -
                @response.body
         
     | 
| 
       61 
     | 
    
         
            -
              end
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
              def status
         
     | 
| 
       64 
     | 
    
         
            -
                @response.status
         
     | 
| 
       65 
     | 
    
         
            -
              end
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
              RACK_OPT_NAMES = {
         
     | 
| 
       68 
     | 
    
         
            -
                :accept => "HTTP_ACCEPT",
         
     | 
| 
       69 
     | 
    
         
            -
                :agent => "HTTP_USER_AGENT",
         
     | 
| 
       70 
     | 
    
         
            -
                :host => "HTTP_HOST",
         
     | 
| 
       71 
     | 
    
         
            -
                :session => "HTTP_COOKIE",
         
     | 
| 
       72 
     | 
    
         
            -
                :cookies => "HTTP_COOKIE",
         
     | 
| 
       73 
     | 
    
         
            -
                :content_type => "CONTENT_TYPE"
         
     | 
| 
       74 
     | 
    
         
            -
              }
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
              def rack_opts(opts)
         
     | 
| 
       77 
     | 
    
         
            -
                opts.inject({}) do |hash,(key,val)|
         
     | 
| 
       78 
     | 
    
         
            -
                  key = RACK_OPT_NAMES[key] || key
         
     | 
| 
       79 
     | 
    
         
            -
                  hash[key] = val
         
     | 
| 
       80 
     | 
    
         
            -
                  hash
         
     | 
| 
       81 
     | 
    
         
            -
                end
         
     | 
| 
       82 
     | 
    
         
            -
              end
         
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
     | 
    
         
            -
              def env_for(opts={})
         
     | 
| 
       85 
     | 
    
         
            -
                opts = rack_opts(opts)
         
     | 
| 
       86 
     | 
    
         
            -
                Rack::MockRequest.env_for(opts)
         
     | 
| 
       87 
     | 
    
         
            -
              end
         
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
              def param_string(hash)
         
     | 
| 
       90 
     | 
    
         
            -
                hash.map { |pair| pair.map{|v|escape(v)}.join('=') }.join('&')
         
     | 
| 
       91 
     | 
    
         
            -
              end
         
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
              if defined? Sinatra::Compat
         
     | 
| 
       94 
     | 
    
         
            -
                # Deprecated. Use: "get" instead of "get_it".
         
     | 
| 
       95 
     | 
    
         
            -
                %w(get head post put delete).each do |verb|
         
     | 
| 
       96 
     | 
    
         
            -
                  alias_method "#{verb}_it", verb
         
     | 
| 
       97 
     | 
    
         
            -
                  remove_method verb
         
     | 
| 
       98 
     | 
    
         
            -
                end
         
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
                include Sinatra::Delegator
         
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
                # Deprecated. Tests no longer delegate missing methods to the
         
     | 
| 
       103 
     | 
    
         
            -
                # mock response. Use: @response
         
     | 
| 
       104 
     | 
    
         
            -
                def method_missing(name, *args, &block)
         
     | 
| 
       105 
     | 
    
         
            -
                  if @response && @response.respond_to?(name)
         
     | 
| 
       106 
     | 
    
         
            -
                    @response.send(name, *args, &block)
         
     | 
| 
       107 
     | 
    
         
            -
                  else
         
     | 
| 
       108 
     | 
    
         
            -
                    super
         
     | 
| 
       109 
     | 
    
         
            -
                  end
         
     | 
| 
       110 
     | 
    
         
            -
                end
         
     | 
| 
       111 
     | 
    
         
            -
              end
         
     | 
| 
       112 
     | 
    
         
            -
            end
         
     | 
    
        data/lib/sinatra/test/rspec.rb
    DELETED
    
    
    
        data/lib/sinatra/test/spec.rb
    DELETED
    
    
    
        data/lib/sinatra/test/unit.rb
    DELETED
    
    
    
        data/test/reload_test.rb
    DELETED
    
    | 
         @@ -1,65 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'test/spec'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'sinatra/base'
         
     | 
| 
       3 
     | 
    
         
            -
            require 'sinatra/test'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            $reload_count = 0
         
     | 
| 
       6 
     | 
    
         
            -
            $reload_app = nil
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            describe "Reloading" do
         
     | 
| 
       9 
     | 
    
         
            -
              include Sinatra::Test
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
              before {
         
     | 
| 
       12 
     | 
    
         
            -
                @app = mock_app(Sinatra::Default)
         
     | 
| 
       13 
     | 
    
         
            -
                $reload_app = @app
         
     | 
| 
       14 
     | 
    
         
            -
              }
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
              after {
         
     | 
| 
       17 
     | 
    
         
            -
                $reload_app = nil
         
     | 
| 
       18 
     | 
    
         
            -
              }
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
              it 'is enabled by default when in development and the app_file is set' do
         
     | 
| 
       21 
     | 
    
         
            -
                @app.set :app_file, __FILE__
         
     | 
| 
       22 
     | 
    
         
            -
                @app.set :environment, :development
         
     | 
| 
       23 
     | 
    
         
            -
                @app.reload.should.be true
         
     | 
| 
       24 
     | 
    
         
            -
                @app.reload?.should.be true
         
     | 
| 
       25 
     | 
    
         
            -
              end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
              it 'is disabled by default when running in non-development environment' do
         
     | 
| 
       28 
     | 
    
         
            -
                @app.set :app_file, __FILE__
         
     | 
| 
       29 
     | 
    
         
            -
                @app.set :environment, :test
         
     | 
| 
       30 
     | 
    
         
            -
                @app.reload.should.not.be true
         
     | 
| 
       31 
     | 
    
         
            -
                @app.reload?.should.be false
         
     | 
| 
       32 
     | 
    
         
            -
              end
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
              it 'is disabled by default when no app_file is available' do
         
     | 
| 
       35 
     | 
    
         
            -
                @app.set :app_file, nil
         
     | 
| 
       36 
     | 
    
         
            -
                @app.set :environment, :development
         
     | 
| 
       37 
     | 
    
         
            -
                @app.reload.should.not.be true
         
     | 
| 
       38 
     | 
    
         
            -
                @app.reload?.should.be false
         
     | 
| 
       39 
     | 
    
         
            -
              end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
              it 'can be turned off explicitly' do
         
     | 
| 
       42 
     | 
    
         
            -
                @app.set :app_file, __FILE__
         
     | 
| 
       43 
     | 
    
         
            -
                @app.set :environment, :development
         
     | 
| 
       44 
     | 
    
         
            -
                @app.reload.should.be true
         
     | 
| 
       45 
     | 
    
         
            -
                @app.set :reload, false
         
     | 
| 
       46 
     | 
    
         
            -
                @app.reload.should.be false
         
     | 
| 
       47 
     | 
    
         
            -
                @app.reload?.should.be false
         
     | 
| 
       48 
     | 
    
         
            -
              end
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
              it 'reloads the app_file each time a request is made' do
         
     | 
| 
       51 
     | 
    
         
            -
                @app.set :app_file, File.dirname(__FILE__) + '/data/reload_app_file.rb'
         
     | 
| 
       52 
     | 
    
         
            -
                @app.set :reload, true
         
     | 
| 
       53 
     | 
    
         
            -
                @app.get('/') { 'Hello World' }
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
                get '/'
         
     | 
| 
       56 
     | 
    
         
            -
                status.should.equal 200
         
     | 
| 
       57 
     | 
    
         
            -
                body.should.equal 'Hello from reload file'
         
     | 
| 
       58 
     | 
    
         
            -
                $reload_count.should.equal 1
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
                get '/'
         
     | 
| 
       61 
     | 
    
         
            -
                status.should.equal 200
         
     | 
| 
       62 
     | 
    
         
            -
                body.should.equal 'Hello from reload file'
         
     | 
| 
       63 
     | 
    
         
            -
                $reload_count.should.equal 2
         
     | 
| 
       64 
     | 
    
         
            -
              end
         
     | 
| 
       65 
     | 
    
         
            -
            end
         
     |