deas 0.24.0 → 0.24.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/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
|