deas 0.24.0 → 0.24.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/deas/logging.rb +1 -1
- data/lib/deas/route.rb +6 -3
- data/lib/deas/runner.rb +24 -0
- data/lib/deas/sinatra_runner.rb +8 -22
- data/lib/deas/test_runner.rb +8 -25
- data/lib/deas/version.rb +1 -1
- data/test/support/normalized_params_spy.rb +24 -0
- data/test/unit/route_tests.rb +1 -1
- data/test/unit/runner_tests.rb +66 -1
- data/test/unit/sinatra_runner_tests.rb +44 -34
- data/test/unit/test_runner_tests.rb +46 -58
- metadata +6 -4
data/lib/deas/logging.rb
CHANGED
@@ -102,7 +102,7 @@ module Deas
|
|
102
102
|
'method' => request.request_method,
|
103
103
|
'path' => request.path,
|
104
104
|
'handler' => env['deas.handler_class_name'],
|
105
|
-
'params' => env['
|
105
|
+
'params' => env['deas.params'],
|
106
106
|
'time' => env['deas.time_taken'],
|
107
107
|
'status' => status
|
108
108
|
}
|
data/lib/deas/route.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'deas/sinatra_runner'
|
2
2
|
|
3
3
|
module Deas
|
4
|
+
|
4
5
|
class Route
|
5
6
|
|
6
7
|
attr_reader :method, :path, :handler_proxy, :handler_class
|
@@ -15,14 +16,16 @@ module Deas
|
|
15
16
|
|
16
17
|
# TODO: unit test this??
|
17
18
|
def run(sinatra_call)
|
19
|
+
runner = Deas::SinatraRunner.new(self.handler_class, sinatra_call)
|
18
20
|
sinatra_call.request.env.tap do |env|
|
19
|
-
env['
|
21
|
+
env['deas.params'] = runner.params
|
20
22
|
env['deas.handler_class_name'] = self.handler_class.name
|
21
23
|
env['deas.logging'].call " Handler: #{env['deas.handler_class_name']}"
|
22
|
-
env['deas.logging'].call " Params: #{env['
|
24
|
+
env['deas.logging'].call " Params: #{env['deas.params'].inspect}"
|
23
25
|
end
|
24
|
-
|
26
|
+
runner.run
|
25
27
|
end
|
26
28
|
|
27
29
|
end
|
30
|
+
|
28
31
|
end
|
data/lib/deas/runner.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'rack/utils'
|
2
|
+
|
1
3
|
module Deas
|
2
4
|
|
3
5
|
class Runner
|
@@ -19,6 +21,28 @@ module Deas
|
|
19
21
|
def partial(*args); raise NotImplementedError; end
|
20
22
|
def send_file(*args); raise NotImplementedError; end
|
21
23
|
|
24
|
+
class NormalizedParams
|
25
|
+
|
26
|
+
attr_reader :value
|
27
|
+
|
28
|
+
def initialize(value)
|
29
|
+
@value = if value.is_a?(::Array)
|
30
|
+
value.map{ |i| self.class.new(i).value }
|
31
|
+
elsif Rack::Utils.params_hash_type?(value)
|
32
|
+
value.inject({}){ |h, (k, v)| h[k.to_s] = self.class.new(v).value; h }
|
33
|
+
elsif self.file_type?(value)
|
34
|
+
value
|
35
|
+
else
|
36
|
+
value.to_s
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def file_type?(value)
|
41
|
+
raise NotImplementedError
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
22
46
|
end
|
23
47
|
|
24
48
|
end
|
data/lib/deas/sinatra_runner.rb
CHANGED
@@ -5,21 +5,17 @@ module Deas
|
|
5
5
|
|
6
6
|
class SinatraRunner < Runner
|
7
7
|
|
8
|
-
def self.run(*args)
|
9
|
-
self.new(*args).run
|
10
|
-
end
|
11
|
-
|
12
8
|
attr_reader :app_settings
|
13
9
|
|
14
10
|
def initialize(handler_class, sinatra_call)
|
15
11
|
@sinatra_call = sinatra_call
|
16
12
|
@app_settings = @sinatra_call.settings
|
17
13
|
|
18
|
-
@request
|
19
|
-
@response
|
20
|
-
@params
|
21
|
-
@logger
|
22
|
-
@session
|
14
|
+
@request = @sinatra_call.request
|
15
|
+
@response = @sinatra_call.response
|
16
|
+
@params = NormalizedParams.new(@sinatra_call.params).value
|
17
|
+
@logger = @sinatra_call.settings.logger
|
18
|
+
@session = @sinatra_call.session
|
23
19
|
|
24
20
|
super(handler_class)
|
25
21
|
end
|
@@ -89,19 +85,9 @@ module Deas
|
|
89
85
|
File.extname(template_name)[1..-1] || 'html'
|
90
86
|
end
|
91
87
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
module StringifiedKeys
|
97
|
-
def self.new(value)
|
98
|
-
if value.is_a?(::Array)
|
99
|
-
value.map{ |i| StringifiedKeys.new(i) }
|
100
|
-
elsif Rack::Utils.params_hash_type?(value)
|
101
|
-
value.inject({}){ |h, (k, v)| h[k.to_s] = StringifiedKeys.new(v); h }
|
102
|
-
else
|
103
|
-
value
|
104
|
-
end
|
88
|
+
class NormalizedParams < Deas::Runner::NormalizedParams
|
89
|
+
def file_type?(value)
|
90
|
+
value.kind_of?(::Tempfile)
|
105
91
|
end
|
106
92
|
end
|
107
93
|
|
data/lib/deas/test_runner.rb
CHANGED
@@ -12,11 +12,11 @@ module Deas
|
|
12
12
|
args = (args || {}).dup
|
13
13
|
@app_settings = OpenStruct.new(args.delete(:app_settings))
|
14
14
|
|
15
|
-
@request
|
16
|
-
@response
|
17
|
-
@params
|
18
|
-
@logger
|
19
|
-
@session
|
15
|
+
@request = args.delete(:request)
|
16
|
+
@response = args.delete(:response)
|
17
|
+
@params = NormalizedParams.new(args.delete(:params) || {}).value
|
18
|
+
@logger = args.delete(:logger) || Deas::NullLogger.new
|
19
|
+
@session = args.delete(:session)
|
20
20
|
|
21
21
|
super(handler_class)
|
22
22
|
args.each{|key, value| @handler.send("#{key}=", value) }
|
@@ -82,26 +82,9 @@ module Deas
|
|
82
82
|
end
|
83
83
|
SendFileArgs = Struct.new(:file_path, :options, :block)
|
84
84
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
Stringify.new(params)
|
89
|
-
end
|
90
|
-
|
91
|
-
module Stringify
|
92
|
-
def self.new(value)
|
93
|
-
if value.is_a?(::Array)
|
94
|
-
value.map{ |i| Stringify.new(i) }
|
95
|
-
elsif Rack::Utils.params_hash_type?(value)
|
96
|
-
value.inject({}){ |h, (k, v)| h[k.to_s] = Stringify.new(v); h }
|
97
|
-
elsif self.file_type?(value)
|
98
|
-
value
|
99
|
-
else
|
100
|
-
value.to_s
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
def self.file_type?(value)
|
85
|
+
class NormalizedParams < Deas::Runner::NormalizedParams
|
86
|
+
def file_type?(value)
|
87
|
+
value.kind_of?(::Tempfile) ||
|
105
88
|
value.kind_of?(::File) ||
|
106
89
|
value.kind_of?(::Rack::Multipart::UploadedFile) ||
|
107
90
|
(defined?(::Rack::Test::UploadedFile) && value.kind_of?(::Rack::Test::UploadedFile))
|
data/lib/deas/version.rb
CHANGED
@@ -0,0 +1,24 @@
|
|
1
|
+
module Deas; end
|
2
|
+
class Deas::Runner
|
3
|
+
|
4
|
+
class NormalizedParamsSpy
|
5
|
+
attr_reader :params, :value_called
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@params = nil
|
9
|
+
@value_called = false
|
10
|
+
end
|
11
|
+
|
12
|
+
def new(params)
|
13
|
+
@params = params
|
14
|
+
self
|
15
|
+
end
|
16
|
+
|
17
|
+
def value
|
18
|
+
@value_called = true
|
19
|
+
@params
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
data/test/unit/route_tests.rb
CHANGED
data/test/unit/runner_tests.rb
CHANGED
@@ -5,7 +5,7 @@ require 'test/support/view_handlers'
|
|
5
5
|
|
6
6
|
class Deas::Runner
|
7
7
|
|
8
|
-
class
|
8
|
+
class UnitTests < Assert::Context
|
9
9
|
desc "Deas::Runner"
|
10
10
|
setup do
|
11
11
|
@runner = Deas::Runner.new(TestViewHandler)
|
@@ -43,4 +43,69 @@ class Deas::Runner
|
|
43
43
|
|
44
44
|
end
|
45
45
|
|
46
|
+
class NormalizedParamsTests < UnitTests
|
47
|
+
desc "NormalizedParams"
|
48
|
+
|
49
|
+
should "convert any non-Array or non-Hash values to strings" do
|
50
|
+
exp_params = {
|
51
|
+
'nil' => '',
|
52
|
+
'int' => '42',
|
53
|
+
'str' => 'string'
|
54
|
+
}
|
55
|
+
assert_equal exp_params, normalized({
|
56
|
+
'nil' => nil,
|
57
|
+
'int' => 42,
|
58
|
+
'str' => 'string'
|
59
|
+
})
|
60
|
+
end
|
61
|
+
|
62
|
+
should "recursively convert array values to strings" do
|
63
|
+
exp_params = {
|
64
|
+
'array' => ['', '42', 'string']
|
65
|
+
}
|
66
|
+
assert_equal exp_params, normalized({
|
67
|
+
'array' => [nil, 42, 'string']
|
68
|
+
})
|
69
|
+
end
|
70
|
+
|
71
|
+
should "recursively convert hash values to strings" do
|
72
|
+
exp_params = {
|
73
|
+
'values' => {
|
74
|
+
'nil' => '',
|
75
|
+
'int' => '42',
|
76
|
+
'str' => 'string'
|
77
|
+
}
|
78
|
+
}
|
79
|
+
assert_equal exp_params, normalized({
|
80
|
+
'values' => {
|
81
|
+
'nil' => nil,
|
82
|
+
'int' => 42,
|
83
|
+
'str' => 'string'
|
84
|
+
}
|
85
|
+
})
|
86
|
+
end
|
87
|
+
|
88
|
+
should "convert any non-string hash keys to string keys" do
|
89
|
+
exp_params = {
|
90
|
+
'nil' => '',
|
91
|
+
'vals' => { '42' => 'int', 'str' => 'string' }
|
92
|
+
}
|
93
|
+
assert_equal exp_params, normalized({
|
94
|
+
'nil' => '',
|
95
|
+
:vals => { 42 => :int, 'str' => 'string' }
|
96
|
+
})
|
97
|
+
end
|
98
|
+
|
99
|
+
private
|
100
|
+
|
101
|
+
def normalized(params)
|
102
|
+
TestNormalizedParams.new(params).value
|
103
|
+
end
|
104
|
+
|
105
|
+
class TestNormalizedParams < Deas::Runner::NormalizedParams
|
106
|
+
def file_type?(value); false; end
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
110
|
+
|
46
111
|
end
|
@@ -1,17 +1,35 @@
|
|
1
1
|
require 'assert'
|
2
2
|
require 'deas/sinatra_runner'
|
3
3
|
|
4
|
+
require 'deas/runner'
|
5
|
+
require 'deas/template'
|
4
6
|
require 'test/support/fake_sinatra_call'
|
5
7
|
require 'test/support/view_handlers'
|
6
|
-
require 'deas/template'
|
7
8
|
|
8
9
|
class Deas::SinatraRunner
|
9
10
|
|
10
11
|
class UnitTests < Assert::Context
|
11
12
|
desc "Deas::SinatraRunner"
|
12
13
|
setup do
|
14
|
+
@runner_class = Deas::SinatraRunner
|
15
|
+
end
|
16
|
+
subject{ @runner_class }
|
17
|
+
|
18
|
+
should "be a Runner" do
|
19
|
+
assert subject < Deas::Runner
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
class InitTests < UnitTests
|
25
|
+
desc "when init"
|
26
|
+
setup do
|
27
|
+
@params = { 'value' => '1' }
|
28
|
+
@norm_params_spy = Deas::Runner::NormalizedParamsSpy.new
|
29
|
+
Assert.stub(NormalizedParams, :new){ |p| @norm_params_spy.new(p) }
|
30
|
+
|
13
31
|
@fake_sinatra_call = FakeSinatraCall.new
|
14
|
-
@runner =
|
32
|
+
@runner = @runner_class.new(FlagViewHandler, @fake_sinatra_call)
|
15
33
|
end
|
16
34
|
subject{ @runner }
|
17
35
|
|
@@ -26,6 +44,11 @@ class Deas::SinatraRunner
|
|
26
44
|
assert_equal @fake_sinatra_call.session, subject.session
|
27
45
|
end
|
28
46
|
|
47
|
+
should "call to normalize its params" do
|
48
|
+
assert_equal @fake_sinatra_call.params, @norm_params_spy.params
|
49
|
+
assert_true @norm_params_spy.value_called
|
50
|
+
end
|
51
|
+
|
29
52
|
should "call the sinatra_call's halt with" do
|
30
53
|
return_value = catch(:halt){ subject.halt('test') }
|
31
54
|
assert_equal [ 'test' ], return_value
|
@@ -87,8 +110,8 @@ class Deas::SinatraRunner
|
|
87
110
|
|
88
111
|
end
|
89
112
|
|
90
|
-
class RunTests <
|
91
|
-
desc "run"
|
113
|
+
class RunTests < InitTests
|
114
|
+
desc "and run"
|
92
115
|
setup do
|
93
116
|
@return_value = @runner.run
|
94
117
|
@handler = @runner.instance_variable_get("@handler")
|
@@ -111,41 +134,28 @@ class Deas::SinatraRunner
|
|
111
134
|
|
112
135
|
end
|
113
136
|
|
114
|
-
class
|
115
|
-
desc "
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
]
|
129
|
-
}
|
130
|
-
assert_equal exp_params, runner_params({
|
131
|
-
:a => 'aye',
|
132
|
-
'b' => 'bee',
|
133
|
-
'attachment' => {
|
134
|
-
:tempfile => 'a-file',
|
135
|
-
:content_type => 'whatever'
|
136
|
-
},
|
137
|
-
'attachments' => [
|
138
|
-
{ :tempfile => 'a-file' },
|
139
|
-
{ 'tempfile' => 'b-file' }
|
140
|
-
]
|
137
|
+
class NormalizedParamsTests < UnitTests
|
138
|
+
desc "NormalizedParams"
|
139
|
+
setup do
|
140
|
+
@norm_params_class = Deas::SinatraRunner::NormalizedParams
|
141
|
+
end
|
142
|
+
|
143
|
+
should "be a normalized params subclass" do
|
144
|
+
assert @norm_params_class < Deas::Runner::NormalizedParams
|
145
|
+
end
|
146
|
+
|
147
|
+
should "not convert Tempfile param values to strings" do
|
148
|
+
tempfile = Class.new(::Tempfile){ def initialize; end }.new
|
149
|
+
params = normalized({
|
150
|
+
'attachment' => { :tempfile => tempfile }
|
141
151
|
})
|
152
|
+
assert_kind_of ::Tempfile, params['attachment']['tempfile']
|
142
153
|
end
|
143
154
|
|
144
155
|
private
|
145
156
|
|
146
|
-
def
|
147
|
-
@
|
148
|
-
Deas::SinatraRunner.new(FlagViewHandler, @fake_sinatra_call).params
|
157
|
+
def normalized(params)
|
158
|
+
@norm_params_class.new(params).value
|
149
159
|
end
|
150
160
|
|
151
161
|
end
|
@@ -3,6 +3,7 @@ require 'deas/test_runner'
|
|
3
3
|
|
4
4
|
require 'rack/test'
|
5
5
|
require 'deas/runner'
|
6
|
+
require 'test/support/normalized_params_spy'
|
6
7
|
require 'test/support/view_handlers'
|
7
8
|
|
8
9
|
class Deas::TestRunner
|
@@ -10,17 +11,29 @@ class Deas::TestRunner
|
|
10
11
|
class UnitTests < Assert::Context
|
11
12
|
desc "Deas::TestRunner"
|
12
13
|
setup do
|
13
|
-
@
|
14
|
+
@runner_class = Deas::TestRunner
|
15
|
+
end
|
16
|
+
subject{ @runner_class }
|
17
|
+
|
18
|
+
should "be a Runner" do
|
19
|
+
assert subject < Deas::Runner
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
class InitTests < UnitTests
|
25
|
+
desc "when init"
|
26
|
+
setup do
|
27
|
+
@params = { 'value' => '1' }
|
28
|
+
@norm_params_spy = Deas::Runner::NormalizedParamsSpy.new
|
29
|
+
Assert.stub(NormalizedParams, :new){ |p| @norm_params_spy.new(p) }
|
30
|
+
@runner = @runner_class.new(TestRunnerViewHandler, :params => @params)
|
14
31
|
end
|
15
32
|
subject{ @runner }
|
16
33
|
|
17
34
|
should have_readers :app_settings, :return_value
|
18
35
|
should have_imeths :run
|
19
36
|
|
20
|
-
should "be a Runner" do
|
21
|
-
assert subject.class < Deas::Runner
|
22
|
-
end
|
23
|
-
|
24
37
|
should "know its app_settings" do
|
25
38
|
assert_kind_of OpenStruct, subject.app_settings
|
26
39
|
end
|
@@ -28,11 +41,21 @@ class Deas::TestRunner
|
|
28
41
|
should "default its settings" do
|
29
42
|
assert_nil subject.request
|
30
43
|
assert_nil subject.response
|
31
|
-
|
44
|
+
assert_kind_of ::Hash, subject.params
|
32
45
|
assert_kind_of Deas::NullLogger, subject.logger
|
33
46
|
assert_nil subject.session
|
34
47
|
end
|
35
48
|
|
49
|
+
should "default its params" do
|
50
|
+
runner = @runner_class.new(TestRunnerViewHandler)
|
51
|
+
assert_equal ::Hash.new, runner.params
|
52
|
+
end
|
53
|
+
|
54
|
+
should "call to normalize its params" do
|
55
|
+
assert_equal @params, @norm_params_spy.params
|
56
|
+
assert_true @norm_params_spy.value_called
|
57
|
+
end
|
58
|
+
|
36
59
|
should "write any non-standard settings on the handler" do
|
37
60
|
runner = Deas::TestRunner.new(TestRunnerViewHandler, :custom_value => 42)
|
38
61
|
assert_equal 42, runner.handler.custom_value
|
@@ -120,70 +143,35 @@ class Deas::TestRunner
|
|
120
143
|
|
121
144
|
end
|
122
145
|
|
123
|
-
class
|
124
|
-
desc "
|
125
|
-
|
126
|
-
|
127
|
-
exp_params = {
|
128
|
-
'nil' => '',
|
129
|
-
'int' => '42',
|
130
|
-
'str' => 'string'
|
131
|
-
}
|
132
|
-
assert_equal exp_params, runner_params({
|
133
|
-
'nil' => nil,
|
134
|
-
'int' => 42,
|
135
|
-
'str' => 'string'
|
136
|
-
})
|
137
|
-
end
|
138
|
-
|
139
|
-
should "recursively convert array values to strings" do
|
140
|
-
exp_params = {
|
141
|
-
'array' => ['', '42', 'string']
|
142
|
-
}
|
143
|
-
assert_equal exp_params, runner_params({
|
144
|
-
'array' => [nil, 42, 'string']
|
145
|
-
})
|
146
|
+
class NormalizedParamsTests < UnitTests
|
147
|
+
desc "NormalizedParams"
|
148
|
+
setup do
|
149
|
+
@norm_params_class = Deas::TestRunner::NormalizedParams
|
146
150
|
end
|
147
151
|
|
148
|
-
should "
|
149
|
-
|
150
|
-
'values' => {
|
151
|
-
'nil' => '',
|
152
|
-
'int' => '42',
|
153
|
-
'str' => 'string'
|
154
|
-
}
|
155
|
-
}
|
156
|
-
assert_equal exp_params, runner_params({
|
157
|
-
'values' => {
|
158
|
-
'nil' => nil,
|
159
|
-
'int' => 42,
|
160
|
-
'str' => 'string'
|
161
|
-
}
|
162
|
-
})
|
152
|
+
should "be a normalized params subclass" do
|
153
|
+
assert @norm_params_class < Deas::Runner::NormalizedParams
|
163
154
|
end
|
164
155
|
|
165
|
-
should "convert
|
166
|
-
|
167
|
-
|
168
|
-
'
|
169
|
-
}
|
170
|
-
assert_equal exp_params, runner_params({
|
171
|
-
'nil' => '',
|
172
|
-
:vals => { 42 => :int, 'str' => 'string' }
|
156
|
+
should "not convert Tempfile param values to strings" do
|
157
|
+
tempfile = Class.new(::Tempfile){ def initialize; end }.new
|
158
|
+
params = normalized({
|
159
|
+
'attachment' => { :tempfile => tempfile }
|
173
160
|
})
|
161
|
+
assert_kind_of ::Tempfile, params['attachment']['tempfile']
|
174
162
|
end
|
175
163
|
|
176
164
|
should "not convert File param values to strings" do
|
177
165
|
tempfile = File.new(TEST_SUPPORT_ROOT.join('routes.rb'))
|
178
|
-
params =
|
166
|
+
params = normalized({
|
179
167
|
'attachment' => { :tempfile => tempfile }
|
180
168
|
})
|
181
|
-
assert_kind_of File, params['attachment']['tempfile']
|
169
|
+
assert_kind_of ::File, params['attachment']['tempfile']
|
182
170
|
end
|
183
171
|
|
184
172
|
should "not convert Rack::Multipart::UploadedFile param values to strings" do
|
185
173
|
tempfile = Rack::Multipart::UploadedFile.new(TEST_SUPPORT_ROOT.join('routes.rb'))
|
186
|
-
params =
|
174
|
+
params = normalized({
|
187
175
|
'attachment' => { :tempfile => tempfile }
|
188
176
|
})
|
189
177
|
assert_kind_of Rack::Multipart::UploadedFile, params['attachment']['tempfile']
|
@@ -191,7 +179,7 @@ class Deas::TestRunner
|
|
191
179
|
|
192
180
|
should "not convert Rack::Test::UploadedFile param values to strings" do
|
193
181
|
tempfile = Rack::Test::UploadedFile.new(TEST_SUPPORT_ROOT.join('routes.rb'))
|
194
|
-
params =
|
182
|
+
params = normalized({
|
195
183
|
'attachment' => { :tempfile => tempfile }
|
196
184
|
})
|
197
185
|
assert_kind_of Rack::Test::UploadedFile, params['attachment']['tempfile']
|
@@ -199,8 +187,8 @@ class Deas::TestRunner
|
|
199
187
|
|
200
188
|
private
|
201
189
|
|
202
|
-
def
|
203
|
-
|
190
|
+
def normalized(params)
|
191
|
+
@norm_params_class.new(params).value
|
204
192
|
end
|
205
193
|
|
206
194
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deas
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 125
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 24
|
9
|
-
-
|
10
|
-
version: 0.24.
|
9
|
+
- 1
|
10
|
+
version: 0.24.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kelly Redding
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2014-06-
|
19
|
+
date: 2014-06-26 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
@@ -169,6 +169,7 @@ files:
|
|
169
169
|
- log/.gitkeep
|
170
170
|
- test/helper.rb
|
171
171
|
- test/support/fake_sinatra_call.rb
|
172
|
+
- test/support/normalized_params_spy.rb
|
172
173
|
- test/support/routes.rb
|
173
174
|
- test/support/view_handlers.rb
|
174
175
|
- test/support/views/_info.erb
|
@@ -241,6 +242,7 @@ summary: Handler-based web framework powered by Sinatra
|
|
241
242
|
test_files:
|
242
243
|
- test/helper.rb
|
243
244
|
- test/support/fake_sinatra_call.rb
|
245
|
+
- test/support/normalized_params_spy.rb
|
244
246
|
- test/support/routes.rb
|
245
247
|
- test/support/view_handlers.rb
|
246
248
|
- test/support/views/_info.erb
|