cuker 0.5.15 → 0.5.21

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 53ee9df71c45ebfe470bc55fac4b042237a53a5bbc13b54f0626d0aa79f157f2
4
- data.tar.gz: 9dbb308de7cade288292180fec03a0eeaa5e7cd1d615b1ba05eb574d988da6a2
3
+ metadata.gz: 7969f3a6f08ea4d5b63178fb158efa0da89a8aa1444fc1c1fe991ae6781adb6e
4
+ data.tar.gz: abfc21dc42ae79816b24df697c5d7ceff360c69abc35f4d75c682acf5a4ace04
5
5
  SHA512:
6
- metadata.gz: d2eff443de2f3ae8d757c8b15abb6ef286dd70561fc0f07e0e16460d5b425772a99533fe9b5e9f8fa62da81ce49e047e975e16c38ace3866128d00b893261cd3
7
- data.tar.gz: 2379c423926e94ea62c6fa07da8e1dbf2fc80da5bae39989ba76a9323b1d7bae1a1484cb6a7390969136f3b9f9bde6785cf9b963150c0b1268c4d547a20e2dad
6
+ metadata.gz: 532fd2f5ba0374dfbf3b1c28eb8b2a43ceb2402449c49e45d647f05ff128c0ceeeebb1be7ed87c2df12f37f6dd234fc7e35c8fc61f8dcf2b7516c89ea952b686
7
+ data.tar.gz: d7538e53094c40302fd459b249bc5c106f0ac30ce5ef4d27c4a55b8841ce1963acbce8a85cc11ec4930d8c37125cad8e4e1f826454d400b2402b3b27e98fa3c0
@@ -19,34 +19,45 @@ module Cuker
19
19
  class CukerCmd
20
20
  include LoggerSetup
21
21
 
22
- CONSTS = []
23
- PRESETS = {
24
- :simple_csv => [CsvModel, CsvWriter],
25
- :simple_jira => [JiraModel, JiraWriter],
26
- :monospaced_jira => [JiraMonoModel, JiraWriter],
27
- # :simple_excel => [RubyXLModel, RubyXLWriter],
28
- }
22
+ PRODUCERS = {}
23
+ PRODUCERS[:simple_csv] = [CsvModel, CsvWriter]
24
+ PRODUCERS[:simple_jira] = [JiraModel, JiraWriter]
25
+ PRODUCERS[:monospaced_jira] = [JiraMonoModel, JiraWriter]
26
+ PRODUCERS[:jira_excel] = [RubyXLModel, RubyXLWriter]
27
+
28
+ PRESETS = {}
29
+ PRESETS[:jira_package] = [:simple_jira, :jira_excel]
30
+ PRESETS[:jira_text] = [:simple_jira]
31
+ PRESETS[:jira_excel] = [:jira_excel]
32
+
29
33
 
30
34
  # desc "report PRESET_KEY [FEATURE_PATH [REPORT_PATH [REPORT_FILE_NAME [LOG_LEVEL]]]]",
31
35
  # "reports parsed results into \nREPORT_PATH/REPORT_FILE_NAME \nfor all '*.feature' files in the given FEATURE_PATH\nSTDIO LOG_LEVEL adjustable\n"
32
36
 
33
- def report preset_key, feat_path = "../", report_file_name = 'sample_report', report_path = ".", log_level = :error
37
+ def report preset_key, feat_path = "../", report_file_name = 'sample_report', report_path_input = ".", log_level = :info
34
38
  init_logger log_level
35
- report_path = File.join report_path, 'reports', LOG_TIME_TODAY
39
+ output_files = []
40
+ producers = PRESETS[preset_key]
36
41
 
37
- msg = "running '#{preset_key.to_s.upcase}' reporter @\n Feature Path: '#{feat_path}' \n Report Path => '#{report_path}' - '#{report_file_name}'\n"
42
+ @log.info "Using preset: #{preset_key} => #{producers}"
43
+ gr = GherkinRipper.new feat_path
44
+ ast_map = gr.ast_map
38
45
 
39
- @log.info msg
40
- puts msg
46
+ producers.each do |producer|
47
+ report_path = File.join report_path_input, 'reports', LOG_TIME_TODAY
48
+ msg = "running '#{preset_key.to_s.upcase}' reporter @\n Feature Path: '#{feat_path}' \n Report Path => '#{report_path}' - '#{report_file_name}'\n"
41
49
 
42
- model, writer = PRESETS[preset_key]
50
+ @log.info msg
51
+ puts msg
52
+ model, writer = PRODUCERS[producer]
43
53
 
44
- gr = GherkinRipper.new feat_path
45
- ast_map = gr.ast_map
46
- preset_model = model.new ast_map
47
- preset_writer = writer.new
48
- grr = GherkinReporter.new preset_writer, preset_model, report_path, report_file_name
49
- File.expand_path grr.write
54
+ preset_model = model.new ast_map
55
+ preset_writer = writer.new
56
+ grr = GherkinReporter.new preset_writer, preset_model, report_path, report_file_name
57
+
58
+ output_files << File.expand_path(grr.write)
59
+ end
60
+ output_files
50
61
  end
51
62
 
52
63
  private
@@ -10,19 +10,24 @@ class GherkinReporter
10
10
 
11
11
  attr_accessor :file_path, :workbook
12
12
 
13
- def initialize(writer, model, loc, file_name = nil)
13
+ def initialize(writer, model, path, file_name = nil)
14
14
  init_logger
15
15
 
16
16
  @writer = writer
17
17
  @model = model
18
18
 
19
- @file_path = FileHelper.file_path(loc, "#{LOG_TIME_NOW}_#{file_name}")
19
+ @file_path = FileHelper.file_path(path, "#{LOG_TIME_NOW}_#{file_name}")
20
20
  @log.info "Report file => #{@file_name}#{@writer.ext}"
21
21
  end
22
22
 
23
23
  def write
24
+ @writer.write @model, @file_path
25
+ end
26
+
27
+ def old_write
24
28
  # todo: why don't we just give the writer the model?
25
29
  file_name = @writer.make_new_file @file_path
30
+ #todo: redo, causing issue!
26
31
  @writer.write_title @model.title
27
32
  @model.data.each {|row| @writer.write_new_row row}
28
33
  @writer.finishup
@@ -21,14 +21,15 @@ module Cuker
21
21
 
22
22
  @location = path.strip
23
23
  @location = '.' if @location.empty? # handle blank path searching all features
24
- @features = get_features @location
25
24
 
26
- @log.trace "Gherkin ripper running at #{path}"
25
+ ext = '.feature'
26
+ @features = get_files @location, ext
27
27
 
28
+ @log.trace "Gherkin ripper running at #{path}"
28
29
  @parser = Gherkin::Parser.new
29
30
  @ast_map = {}
30
31
 
31
- @log.info "Parsed '.feature' files @ #{path} = #{@features.size} files"
32
+ @log.trace "Parsed '.feature' files @ #{path} = #{@features.size} files"
32
33
  end
33
34
 
34
35
  def ast_map
@@ -41,19 +42,20 @@ module Cuker
41
42
  # if you need to ignore any pattern of files, change this regex to match those patterns
42
43
  IGNORE_EXP = /^$/
43
44
 
44
- # dir glob for all feature files
45
- # @param location dir location of all the feature files
46
- def get_features(path_or_file)
47
- ext = '.feature'
45
+ # dir glob for all files with extension = ext
46
+ # @param location dir location of all the ext files
47
+ def get_files(path_or_file, ext = '.feature')
48
48
  files = FileHelper.get_files(path_or_file, ext, IGNORE_EXP)
49
49
  files = FileHelper.get_file(path_or_file, ext, IGNORE_EXP) if files.empty?
50
50
  raise NoFilesFoundError.new "No '#{ext}' files found @ path '#{path_or_file}'... " if files.empty?
51
+ @log.info "Number of '#{ext}' files to parse : @#{path_or_file} = #{files.size}"
51
52
  files
52
53
  end
53
54
 
54
55
  def parse_all
55
56
  parse_hsh = {}
56
57
  @features.each do |feat|
58
+ @log.info "Parsing file: #{feat}"
57
59
  feature_text = File.read(feat)
58
60
  scanner = TokenScanner.new(feature_text)
59
61
  parse_handle(feat) {
@@ -85,7 +85,7 @@ module Cuker
85
85
  if hsh[:tags] and hsh[:tags].any?
86
86
  hsh[:tags].map {|tag| tag[:name]}
87
87
  else
88
- @log.warn "No Tags found in #{hsh[:keyword]} @ #{@file_path}"
88
+ @log.debug "No Tags found in #{hsh[:keyword]} @ #{@file_path}"
89
89
  []
90
90
  end
91
91
  end
@@ -56,7 +56,7 @@ module Cuker
56
56
 
57
57
  def make_rows
58
58
  if @asts.nil? or @asts.empty?
59
- @log.warn "No asts to parse!"
59
+ @log.debug "No asts to parse!"
60
60
  return []
61
61
  end
62
62
 
@@ -120,7 +120,7 @@ module Cuker
120
120
  yield feat_tags, feat_title, child
121
121
  end
122
122
  else
123
- @log.warn "No Features found in file @ #{@file_path}"
123
+ @log.debug "No Features found in file @ #{@file_path}"
124
124
  end
125
125
  end
126
126
 
@@ -138,7 +138,7 @@ module Cuker
138
138
  yield tags, item_title, child[:type], get_steps(child)
139
139
  # todo: think about new examples in new lines
140
140
  else
141
- @log.warn "Unknown type '#{child[:type]}' found in file @ #{@file_path}"
141
+ @log.debug "Unknown type '#{child[:type]}' found in file @ #{@file_path}"
142
142
  end
143
143
  end
144
144
 
@@ -152,7 +152,7 @@ module Cuker
152
152
  content += in_example(hsh[:examples]) if hsh[:examples]
153
153
  content
154
154
  else
155
- @log.warn "No Tags found in #{hsh[:keyword]} @ #{@file_path}"
155
+ @log.debug "No Tags found in #{hsh[:keyword]} @ #{@file_path}"
156
156
  []
157
157
  end
158
158
  end
@@ -173,7 +173,7 @@ module Cuker
173
173
  eg_body.map {|row_hsh| res << surround(in_table_row(row_hsh), '|')}
174
174
 
175
175
  else
176
- @log.warn "Unknown type '#{item[:type]}' found in file @ #{@file_path}"
176
+ @log.debug "Unknown type '#{item[:type]}' found in file @ #{@file_path}"
177
177
  end
178
178
  end
179
179
  res
@@ -183,7 +183,7 @@ module Cuker
183
183
  if row_hsh[:type] == :TableRow
184
184
  row_hsh[:cells].map(&method(:in_table_cell))
185
185
  else
186
- @log.warn "Expected :TableRow in #{row_hsh} @ #{@file_path}"
186
+ @log.debug "Expected :TableRow in #{row_hsh} @ #{@file_path}"
187
187
  []
188
188
  end
189
189
  end
@@ -193,7 +193,7 @@ module Cuker
193
193
  val = cell_hsh[:value].strip
194
194
  val.empty? ? JIRA_BLANK : val
195
195
  else
196
- @log.warn "Expected :TableCell in #{cell_hsh} @ #{@file_path}"
196
+ @log.debug "Expected :TableCell in #{cell_hsh} @ #{@file_path}"
197
197
  JIRA_BLANK
198
198
  end
199
199
  end
@@ -214,7 +214,7 @@ module Cuker
214
214
  # todo: padding as needed
215
215
  yield step_ary
216
216
  else
217
- @log.warn "Unknown type '#{item[:type]}' found in file @ #{@file_path}"
217
+ @log.debug "Unknown type '#{item[:type]}' found in file @ #{@file_path}"
218
218
  end
219
219
  end
220
220
  end
@@ -230,16 +230,16 @@ module Cuker
230
230
  return res
231
231
  elsif arg[:type] == :DocString
232
232
  # todo: handle if needed
233
- @log.warn "Docstrings found in '#{arg}' found in file @ #{@file_path}"
233
+ @log.debug "Docstrings found in '#{arg}' found in file @ #{@file_path}"
234
234
  else
235
- @log.warn "Unknown type '#{arg[:type]}' found in file @ #{@file_path}"
235
+ @log.debug "Unknown type '#{arg[:type]}' found in file @ #{@file_path}"
236
236
  end
237
237
  []
238
238
  end
239
239
 
240
240
  def name_merge hsh, max_len = TITLE_MAX_LEN
241
241
  str = ""
242
- @log.debug "name merge for #{hsh} with max_len (#{max_len})"
242
+ @log.trace "name merge for #{hsh} with max_len (#{max_len})"
243
243
  str += add_newlines!(hsh[:name].strip.force_encoding("UTF-8"), max_len) if hsh[:name]
244
244
  str += add_newlines!("\n#{hsh[:description].strip.force_encoding("UTF-8")}", max_len) if hsh[:description]
245
245
  str
@@ -1,8 +1,10 @@
1
1
  require_relative '../writers/abstract_writer'
2
+ require 'text-table'
2
3
 
3
4
  module Cuker
4
5
  module ExcelSupport
5
6
  EXCEL_BLANK = ''
7
+ EXCEL_TABLE_PADDING = 7
6
8
 
7
9
  def surround_panel str, title = nil
8
10
  if title
@@ -59,6 +61,32 @@ module Cuker
59
61
  s.empty? ? EXCEL_BLANK : s
60
62
  end
61
63
 
64
+ # Properly spaced out tables
65
+ # def tableify header_ary, rows_ary
66
+ # @return [Array] tableified string array
67
+ # https://www.rubydoc.info/gems/text-table/1.2.4
68
+ def tableify header_and_rows_ary, padding = 0
69
+ table = Text::Table.new(:horizontal_padding => 1,
70
+ :vertical_boundary => '-',
71
+ :horizontal_boundary => '|',
72
+ :boundary_intersection => '+',
73
+ # :boundary_intersection => '-',
74
+ # :boundary_intersection => ' ',
75
+ :first_row_is_head => true,
76
+ # :rows => header_and_rows_ary # works only for to_table
77
+ )
78
+ table.head = header_and_rows_ary[0]
79
+ table.rows = header_and_rows_ary[1..-1]
80
+
81
+ # table.to_s
82
+ # table.rows = header_and_rows_ary
83
+ #
84
+ # table = header_and_rows_ary.to_table(:first_row_is_head => true)
85
+
86
+ res = table.to_s.split("\n")
87
+ res.map {|row_str| ' ' * padding + row_str}
88
+ end
89
+
62
90
  end
63
91
  class RubyXLModel < AbstractModel
64
92
  include LoggerSetup
@@ -74,7 +102,9 @@ module Cuker
74
102
  EXCEL_ROW_SEP = '|'
75
103
  EXCEL_EMPTY_LINE = ' '
76
104
  EXCEL_NEW_LINE = "\n"
77
- EXCEL_HORIZ_RULER = ''
105
+ EXCEL_HORIZ_RULER = ' '
106
+
107
+ EXCEL_OFFSET = 6
78
108
 
79
109
  def initialize ast_map
80
110
  super
@@ -92,6 +122,7 @@ module Cuker
92
122
 
93
123
  def make_order
94
124
  [
125
+ # todo: template{:col_key => ["Title text",fill_color,font, etc]},
95
126
  {:counter => "Sl.No"},
96
127
  {:feature => "Feature"},
97
128
  {:background => "Background"},
@@ -127,16 +158,17 @@ module Cuker
127
158
 
128
159
  def make_rows
129
160
  if @asts.nil? or @asts.empty?
130
- @log.warn "No asts to parse!"
161
+ @log.debug "No asts to parse!"
131
162
  return []
132
163
  end
133
164
 
134
165
  feat_counter = 1
135
- feat_content = ''
136
- bg_content = ''
166
+ feat_content = []
167
+ bg_content = []
137
168
 
138
169
  res = []
139
170
  @asts.each do |file_path, ast|
171
+ @log.debug "Understanding file: #{file_path}"
140
172
  @file_path = file_path
141
173
  in_feat_counter = 0
142
174
 
@@ -144,8 +176,8 @@ module Cuker
144
176
  in_feature(ast) do |feat_tags_ary, feat_title, feat_item|
145
177
  in_item(feat_item) do |tags_ary, type, item_title, content_ary, example_ary|
146
178
  row_hsh = {}
179
+ feat_content = excel_title FEATURE, feat_title
147
180
  if type == :Background or type == :Feature
148
- feat_content = excel_title FEATURE, feat_title
149
181
  bg_content = [excel_title(BACKGROUND, item_title)] + content_ary
150
182
  else
151
183
  # if type == :Scenario or type == :ScenarioOutline
@@ -160,6 +192,7 @@ module Cuker
160
192
  row_hsh[:test_designer] = ""
161
193
  row_hsh[:comments] = ""
162
194
 
195
+ # row_hsh[:examples] = "" # is nil by default
163
196
  if type == :ScenarioOutline
164
197
  row_hsh[:examples] = excel_content_format example_ary
165
198
  end
@@ -172,8 +205,8 @@ module Cuker
172
205
  end
173
206
  end
174
207
  feat_counter += 1
175
- feat_title = ''
176
- bg_content = ''
208
+ feat_title = []
209
+ bg_content = []
177
210
  end
178
211
  @file_path = nil
179
212
  res
@@ -189,7 +222,7 @@ module Cuker
189
222
  children = feat[:children]
190
223
  children.each {|child| yield feat_tags, feat_title, child}
191
224
  else
192
- @log.warn "No Features found in file @ #{@file_path}"
225
+ @log.debug "No Features found in file @ #{@file_path}"
193
226
  end
194
227
  end
195
228
 
@@ -207,7 +240,7 @@ module Cuker
207
240
  yield tags, child[:type], item_title, get_steps(child), get_examples(child[:examples])
208
241
  # todo: think about new examples in new lines
209
242
  else
210
- @log.warn "Unknown type '#{child[:type]}' found in file @ #{@file_path}"
243
+ @log.debug "Unknown type '#{child[:type]}' found in file @ #{@file_path}"
211
244
  end
212
245
  end
213
246
 
@@ -216,37 +249,37 @@ module Cuker
216
249
  if step[:type] == :Step
217
250
  step_ary = []
218
251
  step_str = [
219
- ((excel_bold(step[:keyword].strip)).rjust(6)), # bolding the keywords
252
+ ((excel_bold(step[:keyword].strip)).rjust(EXCEL_OFFSET)), # bolding the keywords
220
253
  (step[:text].strip)
221
254
  ].join(' ')
222
255
 
223
256
  # step_ary << excel_monospace(step_str)
224
257
  step_ary << (step_str)
225
258
 
226
- step_ary += in_step_args(step[:argument]) if step[:argument]
259
+ step_ary += tableify(get_step_args(step[:argument]), EXCEL_TABLE_PADDING) if step[:argument]
227
260
  # todo: DOC string handle?
228
- # todo: padding as needed
229
261
  yield step_ary
230
262
  else
231
- @log.warn "Unknown type '#{item[:type]}' found in file @ #{@file_path}"
263
+ @log.debug "Unknown type '#{item[:type]}' found in file @ #{@file_path}"
232
264
  end
233
265
  end
234
266
  end
235
267
 
236
268
  # helps handle tables for now
237
- def in_step_args arg
269
+ def get_step_args arg
238
270
  if arg[:type] == :DataTable
239
271
  res = []
240
272
  arg[:rows].each_with_index do |row, i|
241
- sep = i == 0 ? EXCEL_TITLE_SEP : EXCEL_ROW_SEP
242
- res << surround(row[:cells].map {|hsh| excel_blank_pad hsh[:value]}, sep)
273
+ # sep = i == 0 ? EXCEL_TITLE_SEP : EXCEL_ROW_SEP
274
+ # res << surround(row[:cells].map {|hsh| excel_blank_pad hsh[:value]}, sep)
275
+ res << row[:cells].map {|hsh| hsh[:value]}
243
276
  end
244
277
  return res
245
278
  elsif arg[:type] == :DocString
246
279
  # todo: handle if needed
247
- @log.warn "Docstrings found in '#{arg}' found in file @ #{@file_path}"
280
+ @log.debug "Docstrings found in '#{arg}' found in file @ #{@file_path}"
248
281
  else
249
- @log.warn "Unknown type '#{arg[:type]}' found in file @ #{@file_path}"
282
+ @log.debug "Unknown type '#{arg[:type]}' found in file @ #{@file_path}"
250
283
  end
251
284
  []
252
285
  end
@@ -258,7 +291,7 @@ module Cuker
258
291
  in_step(steps) {|step| content += step}
259
292
  content
260
293
  else
261
- @log.warn "No Tags found in #{hsh[:keyword]} @ #{@file_path}"
294
+ @log.debug "No Tags found in #{hsh[:keyword]} @ #{@file_path}"
262
295
  []
263
296
  end
264
297
  end
@@ -267,19 +300,23 @@ module Cuker
267
300
  res = []
268
301
  examples.each do |example|
269
302
  if example[:type] == :Examples
270
- # res << EXCEL_HORIZ_RULER
303
+ # example_data << EXCEL_HORIZ_RULER
304
+ example_data = []
271
305
 
272
306
  eg_title = excel_title EXAMPLES, get_title_ary(example)
273
307
  res << eg_title
274
308
 
275
- eg_header = surround(get_table_row(example[:tableHeader]), EXCEL_TITLE_SEP)
276
- res << eg_header
309
+ table_header = example[:tableHeader]
310
+ eg_header = table_header.nil? ? [] : get_table_row(table_header)
311
+ example_data << eg_header
277
312
 
278
313
  eg_body = example[:tableBody]
279
- eg_body.map {|row_hsh| res << surround(get_table_row(row_hsh), EXCEL_ROW_SEP)}
314
+ eg_body.map {|row_hsh| example_data << get_table_row(row_hsh)} unless eg_body.nil?
280
315
 
316
+ res << tableify(example_data)
317
+ res << EXCEL_HORIZ_RULER
281
318
  else
282
- @log.warn "Unknown type '#{example[:type]}' found in file @ #{@file_path}"
319
+ @log.debug "Unknown type '#{example[:type]}' found in file @ #{@file_path}"
283
320
  end
284
321
  end
285
322
  res
@@ -289,7 +326,7 @@ module Cuker
289
326
  if row_hsh[:type] == :TableRow
290
327
  row_hsh[:cells].map(&method(:get_table_cell))
291
328
  else
292
- @log.warn "Expected :TableRow in #{row_hsh} @ #{@file_path}"
329
+ @log.debug "Expected :TableRow in '#{row_hsh}' @ #{@file_path}"
293
330
  []
294
331
  end
295
332
  end
@@ -299,7 +336,7 @@ module Cuker
299
336
  val = cell_hsh[:value].strip
300
337
  val.empty? ? EXCEL_BLANK : val
301
338
  else
302
- @log.warn "Expected :TableCell in #{cell_hsh} @ #{@file_path}"
339
+ @log.debug "Expected :TableCell in '#{cell_hsh}' @ #{@file_path}"
303
340
  EXCEL_BLANK
304
341
  end
305
342
  end
@@ -70,6 +70,14 @@ module Cuker
70
70
  def new_name name
71
71
  name.nil? ? "Sheet_#{@book.size + 1}" : name
72
72
  end
73
+
74
+ def write model, output_file_path
75
+ file_name = make_new_file output_file_path
76
+ write_title model.title
77
+ model.data.each {|row| write_new_row row}
78
+ finishup
79
+ file_name
80
+ end
73
81
  end
74
82
 
75
83
  class AbstractFile
@@ -10,13 +10,13 @@ module Cuker
10
10
 
11
11
  def write_title title_ary
12
12
  super title_ary
13
- @log.debug "csv write title"
13
+ @log.trace "csv write title"
14
14
  @active_file.add_row title_ary
15
15
  end
16
16
 
17
17
  def write_new_row row_ary
18
18
  super row_ary
19
- @log.debug "csv write row: #{row_ary}"
19
+ @log.trace "csv write row: #{row_ary}"
20
20
  @active_file.add_row row_ary
21
21
  end
22
22
 
@@ -43,7 +43,7 @@ module Cuker
43
43
  class CsvFile < AbstractFile
44
44
  def initialize file_name
45
45
  super file_name
46
- @log.info "Making new #{self.class} => #{file_name}"
46
+ @log.debug "Making new #{self.class} => #{file_name}"
47
47
  @csv_sheet = CSV.open(file_name, "wb")
48
48
  @csv_sheet.close
49
49
  end
@@ -10,13 +10,13 @@ module Cuker
10
10
 
11
11
  def write_title title_line
12
12
  super title_line
13
- @log.debug "JW write title: #{title_line}"
13
+ @log.trace "JW write title: #{title_line}"
14
14
  @active_file.add_line title_line
15
15
  end
16
16
 
17
17
  def write_new_row row_line
18
18
  super row_line
19
- @log.debug "JW write row: #{row_line}"
19
+ @log.trace "JW write row: #{row_line}"
20
20
  @active_file.add_line row_line
21
21
  end
22
22
 
@@ -37,7 +37,7 @@ module Cuker
37
37
  class JiraFile < AbstractFile
38
38
  def initialize file_name
39
39
  super file_name
40
- @log.info "Making new #{self.class} => #{file_name}"
40
+ @log.debug "Making new #{self.class} => #{file_name}"
41
41
  @jira_file = File.open(file_name, "wb")
42
42
  @jira_file.close
43
43
  end
@@ -12,13 +12,13 @@ module Cuker
12
12
 
13
13
  def write_title title_ary
14
14
  super title_ary
15
- @log.debug "rxl write title"
15
+ @log.trace "rxl write title: #{title_ary}"
16
16
  @active_file.add_row title_ary
17
17
  end
18
18
 
19
19
  def write_new_row row_ary
20
20
  super row_ary
21
- @log.debug "rxl write row: #{row_ary}"
21
+ @log.trace "rxl write row: #{row_ary}"
22
22
  @active_file.add_row row_ary
23
23
  end
24
24
 
@@ -40,6 +40,13 @@ module Cuker
40
40
  def finishup
41
41
  @active_file.finishup if @active_file
42
42
  end
43
+
44
+ def write model, output_file_path
45
+ file_name = make_new_file output_file_path
46
+ model.data.each(&method(:write_new_row))
47
+ finishup
48
+ file_name
49
+ end
43
50
  end
44
51
 
45
52
  class RubyXLFile < AbstractFile
@@ -55,7 +62,7 @@ module Cuker
55
62
  @file_name = premade ? template_file_name : file_name
56
63
 
57
64
  super @file_name
58
- @log.info "Making new #{self.class} => #{@file_name}"
65
+ @log.debug "Making new #{self.class} => #{@file_name}"
59
66
 
60
67
  @workbook = premade ? RubyXL::Parser.parse(@file_name) : RubyXL::Workbook.new
61
68
  # @workbook.add_worksheet('Acceptance Tests')
@@ -70,7 +77,7 @@ module Cuker
70
77
  locate_sheet 'test_id'
71
78
 
72
79
  # @worksheet = @workbook[0]
73
- @worksheet = @workbook['Acceptance Tests']
80
+ @worksheet = @workbook['Acceptance Tests raw']
74
81
 
75
82
 
76
83
  @rows = sheet_rows.dup # starting Row
@@ -114,14 +121,14 @@ module Cuker
114
121
 
115
122
  link_sheet_name = "#{ary[0]} results"
116
123
  workbook.add_worksheet(link_sheet_name)
117
- back_link_value = @link_sheet[0][0].value
118
- back_link_formula = @link_sheet[0][0].formula
119
- @workbook[link_sheet_name].add_cell(0, 0, back_link_value, back_link_formula)
124
+ # back_link_value = @link_sheet[0][0].value
125
+ # back_link_formula = @link_sheet[0][0].formula
126
+ # @workbook[link_sheet_name].add_cell(0, 0, back_link_value, back_link_formula)
120
127
  # workbook.worksheets <<
121
- # (link_sheet_name)
128
+ # (link_sheet_name)
122
129
 
123
- @log.info workbook.worksheets.map(&:sheet_name)
124
- @log.info sheet_rows
130
+ @log.trace workbook.worksheets.map(&:sheet_name)
131
+ # @log.debug sheet_rows
125
132
  # @log.debug worksheet.rows
126
133
  end
127
134
 
@@ -129,7 +136,7 @@ module Cuker
129
136
 
130
137
  # @return ary of rows
131
138
  def sheet_rows
132
- @worksheet.sheet_data.rows
139
+ worksheet.sheet_data.rows
133
140
  end
134
141
 
135
142
  def finishup
data/lib/cuker/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Cuker
2
- VERSION = "0.5.15"
2
+ VERSION = "0.5.21"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cuker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.15
4
+ version: 0.5.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - ufo2mstar
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-21 00:00:00.000000000 Z
11
+ date: 2019-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler