testkit123 0.4.0 → 0.5.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 076b25cb13801fa21a785e8fc79f3907725af4ad499daa6f82901bb7896fdadd
4
- data.tar.gz: bf84ef76c61f536d6b9a21e65966d75dc37e1dbf5d554ae8bb02103e8dabc9d5
3
+ metadata.gz: 2bb68a709ae975a1f5fdb89fd11258535f4245868ca3a788027cb222bd379d4a
4
+ data.tar.gz: 3f3406a2e22fce8f96a0d9c357bfd285fcfd9220ed722dee9a5699bbff766e9e
5
5
  SHA512:
6
- metadata.gz: e8a89f4616ebbed893740f995269dc06541bec6187b1587dfe89d375c17233dc69b7aa63d4e899d0746fc05922aeb1e3bce0384cc80602ec9bc923e6a7e599a5
7
- data.tar.gz: a3bae8298736a349801abea83dcdede98c9ca3edf03ee3191acbdcea0f1e1042eeb18b7208a5487ae1244eb2afb2cd7688c15c556835b9b2ef7801477829eed6
6
+ metadata.gz: 5e7cc861ff7fa8782c0e5457b47f62130c3d0daa7e511640ece793477b2c9aff91d8ed0daec117b41b099522ba5cb240fca7e4848170694cfd4bbb35c0a505be
7
+ data.tar.gz: eb47de3581c38f7010589c1b885e9bca6bb160859303270e1749f43758e60492d55ce6649346939287ae4df82d49c639742c2209f307e66b46263b148c7cd7fb
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/testkit123.rb CHANGED
@@ -9,70 +9,70 @@ require 'rxfreadwrite'
9
9
 
10
10
 
11
11
  module StringFormat
12
-
12
+
13
13
  refine String do
14
-
14
+
15
15
  def camelize
16
- self.split('_').collect(&:capitalize).join
16
+ self.split('_').collect(&:capitalize).join
17
17
  end
18
-
18
+
19
19
  end
20
-
20
+
21
21
  end
22
22
 
23
23
  class TestKit123
24
24
  using StringFormat
25
25
  using ColouredText
26
-
26
+
27
27
  attr_reader :testdata_file
28
-
29
- def initialize(templates: {testdata: nil, testx: nil}, project: nil,
30
- debug: true, localpath: nil, datapath: nil,
28
+
29
+ def initialize(templates: {testdata: nil, testx: nil}, project: nil,
30
+ debug: true, localpath: nil, datapath: nil,
31
31
  gemtest_url: nil, rubyver: 'ruby-2.5.1')
32
32
 
33
33
  @debug = debug
34
34
  @h = templates
35
-
35
+
36
36
  #return unless project
37
-
37
+
38
38
  @localpath, @datapath, @gemtest_url = localpath, datapath, gemtest_url
39
- @rubyver = rubyver
40
-
39
+ @rubyver = rubyver
40
+
41
41
  return unless project
42
-
42
+
43
43
  @project_config = if project =~ /\.txt$/ then
44
44
  project
45
45
  else
46
- File.join(localpath, project + '.txt')
46
+ File.join(localpath, project + '.txt')
47
47
  end
48
-
49
- puts '@project_config: ' + @project_config.inspect if @debug
48
+
49
+ puts '@project_config: ' + @project_config.inspect if @debug
50
50
  puts 'localpath: ' + localpath.inspect if @debug
51
-
52
- if File.exists? @project_config then
53
-
51
+
52
+ if File.exist? @project_config then
53
+
54
54
  config = SimpleConfig.new(@project_config, debug: false).to_h
55
55
  puts ('config: ' + config.inspect).debug if @debug
56
-
56
+
57
57
  proj = config[:project]
58
58
  puts 'create_standalone: proj: ' + proj.inspect if @debug
59
-
59
+
60
60
  raise 'config[:data_path] not found' unless config[:data_path]
61
-
61
+
62
62
  datafilepath = config[:data_path] + '/' + proj
63
- test_rbfile = File.join(datafilepath, "test_#{proj}.rb")
64
-
63
+ test_rbfile = File.join(datafilepath, "test_#{proj}.rb")
64
+
65
65
  ext = (config[:testdata_ext] and config[:testdata_ext][/\.?td$/]) ? 'td' : 'xml'
66
- @testdata_file = File.join(datafilepath, "testdata_#{proj}.#{ext}")
67
-
66
+ @testdata_file = File.join(datafilepath, "testdata_#{proj}.#{ext}")
67
+
68
68
  end
69
69
 
70
70
  end
71
71
 
72
72
  # expects a test node; see new_testnode()
73
73
  #
74
- def add_test(testnode)
75
-
74
+ def add_test(testnode)
75
+
76
76
  s2 , filetype = RXFReader.read @testdata_file
77
77
  puts 'filetype: ' + filetype.inspect if @debug
78
78
 
@@ -83,13 +83,13 @@ class TestKit123
83
83
  end
84
84
 
85
85
  puts 'xml: ' + xml.inspect if @debug
86
-
86
+
87
87
  doc = Rexle.new(xml)
88
88
  id = doc.root.xpath('records/test/summary/path/text()').last.to_i + 1
89
89
  testnode.root.element('summary/path').text = id.to_s
90
90
  doc.root.element('records').add testnode
91
91
  return doc
92
- end
92
+ end
93
93
 
94
94
  def create_files(project=@project_config)
95
95
 
@@ -97,12 +97,12 @@ class TestKit123
97
97
 
98
98
  puts '1) Reading the config file' if @debug
99
99
  raise "missing the config file " unless @project_config
100
- raise "config file not found" unless File.exists? @project_config
100
+ raise "config file not found" unless File.exist? @project_config
101
101
 
102
102
  config_file = @project_config
103
-
103
+
104
104
  puts 'config_file: ' + config_file.inspect if @debug
105
-
105
+
106
106
  config = SimpleConfig.new(config_file).to_h
107
107
  puts 'config : ' + config.inspect if @debug
108
108
 
@@ -137,17 +137,17 @@ class TestKit123
137
137
  testdata = @h[:testdata].gsub(/(?<=\.)\w+$/, ext)
138
138
  puts 'testdata: ' + testdata.inspect if @debug
139
139
  buffer_testdata, _ = RXFReader.read(testdata)
140
-
140
+
141
141
  FileUtils.mkdir_p datafilepath
142
-
142
+
143
143
  testdata_file = File.join(datafilepath, "testdata_#{proj}.#{ext}")
144
- File.write testdata_file, eval('%{' + buffer_testdata + '}')
144
+ File.write testdata_file, eval('%{' + buffer_testdata + '}')
145
145
 
146
146
  test_template_rsf = @h[:testx]
147
147
  buffer_test, _ = RXFReader.read(test_template_rsf)
148
148
 
149
149
  test_rsffile = File.join(config[:data_path], "#{proj}.rsf")
150
- File.write test_rsffile, eval('%{' + buffer_test + '}')
150
+ File.write test_rsffile, eval('%{' + buffer_test + '}')
151
151
 
152
152
  buffer_rb = %{#!/usr/bin/env ruby
153
153
 
@@ -155,9 +155,9 @@ buffer_rb = %{#!/usr/bin/env ruby
155
155
 
156
156
  #require 'timecop'
157
157
 
158
-
158
+
159
159
  class Test#{config[:classname]} < Testdata::Base
160
-
160
+
161
161
  # 2011-07-24 19:52:15
162
162
  #Timecop.freeze(Time.local(2011, 7, 24, 19, 52, 15))
163
163
 
@@ -171,45 +171,45 @@ end
171
171
 
172
172
  test_rbfile = File.join(datafilepath, "test_#{proj}.rb")
173
173
  puts 'reading the ruby template file ...' if @debug
174
- File.write test_rbfile, eval('%{' + buffer_rb + '}')
174
+ File.write test_rbfile, eval('%{' + buffer_rb + '}')
175
175
 
176
176
  "finished processing #{proj}"
177
177
  end
178
-
178
+
179
179
  def create_standalone(n)
180
-
180
+
181
181
  # use the test number to find the test to copy from the test file
182
182
  puts '@project_config: ' + @project_config.inspect
183
183
 
184
184
  config = SimpleConfig.new(@project_config, debug: false).to_h
185
185
  puts ('config: ' + config.inspect).debug if @debug
186
-
186
+
187
187
  proj = config[:project]
188
188
  puts 'create_standalone: proj: ' + proj.inspect if @debug
189
-
189
+
190
190
  raise 'config[:data_path] not found' unless config[:data_path]
191
-
191
+
192
192
  datafilepath = config[:data_path] + '/' + proj
193
- test_rbfile = File.join(datafilepath, "test_#{proj}.rb")
194
-
193
+ test_rbfile = File.join(datafilepath, "test_#{proj}.rb")
194
+
195
195
  ext = (config[:testdata_ext] and config[:testdata_ext][/\.?td$/]) ? 'td' : 'xml'
196
196
  testdata_file = File.join(datafilepath, "testdata_#{proj}.#{ext}")
197
197
  puts 'testdata_file: ' + testdata_file.inspect if @debug
198
198
  puts 'source code filepath: ' + test_rbfile.inspect if @debug
199
-
199
+
200
200
  s = File.read(test_rbfile).gsub(/^( )?end/,'')
201
201
  require_gems = s.scan(/^require +['"]([^'"]+)/).map(&:first)
202
-
202
+
203
203
  before_test = s[/(?<=def tests\(\)).*/m].split(/ test /)[0].lstrip
204
204
  puts '** before_test: ' + before_test.inspect
205
205
 
206
206
  a = s.split(/(?= test )/)
207
207
  a.shift
208
208
  puts 'a: ' + a.inspect if @debug
209
-
209
+
210
210
  tests = a.map do |x|
211
211
  r = x.match(/(?<=['"])(?<test>[^"']+)['"]\s+do\s+\|(?<raw_args>[^\|]+)/)
212
-
212
+
213
213
  [r[:test], r[:raw_args].split(/, */)]
214
214
  end
215
215
 
@@ -223,35 +223,35 @@ end
223
223
  end
224
224
 
225
225
  puts 'xml: ' + xml.inspect if @debug
226
-
226
+
227
227
  doc = Rexle.new(xml)
228
228
  puts 'after doc : ' if @debug
229
229
  r = doc.root.xpath('records//test') || doc.root.xpath('records/test')
230
-
230
+
231
231
  if @debug then
232
- puts 'r: ' + r.inspect
232
+ puts 'r: ' + r.inspect
233
233
  puts 'r.length: ' + r.length.inspect
234
234
  puts 'n: ' + n.inspect
235
235
  end
236
-
236
+
237
237
  testnode = r[n-1]
238
238
  puts 'testnode: ' + testnode.xml.inspect if @debug
239
-
239
+
240
240
  title = testnode.text('summary/type')
241
241
  puts ('title: ' + title.inspect).debug if @debug
242
242
  puts ('tests: ' + tests.inspect).debug if @debug
243
243
  i = tests.index tests.assoc(title)
244
244
  puts 'i: ' + i.inspect if @debug
245
-
245
+
246
246
  testcode = a[i].strip.lines[1..-2].map do |line|
247
247
  line.sub(/^ {6}/,'')
248
248
  end.join
249
-
250
- # replace the input variable names with the input variable names defined
249
+
250
+ # replace the input variable names with the input variable names defined
251
251
  # in the testdata file and prefix them with *test_*.
252
-
252
+
253
253
  input_vars = testnode.xpath('records/input/summary/*/name()')
254
-
254
+
255
255
  if @debug then
256
256
  puts 'input_vars: ' + input_vars.inspect
257
257
  puts 'tests[i][1]: ' + tests[i][1].inspect
@@ -260,7 +260,7 @@ end
260
260
 
261
261
  tests[i][1].zip(input_vars).each do |x|
262
262
  testcode.gsub!(/\b#{x[0]}\b/, 'test_' + x[1])
263
- end
263
+ end
264
264
 
265
265
  args = testnode.xpath('records/input/summary/*').map do |input|
266
266
 
@@ -273,19 +273,19 @@ end
273
273
  end
274
274
 
275
275
  end
276
-
276
+
277
277
  vars = testnode.xpath('records/input/summary/*').map(&:name)
278
-
279
- puts 'args: ' + args.inspect if @debug
280
-
278
+
279
+ puts 'args: ' + args.inspect if @debug
280
+
281
281
  vars.each do |var|
282
- testcode.gsub!(/\b#{var}\b/, 'test_' + var)
282
+ testcode.gsub!(/\b#{var}[^:]\b/, 'test_' + var)
283
283
  end
284
-
284
+
285
285
  puts 'gems: ' + require_gems.inspect if @debug
286
-
286
+
287
287
  codex = testcode.rstrip.lines
288
-
288
+
289
289
  "# Test %d. Type: %s\n# Description: %s\n" \
290
290
  % [n, title, testnode.text('summary/type')] + \
291
291
  "# --------------------------------------------\n\n" + \
@@ -298,45 +298,45 @@ end
298
298
  end
299
299
 
300
300
  def delete_files(s=nil)
301
-
301
+
302
302
  filepath = if s =~ /\.txt$/ then
303
303
  project
304
304
  elsif s
305
- File.join(@localpath, s + '.txt')
305
+ File.join(@localpath, s + '.txt')
306
306
  else
307
307
  @project_config
308
308
  end
309
-
309
+
310
310
  puts 'filepath: ' + filepath.inspect if @debug
311
-
311
+
312
312
  config = SimpleConfig.new(filepath).to_h
313
-
313
+
314
314
  proj = config[:project]
315
315
  datafilepath = config[:data_path] + '/' + proj
316
316
  FileUtils.rm_rf datafilepath
317
-
317
+
318
318
  filepath = config[:local_path] + '/' + proj
319
319
  FileUtils.rm_rf filepath
320
-
320
+
321
321
  FileUtils.rm File.join(config[:data_path], "#{proj}.rsf")
322
-
322
+
323
323
  proj + ' test files deleted'
324
-
324
+
325
325
  end
326
-
326
+
327
327
  def new_testnode(s=nil, type: '', inputs: {}, outputs: {result: ''})
328
-
328
+
329
329
  if s then
330
-
331
- # the scan is intended to find the input variables from an
330
+
331
+ # the scan is intended to find the input variables from an
332
332
  # example Ruby script
333
-
333
+
334
334
  inputs = s.scan(/test_([\w]+) += +['"]([^'"]+)/)\
335
- .inject({}){|r,x| r.merge(x.first.to_sym => x.last)}
335
+ .inject({}){|r,x| r.merge(x.first.to_sym => x.last)}
336
336
  end
337
-
337
+
338
338
  # observe *test* is masked with *_test* because it is a built-in method name.
339
-
339
+
340
340
  h = {
341
341
  _test: {
342
342
  summary: {
@@ -353,14 +353,14 @@ end
353
353
  summary: outputs,
354
354
  records: {}
355
355
  }
356
- }
356
+ }
357
357
  }
358
358
  }
359
359
 
360
360
  a = RexleBuilder.new(h, debug: false).to_a
361
361
 
362
362
  Rexle.new(a)
363
-
363
+
364
364
  end
365
365
 
366
366
  def new_project(project='myproject', classname=nil, save: false)
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testkit123
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -35,7 +35,7 @@ cert_chain:
35
35
  DN5UNRowuQ2fXKFO7nmgUH33wBhFAs2KXZPPR6sWn2JxLUlMMngzSypdB7zQn7my
36
36
  FmX/ZG5sgd+RpEYbxgC2cdNk
37
37
  -----END CERTIFICATE-----
38
- date: 2022-02-21 00:00:00.000000000 Z
38
+ date: 2023-02-02 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: simple-config
@@ -46,7 +46,7 @@ dependencies:
46
46
  version: '0.7'
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 0.7.2
49
+ version: 0.7.3
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
@@ -56,7 +56,7 @@ dependencies:
56
56
  version: '0.7'
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 0.7.2
59
+ version: 0.7.3
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: testdata_text
62
62
  requirement: !ruby/object:Gem::Requirement
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
105
  requirements: []
106
- rubygems_version: 3.2.22
106
+ rubygems_version: 3.4.4
107
107
  signing_key:
108
108
  specification_version: 4
109
109
  summary: Generates a test suite of files (for use with the testdata gem) from a config
metadata.gz.sig CHANGED
Binary file