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.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/testdata.rb +100 -65
  4. data.tar.gz.sig +0 -0
  5. metadata +44 -43
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7cf7b1c61241032094b96f7dd7b35451a0ea5d6adbd8a82301dc7205a15279ae
4
- data.tar.gz: 9dd7d90fde6a9b3287eeaf52d142300feeb6dff1c650221fabed4129f92b0ffa
3
+ metadata.gz: 47fd82d2a9ac27e6afd339e77fcb07ae25327e597ab52f27c53ea633cc71c101
4
+ data.tar.gz: dab727a8fe0f38d2edae64b246cfb73dcb5aeb162ebdaf81eb2d8888c6b7e394
5
5
  SHA512:
6
- metadata.gz: b075f26248e733a201a4f30f0812b54540c5233625039dd4a8e376d20b0968da2758b63d686c7574e1eb53d815a19bad9504734a3e38ce447cf0f8658de04d8b
7
- data.tar.gz: 756309f4520e95053f0dd45ab1b6e659682a20435768c21a225f5382328be1b8787bc1ac5a83f638646c3246fe7d4274ef219be6d73555436a395d04ec081528
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 'diffy'
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:\n %s: %s" % [type, @desc]
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 == b
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 Diffy::Diff.new(a.first, b.first)
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.8
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
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTkxMDA3MDk0MTU2WhcN
15
- MjAxMDA2MDk0MTU2WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC2E/7O
17
- uQtSwiOjY7M3mU5cZOQeF3mNUXsYF9Sg37oHlh9a960rQ86X/JTNjw/H9GpMwxQA
18
- bZCEElZUfMFTCQmxK46elKkhd1q4A1vClsYNKGwT85yO619Mqq7W7RzqsyuMN6AC
19
- EvtUXz3FJ9hXtacFEXdUNMu7zuV+GMfeOXZlsORKGsI5GR9XPQ0GquyZr8sdOJh0
20
- ijFDX+MPg3R2Px1NHu/iYZZeh/AHmdce4tTbQpqIE+wlc66P2NjOOZ6y3Yc2V/Mc
21
- XfbQMq02FXwVVX60bTzh6KFvrYifsLQvGdW4TEY0+JOAyTUIO/WxwYDTJ+6suES7
22
- r9sUEKxzJ6EHmPj3olz+86PwsOySY073euOXA3afBTvYkaVm2WVzUjBTz35+F7pv
23
- Ov2mmUDkNUUD8ZftL3QZD39SWuR6QK6uBuunhEGTIXLspAMVECTeNpi8wRMafWgE
24
- dVKiSjRVBBLfW2z1pmVj6U6ZTjKGeznKEG94AcApj8xVMw5sDIidyGxcW5cCAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUe5iftB4c
26
- UGlQ0UyqEkg2Qq02Sn4wJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
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
- BgkqhkiG9w0BAQsFAAOCAYEATciFgyRCUKVEJFrO291gbPIEAkeCsLtCRxB0Qz7R
29
- Z/7bcVTdrk8/S2VQupuuni8UGeIQuxMTIkoWshCztNrIJ77xxdvk6/WqKqyxeRyZ
30
- WKp6dPBvK0CXPRnboicdgWyiJZFr8WXGHmJuRG+SIhMPjR552kTpoKuUqf/aMs0q
31
- krS/PjRP7MX2lCx2ZYi6/CdwyJmI5tO4ffXBNFpfquiwAa/tzPKKpbzEFjuUdTs0
32
- ByW7I/n/h2fQkhR+/hbzh/xzCuRatkvUkAHmtW1StGSbPn0Hoam6hwWp+NuuUfEU
33
- tA2AMgGW5/Ft/vBLFyCfMr/9x6QJEW3VtfwqL8zie4jp2sVCrW1gdotA3+4XdaEF
34
- fUI/y8o+W/4oN7aCyhUzCXTSlGzwEHLqqCYX3DFerUd+mdQhSNLYAQuJtj/4zoNc
35
- U1Tt/KPr9FeWlvj5ihis4H6UPWZxY2G9k94y2W7ylWkcKNXR8i45F+nCzDL3W0Ll
36
- Vt/9GDfEI95Jg3QNvXMDdzNf
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: 2020-09-03 00:00:00.000000000 Z
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: diffy
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: '3.4'
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: '3.4'
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.1
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.1
119
+ version: 1.3.6
120
120
  description:
121
- email: james@jamesrobertson.eu
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
- rubygems_version: 3.0.3
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