testdata 1.1.8 → 1.1.12
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/testdata.rb +100 -65
- data.tar.gz.sig +0 -0
- metadata +44 -43
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47fd82d2a9ac27e6afd339e77fcb07ae25327e597ab52f27c53ea633cc71c101
|
4
|
+
data.tar.gz: dab727a8fe0f38d2edae64b246cfb73dcb5aeb162ebdaf81eb2d8888c6b7e394
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bea28e1b0fa2a3d6907343061999e89f4cc45e343cf9120b688269d0df3f097da8d8e29ce1ef3f175d8694b7fc3b3682a93ce101c3c77fab5e6283aca76245b6
|
7
|
+
data.tar.gz: 3f3429874ef92cae5420cb1a13a952e988ba72b77c3769c831a30485e9d0c41d34621b1c3827d4cca45c1a85d6cead7f4e7dd92a88b6bac3fe006734d00e04e1
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/testdata.rb
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
require 'app-routes'
|
6
6
|
require 'testdata_text'
|
7
|
-
require '
|
7
|
+
require 'diffyc32'
|
8
8
|
require 'polyrex'
|
9
9
|
require 'yaml'
|
10
10
|
|
@@ -13,15 +13,16 @@ class TestdataException < Exception
|
|
13
13
|
end
|
14
14
|
|
15
15
|
module Testdata
|
16
|
-
|
16
|
+
|
17
17
|
class Base
|
18
|
+
using ColouredText
|
18
19
|
|
19
20
|
include AppRoutes
|
20
21
|
|
21
22
|
attr_accessor :debug
|
22
23
|
|
23
24
|
def initialize(s, options={})
|
24
|
-
|
25
|
+
|
25
26
|
super()
|
26
27
|
|
27
28
|
@params = {}
|
@@ -32,14 +33,14 @@ module Testdata
|
|
32
33
|
# open the testdata document
|
33
34
|
procs = {
|
34
35
|
String: proc {|x|
|
35
|
-
|
36
|
+
|
36
37
|
if x.strip[/^</] then
|
37
38
|
x
|
38
39
|
elsif x[/https?:\/\//] then
|
39
40
|
read_url x
|
40
41
|
else
|
41
42
|
read_file x
|
42
|
-
end
|
43
|
+
end
|
43
44
|
},
|
44
45
|
Polyrex: proc {|x| x.to_xml}
|
45
46
|
}
|
@@ -47,26 +48,28 @@ module Testdata
|
|
47
48
|
buffer = procs[s.class.to_s.to_sym].call(s)
|
48
49
|
|
49
50
|
@doc = Rexle.new(buffer)
|
50
|
-
|
51
|
+
|
51
52
|
o = {log: false}.merge(options)
|
52
53
|
|
53
54
|
@log = o[:log] == true ? Rexle.new(tests) : nil
|
55
|
+
|
56
|
+
|
54
57
|
end
|
55
58
|
|
56
|
-
def run(raw_x=nil, debug2=nil)
|
57
|
-
|
59
|
+
def run(raw_x=nil, debug2=nil, results_file: nil)
|
60
|
+
|
58
61
|
# verify the document has unique path numbers
|
59
|
-
|
62
|
+
|
60
63
|
a = @doc.root.xpath('records/test/summary/path/text()')
|
61
64
|
duplicates = a.select{ |e| a.count(e) > 1 }.uniq
|
62
|
-
|
65
|
+
|
63
66
|
if duplicates.any? then
|
64
|
-
raise 'Duplicate path found. Path: ' + duplicates.inspect
|
67
|
+
raise 'Duplicate path found. Path: ' + duplicates.inspect
|
65
68
|
end
|
66
69
|
|
67
70
|
@debug2 = debug2 ? true : false
|
68
71
|
@success = []
|
69
|
-
|
72
|
+
|
70
73
|
x = if raw_x and raw_x[/\d+\.\.\d+/] then
|
71
74
|
x, y = raw_x.split('..').map(&:to_i)
|
72
75
|
id = Range.new(x,y)
|
@@ -74,15 +77,16 @@ module Testdata
|
|
74
77
|
raw_x
|
75
78
|
end
|
76
79
|
|
77
|
-
procs = {NilClass: :test_all, Range: :test_range, String: :test_id,
|
80
|
+
procs = {NilClass: :test_all, Range: :test_range, String: :test_id,
|
78
81
|
Integer: :test_id, Fixnum: :test_id}
|
79
82
|
|
80
83
|
method(procs[x.class.to_s.to_sym]).call(x)
|
84
|
+
@results_file = results_file if raw_x.nil? and results_file
|
81
85
|
summary()
|
82
86
|
end
|
83
|
-
|
87
|
+
|
84
88
|
private
|
85
|
-
|
89
|
+
|
86
90
|
def testdata_values(id)
|
87
91
|
|
88
92
|
node = @doc.root.element "records/test[summary/path='#{id}']"
|
@@ -90,7 +94,7 @@ module Testdata
|
|
90
94
|
|
91
95
|
path_no = node.text('summary/path')
|
92
96
|
|
93
|
-
input_summary = node.element 'records/input/summary'
|
97
|
+
input_summary = node.element 'records/input/summary'
|
94
98
|
input_summary.delete 'schema | format_mask | recordx_type'
|
95
99
|
|
96
100
|
input_nodes = input_summary.xpath('*') #[1..-1]
|
@@ -104,8 +108,8 @@ module Testdata
|
|
104
108
|
|
105
109
|
type, desc = summary.text('type'), summary.text('description')
|
106
110
|
|
107
|
-
output_summary = node.element 'records/output/summary'
|
108
|
-
output_summary.delete 'schema | format_mask | recordx_type'
|
111
|
+
output_summary = node.element 'records/output/summary'
|
112
|
+
output_summary.delete 'schema | format_mask | recordx_type'
|
109
113
|
|
110
114
|
output_nodes = output_summary.xpath('*') #[1..-1]
|
111
115
|
output_values = output_nodes.map{|x| x.texts.map(&:unescape).join.strip}
|
@@ -118,32 +122,32 @@ module Testdata
|
|
118
122
|
x ||=(0..-1)
|
119
123
|
|
120
124
|
break_on_fail = @doc.root.element('summary/break_on_fail/text()') == 'true'
|
121
|
-
|
125
|
+
|
122
126
|
test_id = nil
|
123
127
|
|
124
128
|
begin
|
125
|
-
|
129
|
+
|
126
130
|
@doc.root.xpath("records/test/summary/path/text()")[x].each do |id|
|
127
|
-
|
131
|
+
|
128
132
|
test_id = id
|
129
133
|
puts 'testing id: ' + id.inspect
|
130
134
|
result = test_id(id)
|
131
|
-
break if result == false and break_on_fail
|
132
|
-
|
135
|
+
break if result == false and break_on_fail
|
136
|
+
|
133
137
|
end
|
134
|
-
|
138
|
+
|
135
139
|
rescue
|
136
140
|
|
137
141
|
@success << [false, test_id.to_i]
|
138
142
|
end
|
139
|
-
|
143
|
+
|
140
144
|
|
141
145
|
end
|
142
146
|
|
143
147
|
def test_id(id='')
|
144
148
|
|
145
149
|
|
146
|
-
path_no, inputs, input_names, type, expected, @desc =
|
150
|
+
path_no, inputs, input_names, type, expected, @desc =
|
147
151
|
testdata_values(id.to_s)
|
148
152
|
@inputs = inputs
|
149
153
|
|
@@ -153,7 +157,7 @@ module Testdata
|
|
153
157
|
puts "warning: no test route found for " + type unless raw_actual
|
154
158
|
|
155
159
|
result = nil
|
156
|
-
@success << [nil, path_no.to_i]
|
160
|
+
@success << [nil, path_no.to_i]
|
157
161
|
|
158
162
|
begin
|
159
163
|
|
@@ -163,28 +167,30 @@ module Testdata
|
|
163
167
|
b = expected.map(&:strip)
|
164
168
|
|
165
169
|
if @debug == true or @debug2 == true then
|
166
|
-
|
170
|
+
|
167
171
|
inputs = input_names.zip(inputs).map{|x| ' ' + x.join(": ")}\
|
168
172
|
.join("\n")
|
169
173
|
|
170
|
-
puts "\ninputs: \n" + inputs
|
171
|
-
puts "\ntype or description
|
172
|
-
puts "\nexpected : \n " + b.inspect
|
173
|
-
puts "\nactual : \n " + a.inspect + "\n"
|
174
|
+
puts "\ninputs: \n".bold + inputs
|
175
|
+
puts "\ntype or description:".bold + "\n %s %s".cyan % [type, @desc]
|
176
|
+
puts "\nexpected : \n ".bold + b.inspect
|
177
|
+
puts "\nactual : \n ".bold + a.inspect + "\n"
|
174
178
|
end
|
175
179
|
|
176
|
-
result = a ==
|
177
|
-
|
180
|
+
result = a.join.force_encoding("UTF-8") == \
|
181
|
+
b.join.force_encoding("UTF-8")
|
182
|
+
|
178
183
|
if (@debug == true or @debug2 == true) and result == false then
|
179
184
|
|
180
185
|
# diff the expected and actual valuess
|
181
|
-
puts
|
186
|
+
puts DiffyC32.new(b.first, a.first).to_s
|
187
|
+
|
182
188
|
end
|
183
189
|
else
|
184
190
|
result = [raw_actual].compact == expected
|
185
191
|
end
|
186
192
|
|
187
|
-
rescue Exception => e
|
193
|
+
rescue Exception => e
|
188
194
|
err_label = e.message + " :: \n" + e.backtrace.join("\n")
|
189
195
|
raise TestdataException, err_label
|
190
196
|
result = false
|
@@ -195,15 +201,15 @@ module Testdata
|
|
195
201
|
end
|
196
202
|
|
197
203
|
def test_range(range)
|
198
|
-
|
204
|
+
|
199
205
|
a = @doc.root.xpath("records/test/summary/path/text()")
|
200
206
|
a[range].each {|x| test_id x}
|
201
207
|
end
|
202
|
-
|
208
|
+
|
203
209
|
def tests(*args)
|
204
210
|
# override this method in the child class
|
205
211
|
end
|
206
|
-
|
212
|
+
|
207
213
|
def read_rdx(buffer)
|
208
214
|
puts 'inside read_rdf: buffer: ' + buffer.inspect
|
209
215
|
dx = Dynarex.new
|
@@ -229,7 +235,7 @@ module Testdata
|
|
229
235
|
dx.all.each.with_index do |x, i|
|
230
236
|
|
231
237
|
px.create.test(path: (i+1).to_s, type: dx.test_type) do |create|
|
232
|
-
|
238
|
+
|
233
239
|
raw_inputs.each do |fld_in|
|
234
240
|
|
235
241
|
create.input(fld_in[0..-4].to_sym => \
|
@@ -245,17 +251,17 @@ module Testdata
|
|
245
251
|
end
|
246
252
|
|
247
253
|
px.to_xml
|
248
|
-
|
254
|
+
|
249
255
|
end
|
250
256
|
|
251
|
-
def read_file(s)
|
257
|
+
def read_file(s)
|
252
258
|
buffer = File.open(s, 'r').read
|
253
259
|
ext = s[/\.(\w+)$/,1]
|
254
|
-
method(('read_' + ext).to_sym).call(buffer)
|
260
|
+
method(('read_' + ext).to_sym).call(buffer)
|
255
261
|
end
|
256
|
-
|
262
|
+
|
257
263
|
def read_url(url)
|
258
|
-
buffer = open(url, 'UserAgent' => 'Testdata').read
|
264
|
+
buffer = URI.open(url, 'UserAgent' => 'Testdata').read
|
259
265
|
ext = url[/.*\/[^\.]+\.(\w+)/,1]
|
260
266
|
method(('read_' + ext).to_sym).call(buffer)
|
261
267
|
end
|
@@ -263,7 +269,7 @@ module Testdata
|
|
263
269
|
def read_xml(buffer)
|
264
270
|
buffer
|
265
271
|
end
|
266
|
-
|
272
|
+
|
267
273
|
def read_td(buffer)
|
268
274
|
puts 'buffer: ' + buffer
|
269
275
|
TestdataText.parse buffer
|
@@ -275,72 +281,101 @@ module Testdata
|
|
275
281
|
end
|
276
282
|
|
277
283
|
def summary()
|
284
|
+
|
278
285
|
success = @success.map(&:first)
|
279
286
|
a = @success.map(&:last).sort
|
280
|
-
{
|
287
|
+
h = {
|
281
288
|
passed: success.all?,
|
282
289
|
score: [success.grep(true), success].map(&:length).join('/'),
|
283
290
|
failed: @success.select{|x| x[0] == false}.map(&:last).sort
|
284
291
|
}
|
292
|
+
|
293
|
+
def h.to_s()
|
294
|
+
passed = self[:passed] ? self[:passed].to_s.light_green : self[:passed].to_s.light_red
|
295
|
+
"{passed: #{passed}, score: #{self[:score]}, failed: #{self[:failed]}}"
|
296
|
+
|
297
|
+
end
|
298
|
+
|
299
|
+
if @results_file then
|
300
|
+
|
301
|
+
dx = if File.exists?(@results_file) then
|
302
|
+
Dynarex.new @results_file
|
303
|
+
else
|
304
|
+
Dynarex.new schema: "gems/gemx(title, last_tested, passed, score)",
|
305
|
+
filepath: @results_file
|
306
|
+
end
|
307
|
+
|
308
|
+
title = @doc.root.element('summary/title/text()')
|
309
|
+
h2 = {title: title, last_tested: Time.now.to_s, passed: h[:passed].to_s, score: h[:score]}
|
310
|
+
|
311
|
+
dx.create(h2)
|
312
|
+
dx.save
|
313
|
+
puts 'results file saved at ' + @results_file.inspect if @debug
|
314
|
+
|
315
|
+
#puts dx.all.first
|
316
|
+
|
317
|
+
end
|
318
|
+
|
319
|
+
return h
|
285
320
|
end
|
286
321
|
end
|
287
322
|
|
288
323
|
class Unit
|
289
|
-
|
324
|
+
|
290
325
|
attr_reader :to_s
|
291
326
|
|
292
327
|
def initialize(s)
|
293
|
-
|
328
|
+
|
294
329
|
super()
|
295
330
|
@a = []
|
296
|
-
|
331
|
+
|
297
332
|
buffer, _ = RXFHelper.read(s)
|
298
333
|
|
299
334
|
@doc = Rexle.new(buffer)
|
300
335
|
|
301
336
|
@doc.root.xpath('records/test').map do |test|
|
302
|
-
|
303
|
-
path, type, description = test.xpath('summary/*/text()')
|
304
|
-
records = test.element('records')
|
305
|
-
|
337
|
+
|
338
|
+
path, type, description = test.xpath('summary/*/text()')
|
339
|
+
records = test.element('records')
|
340
|
+
|
306
341
|
inputs = records.xpath('input/summary/*').map\
|
307
342
|
{|x| [x.name, x.texts.join.strip]}
|
308
343
|
|
309
344
|
outputs = records.xpath('output/summary/*').map\
|
310
345
|
{|x| [x.name, x.texts.join.strip]}
|
311
|
-
|
346
|
+
|
312
347
|
@a << {type: type, in: inputs, out: outputs}
|
313
|
-
|
348
|
+
|
314
349
|
end
|
315
|
-
|
350
|
+
|
316
351
|
end # end of initialize()
|
317
|
-
|
352
|
+
|
318
353
|
def to_s()
|
319
354
|
=begin
|
320
355
|
s = %Q(
|
321
356
|
require_relative "#{testgem}"
|
322
357
|
require "test/unit"
|
323
|
-
|
358
|
+
|
324
359
|
class #{testclass} < Test::Unit::TestCase
|
325
|
-
|
360
|
+
|
326
361
|
def #{types[i]}
|
327
362
|
#{@lines.join("\n ")}
|
328
363
|
end
|
329
|
-
|
364
|
+
|
330
365
|
end
|
331
366
|
)
|
332
367
|
=end
|
333
368
|
#read the .rsf file
|
334
369
|
script = @doc.root.element('summary/script/text()')
|
335
370
|
raise 'script XML entry not found' unless script
|
336
|
-
|
371
|
+
|
337
372
|
if script then
|
338
|
-
filename = script[/[\/]+\.rsf$/]
|
373
|
+
filename = script[/[\/]+\.rsf$/]
|
339
374
|
buffer, _ = RXFHelper.read(filename)
|
340
375
|
end
|
341
376
|
#@a.group_by {|x| x[:type]}
|
342
|
-
|
343
|
-
|
377
|
+
|
378
|
+
|
344
379
|
end
|
345
380
|
end
|
346
381
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testdata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -11,31 +11,31 @@ cert_chain:
|
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
13
|
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjExMTE4MTE0NjM5WhcN
|
15
|
+
MjIxMTE4MTE0NjM5WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDP5gcE
|
17
|
+
axnvctZq3xi6He1Yw6RvwVC4kjtH85FmxWqg4zw/r5iWu8LIDjMPzizceOI6ilmM
|
18
|
+
PuM1k6iAZmyir2T/XQXmNdPXUfjYqHGhou9nxIojdeBCQsVnx9ul9VHWKGdJ1LYB
|
19
|
+
4VfITvuOk1CKZlGO5ro4Kb2J/bLDIKSwmKDwVlKFXm+DXaiGLDh0RwVMoPmA+AlO
|
20
|
+
/00Y7EZlyQEvqMKwbXyA6wrgMWq9KQMQUlDRwKrcueY+HpBKwxJ1gTxXZZJwAxVT
|
21
|
+
unKf8o4uN0IkJxi9Qyslon8fPaHgy1FHVGHUFjLIzRcsVNjPkIfL/V9HDq4R5dtY
|
22
|
+
wbd3msOozJKRGQTBapr3RRSwy3KZsC5j2Oh1cOSJR9AwjhMSLkezTXo8v1OyngSS
|
23
|
+
gTloKO6gxpGccgAzad1bjRo+s75TxypsiaimlDhk74BbKGSEhtRP3LGTfGrJQRbz
|
24
|
+
yCSgvzTTPc39BUPAmrKtjpiLgYkK6oIIBhAROLzeEKqqnivt7aNcBWGJMnMCAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUwwhGSF4b
|
26
|
+
LxBGkJrZ+QbD4Gc3598wJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
27
|
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEAH6QBlgGKUFJ0jpVgoi+xAQWMgkxZJbx545Ydhjkd
|
29
|
+
9pK0QbiF831LkB/Fax2FYyySgcqtU9aVHY4TwXWZFvhf7MnZM0YnU+2GA367ZkkH
|
30
|
+
HFX88FqBnbVEiYeWbNyhH+Dp/EuoNPwoJKUHOnIjey2bQttpnAr0nl+rNn6DRDBd
|
31
|
+
SrOX6yrJp+TKxmtlJhmcE1G3dNSQYRZOBH/0DtDTQiHU2tiOHW57+5NZmEi/uZMW
|
32
|
+
/cfpafSJ1tENFWQJ1pATQoaJh/6LKnoDWkhrVwSuRJtD8qpOS/wjKqqscZlxS9m/
|
33
|
+
+61VC+IRSjjSHUZUzBHmRsONgYITuw8psX60aEc4oi4SOJuQLunsARvYDY+NO5S0
|
34
|
+
q8Xb225jZx4fdmDXd/EiMLn3hjva85JsJVfrE7eS0dPhZTNv36auPeHGMUEBDKmz
|
35
|
+
VPCX5Cuw6OER1XAXBrbU+Yxtynmu52uURikgRGv3kNN7uFNP2ObtG4bePdjcyRyF
|
36
|
+
ZoODyxvFiUzKN1ar4bIjsI+l
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2022-02-02 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: app-routes
|
@@ -61,42 +61,42 @@ dependencies:
|
|
61
61
|
name: testdata_text
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
63
63
|
requirements:
|
64
|
-
- - ">="
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: 0.2.0
|
67
64
|
- - "~>"
|
68
65
|
- !ruby/object:Gem::Version
|
69
66
|
version: '0.2'
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.2.2
|
70
70
|
type: :runtime
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: 0.2.0
|
77
74
|
- - "~>"
|
78
75
|
- !ruby/object:Gem::Version
|
79
76
|
version: '0.2'
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 0.2.2
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
|
-
name:
|
81
|
+
name: diffyc32
|
82
82
|
requirement: !ruby/object:Gem::Requirement
|
83
83
|
requirements:
|
84
|
-
- - ">="
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: 3.4.0
|
87
84
|
- - "~>"
|
88
85
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
86
|
+
version: '0.1'
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.1.1
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 3.4.0
|
97
94
|
- - "~>"
|
98
95
|
- !ruby/object:Gem::Version
|
99
|
-
version: '
|
96
|
+
version: '0.1'
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 0.1.1
|
100
100
|
- !ruby/object:Gem::Dependency
|
101
101
|
name: polyrex
|
102
102
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,7 +106,7 @@ dependencies:
|
|
106
106
|
version: '1.3'
|
107
107
|
- - ">="
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: 1.3.
|
109
|
+
version: 1.3.6
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -116,9 +116,9 @@ dependencies:
|
|
116
116
|
version: '1.3'
|
117
117
|
- - ">="
|
118
118
|
- !ruby/object:Gem::Version
|
119
|
-
version: 1.3.
|
119
|
+
version: 1.3.6
|
120
120
|
description:
|
121
|
-
email:
|
121
|
+
email: digital.robertson@gmail.com
|
122
122
|
executables: []
|
123
123
|
extensions: []
|
124
124
|
extra_rdoc_files: []
|
@@ -143,7 +143,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '0'
|
145
145
|
requirements: []
|
146
|
-
|
146
|
+
rubyforge_project:
|
147
|
+
rubygems_version: 2.7.10
|
147
148
|
signing_key:
|
148
149
|
specification_version: 4
|
149
150
|
summary: A test framework which accepts test data in a Polyrex format.
|
metadata.gz.sig
CHANGED
Binary file
|