testdata 1.1.8 → 1.1.12

Sign up to get free protection for your applications and to get access to all the features.
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