Class: FFInteraction

Inherits:
Object
  • Object
show all
Defined in:
lib/collateral_cucumber/ff_interaction.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tag = "@regression") ⇒ FFInteraction

Returns a new instance of FFInteraction.



6
7
8
# File 'lib/collateral_cucumber/ff_interaction.rb', line 6

def initialize(tag = "@regression")
  @tag = tag
end

Instance Attribute Details

#tagObject

feature file interaction class



4
5
6
# File 'lib/collateral_cucumber/ff_interaction.rb', line 4

def tag
  @tag
end

Instance Method Details

#feature_iterator(current_location = 'features') ⇒ Object



33
34
35
36
37
38
39
40
# File 'lib/collateral_cucumber/ff_interaction.rb', line 33

def feature_iterator(current_location = 'features')
  files = return_all_files(current_location, '*', 'feature')
  array = []
  files.each do |file|
    array.push(return_all_gherkin_scenarios(file))
  end
  array.flatten
end

#feature_mod_iterator(split_assignment, current_location = 'features', assign = true) ⇒ Object



10
11
12
13
14
15
16
17
18
# File 'lib/collateral_cucumber/ff_interaction.rb', line 10

def feature_mod_iterator(split_assignment, current_location = 'features', assign = true)
  output_array = []
  split_assignment.each do |value|
    mod_value = value.gsub(tag, '@split_builds')
    search_regex = /#{value}$/
    files = return_all_files(current_location, '*', 'feature')
    mod_scenario_tagging(search_regex, mod_value, assign, files, output_array)
  end
end

#mod_scenario_tagging(regex, mod_value, assign, files, output_array) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/collateral_cucumber/ff_interaction.rb', line 20

def mod_scenario_tagging(regex, mod_value, assign, files, output_array)
  files.each do |file|
    output = File.open(file, 'r', &:read)
    modified = output.gsub(regex, mod_value)
    if assign
      File.open(file, 'w+') { |f| f.print(modified) }
    else
      output_array.push(modified)
    end
  end
  output_array
end

#return_all_files(current_location, filter = '*', file_type = '*') ⇒ Object



47
48
49
# File 'lib/collateral_cucumber/ff_interaction.rb', line 47

def return_all_files(current_location, filter = '*', file_type = '*')
  Dir.glob("#{current_location}/**/#{filter}.#{file_type}")
end

#return_all_gherkin_scenarios(file) ⇒ Object



42
43
44
45
# File 'lib/collateral_cucumber/ff_interaction.rb', line 42

def return_all_gherkin_scenarios(file)
  output = File.open(file, 'r', &:read)
  output.scan(/(#{tag}\s*(.*\n) (Scenario:|Scenario Outline:)?.*)/).map { |value| value[0] }
end