sinatra-bundles 0.1.2 → 0.1.3
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/Rakefile +2 -1
- data/VERSION +1 -1
- data/lib/sinatra/bundles/bundle.rb +36 -0
- data/lib/sinatra/bundles/helpers.rb +22 -0
- data/lib/sinatra/bundles/javascript_bundle.rb +37 -0
- data/lib/sinatra/bundles/stylesheet_bundle.rb +36 -0
- data/lib/sinatra/bundles.rb +4 -114
- data/sinatra-bundles.gemspec +11 -58
- data/spec/app.rb +1 -1
- data/spec/production_app.rb +1 -1
- data/spec/public/javascripts/eval.js +5 -0
- data/spec/sinatra-bundles_spec.rb +10 -1
- data/spec/spec_helper.rb +5 -6
- metadata +17 -57
- data/vendor/cache/sinatra-0.10.1.gem +0 -0
- data/vendor/gems/sinatra-0.10.1/AUTHORS +0 -43
- data/vendor/gems/sinatra-0.10.1/CHANGES +0 -467
- data/vendor/gems/sinatra-0.10.1/LICENSE +0 -22
- data/vendor/gems/sinatra-0.10.1/README.jp.rdoc +0 -552
- data/vendor/gems/sinatra-0.10.1/README.rdoc +0 -622
- data/vendor/gems/sinatra-0.10.1/Rakefile +0 -129
- data/vendor/gems/sinatra-0.10.1/lib/sinatra/base.rb +0 -1143
- data/vendor/gems/sinatra-0.10.1/lib/sinatra/images/404.png +0 -0
- data/vendor/gems/sinatra-0.10.1/lib/sinatra/images/500.png +0 -0
- data/vendor/gems/sinatra-0.10.1/lib/sinatra/main.rb +0 -28
- data/vendor/gems/sinatra-0.10.1/lib/sinatra/showexceptions.rb +0 -303
- data/vendor/gems/sinatra-0.10.1/lib/sinatra/tilt.rb +0 -509
- data/vendor/gems/sinatra-0.10.1/lib/sinatra.rb +0 -7
- data/vendor/gems/sinatra-0.10.1/sinatra.gemspec +0 -86
- data/vendor/gems/sinatra-0.10.1/test/base_test.rb +0 -160
- data/vendor/gems/sinatra-0.10.1/test/builder_test.rb +0 -65
- data/vendor/gems/sinatra-0.10.1/test/contest.rb +0 -64
- data/vendor/gems/sinatra-0.10.1/test/erb_test.rb +0 -81
- data/vendor/gems/sinatra-0.10.1/test/erubis_test.rb +0 -82
- data/vendor/gems/sinatra-0.10.1/test/extensions_test.rb +0 -100
- data/vendor/gems/sinatra-0.10.1/test/filter_test.rb +0 -195
- data/vendor/gems/sinatra-0.10.1/test/haml_test.rb +0 -90
- data/vendor/gems/sinatra-0.10.1/test/helper.rb +0 -76
- data/vendor/gems/sinatra-0.10.1/test/helpers_test.rb +0 -573
- data/vendor/gems/sinatra-0.10.1/test/mapped_error_test.rb +0 -186
- data/vendor/gems/sinatra-0.10.1/test/middleware_test.rb +0 -68
- data/vendor/gems/sinatra-0.10.1/test/request_test.rb +0 -33
- data/vendor/gems/sinatra-0.10.1/test/response_test.rb +0 -42
- data/vendor/gems/sinatra-0.10.1/test/result_test.rb +0 -98
- data/vendor/gems/sinatra-0.10.1/test/route_added_hook_test.rb +0 -59
- data/vendor/gems/sinatra-0.10.1/test/routing_test.rb +0 -878
- data/vendor/gems/sinatra-0.10.1/test/sass_test.rb +0 -79
- data/vendor/gems/sinatra-0.10.1/test/server_test.rb +0 -47
- data/vendor/gems/sinatra-0.10.1/test/sinatra_test.rb +0 -13
- data/vendor/gems/sinatra-0.10.1/test/static_test.rb +0 -87
- data/vendor/gems/sinatra-0.10.1/test/templates_test.rb +0 -155
- data/vendor/gems/sinatra-0.10.1/test/views/error.builder +0 -3
- data/vendor/gems/sinatra-0.10.1/test/views/error.erb +0 -3
- data/vendor/gems/sinatra-0.10.1/test/views/error.erubis +0 -3
- data/vendor/gems/sinatra-0.10.1/test/views/error.haml +0 -3
- data/vendor/gems/sinatra-0.10.1/test/views/error.sass +0 -2
- data/vendor/gems/sinatra-0.10.1/test/views/foo/hello.test +0 -1
- data/vendor/gems/sinatra-0.10.1/test/views/hello.builder +0 -1
- data/vendor/gems/sinatra-0.10.1/test/views/hello.erb +0 -1
- data/vendor/gems/sinatra-0.10.1/test/views/hello.erubis +0 -1
- data/vendor/gems/sinatra-0.10.1/test/views/hello.haml +0 -1
- data/vendor/gems/sinatra-0.10.1/test/views/hello.sass +0 -2
- data/vendor/gems/sinatra-0.10.1/test/views/hello.test +0 -1
- data/vendor/gems/sinatra-0.10.1/test/views/layout2.builder +0 -3
- data/vendor/gems/sinatra-0.10.1/test/views/layout2.erb +0 -2
- data/vendor/gems/sinatra-0.10.1/test/views/layout2.erubis +0 -2
- data/vendor/gems/sinatra-0.10.1/test/views/layout2.haml +0 -2
- data/vendor/gems/sinatra-0.10.1/test/views/layout2.test +0 -1
- data/vendor/specifications/sinatra-0.10.1.gemspec +0 -40
@@ -1,195 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/helper'
|
2
|
-
|
3
|
-
class BeforeFilterTest < Test::Unit::TestCase
|
4
|
-
it "executes filters in the order defined" do
|
5
|
-
count = 0
|
6
|
-
mock_app do
|
7
|
-
get('/') { 'Hello World' }
|
8
|
-
before {
|
9
|
-
assert_equal 0, count
|
10
|
-
count = 1
|
11
|
-
}
|
12
|
-
before {
|
13
|
-
assert_equal 1, count
|
14
|
-
count = 2
|
15
|
-
}
|
16
|
-
end
|
17
|
-
|
18
|
-
get '/'
|
19
|
-
assert ok?
|
20
|
-
assert_equal 2, count
|
21
|
-
assert_equal 'Hello World', body
|
22
|
-
end
|
23
|
-
|
24
|
-
it "can modify the request" do
|
25
|
-
mock_app {
|
26
|
-
get('/foo') { 'foo' }
|
27
|
-
get('/bar') { 'bar' }
|
28
|
-
before { request.path_info = '/bar' }
|
29
|
-
}
|
30
|
-
|
31
|
-
get '/foo'
|
32
|
-
assert ok?
|
33
|
-
assert_equal 'bar', body
|
34
|
-
end
|
35
|
-
|
36
|
-
it "can modify instance variables available to routes" do
|
37
|
-
mock_app {
|
38
|
-
before { @foo = 'bar' }
|
39
|
-
get('/foo') { @foo }
|
40
|
-
}
|
41
|
-
|
42
|
-
get '/foo'
|
43
|
-
assert ok?
|
44
|
-
assert_equal 'bar', body
|
45
|
-
end
|
46
|
-
|
47
|
-
it "allows redirects" do
|
48
|
-
mock_app {
|
49
|
-
before { redirect '/bar' }
|
50
|
-
get('/foo') do
|
51
|
-
fail 'before block should have halted processing'
|
52
|
-
'ORLY?!'
|
53
|
-
end
|
54
|
-
}
|
55
|
-
|
56
|
-
get '/foo'
|
57
|
-
assert redirect?
|
58
|
-
assert_equal '/bar', response['Location']
|
59
|
-
assert_equal '', body
|
60
|
-
end
|
61
|
-
|
62
|
-
it "does not modify the response with its return value" do
|
63
|
-
mock_app {
|
64
|
-
before { 'Hello World!' }
|
65
|
-
get '/foo' do
|
66
|
-
assert_equal [], response.body
|
67
|
-
'cool'
|
68
|
-
end
|
69
|
-
}
|
70
|
-
|
71
|
-
get '/foo'
|
72
|
-
assert ok?
|
73
|
-
assert_equal 'cool', body
|
74
|
-
end
|
75
|
-
|
76
|
-
it "does modify the response with halt" do
|
77
|
-
mock_app {
|
78
|
-
before { halt 302, 'Hi' }
|
79
|
-
get '/foo' do
|
80
|
-
"should not happen"
|
81
|
-
end
|
82
|
-
}
|
83
|
-
|
84
|
-
get '/foo'
|
85
|
-
assert_equal 302, response.status
|
86
|
-
assert_equal 'Hi', body
|
87
|
-
end
|
88
|
-
|
89
|
-
it "gives you access to params" do
|
90
|
-
mock_app {
|
91
|
-
before { @foo = params['foo'] }
|
92
|
-
get('/foo') { @foo }
|
93
|
-
}
|
94
|
-
|
95
|
-
get '/foo?foo=cool'
|
96
|
-
assert ok?
|
97
|
-
assert_equal 'cool', body
|
98
|
-
end
|
99
|
-
|
100
|
-
it "runs filters defined in superclasses" do
|
101
|
-
base = Class.new(Sinatra::Base)
|
102
|
-
base.before { @foo = 'hello from superclass' }
|
103
|
-
|
104
|
-
mock_app(base) {
|
105
|
-
get('/foo') { @foo }
|
106
|
-
}
|
107
|
-
|
108
|
-
get '/foo'
|
109
|
-
assert_equal 'hello from superclass', body
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
class AfterFilterTest < Test::Unit::TestCase
|
114
|
-
it "executes filters in the order defined" do
|
115
|
-
invoked = 0
|
116
|
-
mock_app do
|
117
|
-
before { invoked = 2 }
|
118
|
-
get('/') { invoked += 2 }
|
119
|
-
after { invoked *= 2 }
|
120
|
-
end
|
121
|
-
|
122
|
-
get '/'
|
123
|
-
assert ok?
|
124
|
-
|
125
|
-
assert_equal 8, invoked
|
126
|
-
end
|
127
|
-
|
128
|
-
it "executes filters in the order defined" do
|
129
|
-
count = 0
|
130
|
-
mock_app do
|
131
|
-
get('/') { 'Hello World' }
|
132
|
-
after {
|
133
|
-
assert_equal 0, count
|
134
|
-
count = 1
|
135
|
-
}
|
136
|
-
after {
|
137
|
-
assert_equal 1, count
|
138
|
-
count = 2
|
139
|
-
}
|
140
|
-
end
|
141
|
-
|
142
|
-
get '/'
|
143
|
-
assert ok?
|
144
|
-
assert_equal 2, count
|
145
|
-
assert_equal 'Hello World', body
|
146
|
-
end
|
147
|
-
|
148
|
-
it "allows redirects" do
|
149
|
-
mock_app {
|
150
|
-
get('/foo') { 'ORLY' }
|
151
|
-
after { redirect '/bar' }
|
152
|
-
}
|
153
|
-
|
154
|
-
get '/foo'
|
155
|
-
assert redirect?
|
156
|
-
assert_equal '/bar', response['Location']
|
157
|
-
assert_equal '', body
|
158
|
-
end
|
159
|
-
|
160
|
-
it "does not modify the response with its return value" do
|
161
|
-
mock_app {
|
162
|
-
get('/foo') { 'cool' }
|
163
|
-
after { 'Hello World!' }
|
164
|
-
}
|
165
|
-
|
166
|
-
get '/foo'
|
167
|
-
assert ok?
|
168
|
-
assert_equal 'cool', body
|
169
|
-
end
|
170
|
-
|
171
|
-
it "does modify the response with halt" do
|
172
|
-
mock_app {
|
173
|
-
get '/foo' do
|
174
|
-
"should not be returned"
|
175
|
-
end
|
176
|
-
after { halt 302, 'Hi' }
|
177
|
-
}
|
178
|
-
|
179
|
-
get '/foo'
|
180
|
-
assert_equal 302, response.status
|
181
|
-
assert_equal 'Hi', body
|
182
|
-
end
|
183
|
-
|
184
|
-
it "runs filters defined in superclasses" do
|
185
|
-
count = 2
|
186
|
-
base = Class.new(Sinatra::Base)
|
187
|
-
base.after { count *= 2 }
|
188
|
-
mock_app(base) {
|
189
|
-
get('/foo') { count += 2 }
|
190
|
-
}
|
191
|
-
|
192
|
-
get '/foo'
|
193
|
-
assert_equal 8, count
|
194
|
-
end
|
195
|
-
end
|
@@ -1,90 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/helper'
|
2
|
-
require 'haml'
|
3
|
-
|
4
|
-
class HAMLTest < Test::Unit::TestCase
|
5
|
-
def haml_app(&block)
|
6
|
-
mock_app {
|
7
|
-
set :views, File.dirname(__FILE__) + '/views'
|
8
|
-
get '/', &block
|
9
|
-
}
|
10
|
-
get '/'
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'renders inline HAML strings' do
|
14
|
-
haml_app { haml '%h1 Hiya' }
|
15
|
-
assert ok?
|
16
|
-
assert_equal "<h1>Hiya</h1>\n", body
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'renders .haml files in views path' do
|
20
|
-
haml_app { haml :hello }
|
21
|
-
assert ok?
|
22
|
-
assert_equal "<h1>Hello From Haml</h1>\n", body
|
23
|
-
end
|
24
|
-
|
25
|
-
it "renders with inline layouts" do
|
26
|
-
mock_app {
|
27
|
-
layout { %q(%h1= 'THIS. IS. ' + yield.upcase) }
|
28
|
-
get('/') { haml '%em Sparta' }
|
29
|
-
}
|
30
|
-
get '/'
|
31
|
-
assert ok?
|
32
|
-
assert_equal "<h1>THIS. IS. <EM>SPARTA</EM></h1>\n", body
|
33
|
-
end
|
34
|
-
|
35
|
-
it "renders with file layouts" do
|
36
|
-
haml_app {
|
37
|
-
haml 'Hello World', :layout => :layout2
|
38
|
-
}
|
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 {
|
45
|
-
get('/') { haml :no_such_template }
|
46
|
-
}
|
47
|
-
assert_raise(Errno::ENOENT) { get('/') }
|
48
|
-
end
|
49
|
-
|
50
|
-
it "passes HAML options to the Haml engine" do
|
51
|
-
mock_app {
|
52
|
-
get '/' do
|
53
|
-
haml "!!!\n%h1 Hello World", :format => :html5
|
54
|
-
end
|
55
|
-
}
|
56
|
-
get '/'
|
57
|
-
assert ok?
|
58
|
-
assert_equal "<!DOCTYPE html>\n<h1>Hello World</h1>\n", body
|
59
|
-
end
|
60
|
-
|
61
|
-
it "passes default HAML options to the Haml engine" do
|
62
|
-
mock_app {
|
63
|
-
set :haml, {:format => :html5}
|
64
|
-
get '/' do
|
65
|
-
haml "!!!\n%h1 Hello World"
|
66
|
-
end
|
67
|
-
}
|
68
|
-
get '/'
|
69
|
-
assert ok?
|
70
|
-
assert_equal "<!DOCTYPE html>\n<h1>Hello World</h1>\n", body
|
71
|
-
end
|
72
|
-
|
73
|
-
it "merges the default HAML options with the overrides and passes them to the Haml engine" do
|
74
|
-
mock_app {
|
75
|
-
set :haml, {:format => :html5, :attr_wrapper => '"'} # default HAML attr are <tag attr='single-quoted'>
|
76
|
-
get '/' do
|
77
|
-
haml "!!!\n%h1{:class => :header} Hello World"
|
78
|
-
end
|
79
|
-
get '/html4' do
|
80
|
-
haml "!!!\n%h1{:class => 'header'} Hello World", :format => :html4
|
81
|
-
end
|
82
|
-
}
|
83
|
-
get '/'
|
84
|
-
assert ok?
|
85
|
-
assert_equal "<!DOCTYPE html>\n<h1 class=\"header\">Hello World</h1>\n", body
|
86
|
-
get '/html4'
|
87
|
-
assert ok?
|
88
|
-
assert_match(/^<!DOCTYPE html PUBLIC (.*) HTML 4.01/, body)
|
89
|
-
end
|
90
|
-
end
|
@@ -1,76 +0,0 @@
|
|
1
|
-
ENV['RACK_ENV'] = 'test'
|
2
|
-
|
3
|
-
begin
|
4
|
-
require 'rack'
|
5
|
-
rescue LoadError
|
6
|
-
require 'rubygems'
|
7
|
-
require 'rack'
|
8
|
-
end
|
9
|
-
|
10
|
-
testdir = File.dirname(__FILE__)
|
11
|
-
$LOAD_PATH.unshift testdir unless $LOAD_PATH.include?(testdir)
|
12
|
-
|
13
|
-
libdir = File.dirname(File.dirname(__FILE__)) + '/lib'
|
14
|
-
$LOAD_PATH.unshift libdir unless $LOAD_PATH.include?(libdir)
|
15
|
-
|
16
|
-
require 'contest'
|
17
|
-
require 'rack/test'
|
18
|
-
require 'sinatra/base'
|
19
|
-
|
20
|
-
class Sinatra::Base
|
21
|
-
# Allow assertions in request context
|
22
|
-
include Test::Unit::Assertions
|
23
|
-
end
|
24
|
-
|
25
|
-
Sinatra::Base.set :environment, :test
|
26
|
-
|
27
|
-
class Test::Unit::TestCase
|
28
|
-
include Rack::Test::Methods
|
29
|
-
|
30
|
-
class << self
|
31
|
-
alias_method :it, :test
|
32
|
-
end
|
33
|
-
|
34
|
-
alias_method :response, :last_response
|
35
|
-
|
36
|
-
setup do
|
37
|
-
Sinatra::Base.set :environment, :test
|
38
|
-
end
|
39
|
-
|
40
|
-
# Sets up a Sinatra::Base subclass defined with the block
|
41
|
-
# given. Used in setup or individual spec methods to establish
|
42
|
-
# the application.
|
43
|
-
def mock_app(base=Sinatra::Base, &block)
|
44
|
-
@app = Sinatra.new(base, &block)
|
45
|
-
end
|
46
|
-
|
47
|
-
def app
|
48
|
-
Rack::Lint.new(@app)
|
49
|
-
end
|
50
|
-
|
51
|
-
def body
|
52
|
-
response.body.to_s
|
53
|
-
end
|
54
|
-
|
55
|
-
# Delegate other missing methods to response.
|
56
|
-
def method_missing(name, *args, &block)
|
57
|
-
if response && response.respond_to?(name)
|
58
|
-
response.send(name, *args, &block)
|
59
|
-
else
|
60
|
-
super
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
# Also check response since we delegate there.
|
65
|
-
def respond_to?(symbol, include_private=false)
|
66
|
-
super || (response && response.respond_to?(symbol, include_private))
|
67
|
-
end
|
68
|
-
|
69
|
-
# Do not output warnings for the duration of the block.
|
70
|
-
def silence_warnings
|
71
|
-
$VERBOSE, v = nil, $VERBOSE
|
72
|
-
yield
|
73
|
-
ensure
|
74
|
-
$VERBOSE = v
|
75
|
-
end
|
76
|
-
end
|