cukesparse 2.0.5 → 2.1.1

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
  SHA1:
3
- metadata.gz: 5c90d215f8fb5a25a8ac4d3118c9f5fa051cb82a
4
- data.tar.gz: 3859761458f24dac7158f86e8c1dfdfee201227a
3
+ metadata.gz: c80cf3026666d2482f06451e9e0524afe3deafbe
4
+ data.tar.gz: 57b144f542d1d48a8b8e0cab9622c5419356300d
5
5
  SHA512:
6
- metadata.gz: dc10ea17d2ee538d8471837fad7aa77842f9733abcd8de6241328b557236b43fe85d740ac146730618d7699670ff67b6f48bc2ceca7d93ec7e31f167d90dd927
7
- data.tar.gz: 34781891aa0413c0b4148c2cb9d6289e6d39413a9399f658443823eed6be423d603c729fc92cde7014cebb01a5f37ba08ed6fe4942d596eca81976e94d6c76ae
6
+ metadata.gz: c23ce187c948f68a99fd36c3222b7767e289de7f3062ef1900f9a5d00838a0714f1c108497ef5f3502f3bb47ff703b20be96ccab131ee3f56cca2611c4524eff
7
+ data.tar.gz: adcf9a9adfe34e55e13cdfd54a35c960fc87ffcb300a4279f63732a4a893bec937157172cd6781e35c963c05f465a5a4884504e0852338b9833ab22066808740
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'cukesparse'
3
- require 'colored'
4
3
 
5
4
  begin
5
+ Cukesparse.reset!
6
6
  Cukesparse.execute
7
7
  rescue Interrupt
8
8
  exit!
@@ -3,7 +3,7 @@ require File.dirname(__FILE__) + "/lib/cukesparse/version"
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'cukesparse'
5
5
  s.version = Cukesparse::VERSION
6
- s.date = '2013-08-27'
6
+ s.date = '2013-08-30'
7
7
  s.summary = 'Cukesparse - cucumber command line parser'
8
8
  s.description = 'A simple command line parser to pass arguments into Cucumber'
9
9
  s.author = 'Jonathan Chrisp'
@@ -2,16 +2,17 @@ require 'clik'
2
2
  require 'colored'
3
3
  require 'yaml'
4
4
 
5
+
5
6
  module Cukesparse
6
7
  class << self
7
8
  attr_accessor :config_file, :config, :task, :parameters, :command
8
9
 
9
- # configure cukeparse
10
- def configure
11
- yield self
10
+ # Returns current config file
11
+ def config_file
12
+ @config_file ||= 'config/tasks.yml'
12
13
  end
13
14
 
14
- # returns ARGV
15
+ # Returns current argv
15
16
  def argv
16
17
  ARGV
17
18
  end
@@ -21,42 +22,29 @@ module Cukesparse
21
22
  # @param [Symbol] key the key to store in options
22
23
  # @param [String] val the arguments passed in for key
23
24
  def add_multiple key, val
24
- case val
25
- when Array
26
- val.each do |v|
27
- (@parameters[key] ||= []).push '--' + key.to_s + ' ' + v.to_s
28
- end
29
- else
30
- (@parameters[key] ||= []).push '--' + key.to_s + ' ' + val.to_s
25
+ return (@parameters[key] ||= []).push '--' + key + ' ' + val unless val.is_a? Array
26
+
27
+ val.each do |v|
28
+ (@parameters[key] ||= []).push '--' + key + ' ' + v
31
29
  end
32
30
  end
33
31
 
34
32
  # Executes cukesparse by checking arguments passed
35
33
  def execute
36
- # Check if no arguments
37
- if argv.empty?
38
- puts 'Cukesparse - a simple command line parser to pass arguments into Cucumber!'.yellow
39
- return
40
- end
34
+ load_config
35
+ return puts 'Cukesparse - a simple command line parser to pass arguments into Cucumber!'.yellow if argv.empty?
36
+ return puts "You have the following tasks within your config file: #{@config.keys.join(', ')}".yellow if argv.dup.shift == 'tasks'
41
37
 
42
- # Determine argument passed
43
- case argv.dup.shift
44
- when 'tasks'
45
- load_config
46
- puts "You have the following tasks within your config file: #{@config.keys.join(', ')}".yellow
47
- return
48
- else
49
- load_config.parse_argv.build_command
50
- end
51
- end
52
-
53
- # Builds the command line string
54
- def build_command
38
+ parse_argv
55
39
  check_for_task
56
40
  check_for_parameters
57
41
  set_cucumber_defaults
58
42
  set_runtime_defaults
43
+ build_command
44
+ end
59
45
 
46
+ # Builds the command line string
47
+ def build_command
60
48
  unless @task.empty? && @parameters.empty?
61
49
  @command.push 'bundle exec cucumber'
62
50
  @command.push '--require features/'
@@ -65,31 +53,22 @@ module Cukesparse
65
53
  @command.push task['defaults'].join(' ') if task.has_key? 'defaults'
66
54
  end
67
55
 
68
- if @parameters.has_key? :debug
69
- debug
70
- else
71
- system @command.join(' ')
72
- exit $?.exitstatus
73
- end
56
+ return debug if @parameters.has_key? 'debug'
57
+ system @command.join(' ')
58
+ exit $?.exitstatus
74
59
  end
75
60
 
76
61
  # Checks for task in arguments
77
62
  def check_for_task
78
63
  task = argv & @config.keys
79
- if task.empty?
80
- abort 'ERROR: No task was passed to cukesparse!'.red.underline
81
- elsif task.length > 1
82
- puts 'WARN: Multiple tasks have been passed!'.yellow
83
- else
84
- @task = @config[task[0]]
85
- end
64
+ return abort 'ERROR: No task was passed to cukesparse!'.red.underline if task.empty?
65
+ return puts 'WARN: Multiple tasks have been passed!'.yellow if task.length > 1
66
+ return @task = @config[task[0]]
86
67
  end
87
68
 
88
69
  # Checks parameters and returns boolean
89
70
  def check_for_parameters
90
- unless @parameters.any?
91
- puts 'WARN: No parameters passed to cukesparse'.yellow
92
- end
71
+ return puts 'WARN: No parameters passed to cukesparse'.yellow unless @parameters.any?
93
72
  end
94
73
 
95
74
  # Outputs the debug information
@@ -106,108 +85,97 @@ module Cukesparse
106
85
 
107
86
  # Loads the config file
108
87
  def load_config
109
- begin
110
- @config = YAML.load_file @config_file
111
- rescue Psych::SyntaxError
112
- abort 'Your tasks file did not parse as expected!'.red.underline
113
- rescue Errno::ENOENT
114
- abort 'Your tasks file is missing!'.red.underline
115
- end
116
- self
88
+ @config = YAML.load_file config_file
89
+ rescue Psych::SyntaxError
90
+ abort 'Your tasks file did not parse as expected!'.red.underline
91
+ rescue Errno::ENOENT
92
+ abort 'Your tasks file is missing!'.red.underline
117
93
  end
118
94
 
119
95
  # Parses the options passed via command line
120
96
  def parse_argv
121
- begin
122
- cli argv,
123
- # Cucumber options
124
- '-t' => lambda{ |t| add_multiple(:tags, t) },
125
- '-n --name' => lambda{ |n| add_multiple(:name, n) },
126
- '-f --format' => ->(f){ @parameters[:format] = "--format #{f}" },
127
- '-d --dry-run' => ->{ @parameters[:dry_run] = "--dry-run" },
128
- '-v --verbose' => ->{ @parameters[:verbose] = "--verbose" },
129
- '-s --strict' => ->{ @parameters[:strict] = "--strict" },
130
- '-g --guess' => ->{ @parameters[:guess] = "--guess" },
131
- '-x --expand' => ->{ @parameters[:expand] = "--expand" },
132
-
133
- # All options below have been added for custom project but can be used for example
134
- # Global options
135
- '-e --environment' => ->(e){ @parameters[:environment] = "ENVIRONMENT=#{e}" },
136
- '-l --loglevel' => ->(l){ @parameters[:log_level] = "LOG_LEVEL=#{l}" },
137
- '-c --controller' => ->(c){ @parameters[:controller] = "CONTROLLER=#{c}" },
138
- '-h --headless' => ->{ @parameters[:headless] = "HEADLESS=TRUE" },
139
-
140
- # Database options
141
- '--cleanup' => ->{ @parameters[:cleanup] = "CLEANUP=TRUE" },
142
- '--no-cleanup' => ->{ @parameters[:cleanup] = "CLEANUP=FALSE" },
143
- '--database' => ->{ @parameters[:database] = "DATABASE=TRUE" },
144
- '--jenkins' => ->{ @parameters[:jenkins] = "JENKINS=TRUE" },
145
-
146
- # Retry options
147
- '--retries' => ->(r){ @parameters[:retries] = "RETRIES=#{r}" },
148
- '--timeout' => ->(t){ @parameters[:timeout] = "TIMEOUT=#{t}" },
149
-
150
- # Driver Options
151
- '--screen' => ->(s){ split_parameters(s, :screen) },
152
- '--position' => ->(p){ split_parameters(p, :position) },
153
- '--screenwidth' => ->(w){ @parameters[:screen_width] = "SCREENWIDTH=#{w}" },
154
- '--screenheight' => ->(h){ @parameters[:screen_height] = "SCREENHEIGHT=#{h}" },
155
- '--xposition' => ->(x){ @parameters[:xposition] = "XPOSITION=#{x}" },
156
- '--yposition' => ->(y){ @parameters[:yposition] = "YPOSITION=#{y}" },
157
- '-H --highlight' => ->{ @parameters[:highlight] = "HIGHLIGHT=TRUE" },
158
-
159
- # Debug
160
- '--debug' => ->{ @parameters[:debug] = "DEBUG=TRUE" }
161
- rescue
162
- abort 'Error processing passed CLI arguments!'.red.underline
163
- else
164
- self
165
- end
97
+ cli argv,
98
+ # Cucumber options
99
+ '-t' => lambda{ |t| add_multiple('tags', t) },
100
+ '-n --name' => lambda{ |n| add_multiple('name', n) },
101
+ '-f --format' => ->(f){ @parameters['format'] = "--format #{f}" },
102
+ '-d --dry-run' => ->{ @parameters['dry_run'] = "--dry-run" },
103
+ '-v --verbose' => ->{ @parameters['verbose'] = "--verbose" },
104
+ '-s --strict' => ->{ @parameters['strict'] = "--strict" },
105
+ '-g --guess' => ->{ @parameters['guess'] = "--guess" },
106
+ '-x --expand' => ->{ @parameters['expand'] = "--expand" },
107
+
108
+ # All options below have been added for custom project but can be used for example
109
+ # Global options
110
+ '-e --environment' => ->(e){ @parameters['environment'] = "ENVIRONMENT=#{e}" },
111
+ '-l --loglevel' => ->(l){ @parameters['log_level'] = "LOG_LEVEL=#{l}" },
112
+ '-c --controller' => ->(c){ @parameters['controller'] = "CONTROLLER=#{c}" },
113
+ '-h --headless' => ->{ @parameters['headless'] = "HEADLESS=TRUE" },
114
+
115
+ # Database options
116
+ '--cleanup' => ->{ @parameters['cleanup'] = "CLEANUP=TRUE" },
117
+ '--no-cleanup' => ->{ @parameters['cleanup'] = "CLEANUP=FALSE" },
118
+ '--database' => ->{ @parameters['database'] = "DATABASE=TRUE" },
119
+ '--jenkins' => ->{ @parameters['jenkins'] = "JENKINS=TRUE" },
120
+
121
+ # Retry options
122
+ '--retries' => ->(r){ @parameters['retries'] = "RETRIES=#{r}" },
123
+ '--timeout' => ->(t){ @parameters['timeout'] = "TIMEOUT=#{t}" },
124
+
125
+ # Driver Options
126
+ '--screen' => ->(s){ split_parameters(s, 'screen') },
127
+ '--position' => ->(p){ split_parameters(p, 'position') },
128
+ '--screenwidth' => ->(w){ @parameters['screen_width'] = "SCREENWIDTH=#{w}" },
129
+ '--screenheight' => ->(h){ @parameters['screen_height'] = "SCREENHEIGHT=#{h}" },
130
+ '--xposition' => ->(x){ @parameters['xposition'] = "XPOSITION=#{x}" },
131
+ '--yposition' => ->(y){ @parameters['yposition'] = "YPOSITION=#{y}" },
132
+ '-H --highlight' => ->{ @parameters['highlight'] = "HIGHLIGHT=TRUE" },
133
+
134
+ # Debug
135
+ '--debug' => ->{ @parameters['debug'] = "DEBUG=TRUE" }
136
+ rescue
137
+ abort 'Error processing passed CLI arguments!'.red.underline
166
138
  end
167
139
 
168
140
  # Updates parameters based on config runtime defaults
169
141
  def set_runtime_defaults
170
- if @task.has_key? 'runtime_defaults'
171
- @task['runtime_defaults'].each do |key, val|
172
- case key.to_sym
173
- when :screen, :position
174
- split_parameters(val, key.to_sym)
175
- else
176
- unless @parameters.has_key? key.to_sym
177
- @parameters[key.to_sym] = key.upcase + '=' + val.to_s
178
- end
142
+ return puts 'WARN: The task has no runtime defaults!'.yellow unless @task.has_key? 'runtime_defaults'
143
+
144
+ @task['runtime_defaults'].each do |key, val|
145
+ case key
146
+ when 'screen', 'position'
147
+ split_parameters(val, key)
148
+ else
149
+ unless @parameters.has_key? key
150
+ @parameters[key] = key.upcase + '=' + val.to_s
179
151
  end
180
152
  end
181
- else
182
- puts 'WARN: The task has no runtime defaults!'.yellow
183
153
  end
184
154
  end
185
155
 
186
156
  # Updates parameters based on config cucumber defaults
187
157
  def set_cucumber_defaults
188
- if @task.has_key? 'cucumber_defaults'
189
- @task['cucumber_defaults'].each do |key, val|
190
- case key.to_sym
191
- when :tags, :name
192
- add_multiple key.to_sym, val
193
- when :format
194
- unless @parameters.has_key? key.to_sym
195
- @parameters[key.to_sym] = '--' + key.downcase + ' ' + val.to_s
196
- end
197
- when :strict, :verbose, :guess, :expand
198
- unless @parameters.has_key? key.to_sym && @parameters[key.to_sym] == true
199
- @parameters[key.to_sym] = '--' + key.downcase
200
- end
201
- when :dry_run
202
- unless @parameters.has_key? key.to_sym && @parameters[key.to_sym] == true
203
- @parameters[key.to_sym] = '--dry-run'
204
- end
205
- else
206
- puts 'WARN: The cucumber default ' + key.to_s + ' isn\'t a known option!'.yellow
158
+ return puts 'WARN: The task has no cucumber defaults!'.yellow unless @task.has_key? 'cucumber_defaults'
159
+
160
+ @task['cucumber_defaults'].each do |key, val|
161
+ case key
162
+ when 'tags', 'name'
163
+ add_multiple key, val
164
+ when 'format'
165
+ unless @parameters.has_key? key
166
+ @parameters[key] = '--' + key.downcase + ' ' + val.to_s
167
+ end
168
+ when 'strict', 'verbose', 'guess', 'expand'
169
+ unless @parameters.has_key? key && @parameters[key] == true
170
+ @parameters[key] = '--' + key.downcase
171
+ end
172
+ when 'dry_run'
173
+ unless @parameters.has_key? key && @parameters[key] == true
174
+ @parameters[key] = '--dry-run'
207
175
  end
176
+ else
177
+ puts "WARN: The cucumber default #{key} isn't a known option!".yellow
208
178
  end
209
- else
210
- puts 'WARN: The task has no cucumber defaults!'.yellow
211
179
  end
212
180
  end
213
181
 
@@ -224,29 +192,21 @@ module Cukesparse
224
192
  end
225
193
 
226
194
  case sym
227
- when :screen
228
- @parameters[:screenwidth] = "SCREENWIDTH=#{params[0]}"
229
- @parameters[:screenheight] = "SCREENHEIGHT=#{params[1]}"
230
- when :position
231
- @parameters[:xposition] = "XPOSITION=#{params[0]}"
232
- @parameters[:yposition] = "YPOSITION=#{params[1]}"
195
+ when 'screen'
196
+ @parameters['screenwidth'] = "SCREENWIDTH=#{params[0]}"
197
+ @parameters['screenheight'] = "SCREENHEIGHT=#{params[1]}"
198
+ when 'position'
199
+ @parameters['xposition'] = "XPOSITION=#{params[0]}"
200
+ @parameters['yposition'] = "YPOSITION=#{params[1]}"
233
201
  end
234
202
  end
235
203
 
204
+ # Resets cukesparse
236
205
  def reset!
237
- @config = nil
206
+ @config = {}
238
207
  @parameters = {}
239
208
  @task = {}
240
209
  @command = []
241
210
  end
242
211
  end
243
-
244
- # defaults
245
- self.parameters = {}
246
- self.task = {}
247
- self.command = []
248
- end
249
-
250
- Cukesparse.configure do |config|
251
- config.config_file = 'config/tasks.yml'
252
212
  end
@@ -1,3 +1,3 @@
1
1
  module Cukesparse
2
- VERSION = "2.0.5"
2
+ VERSION = "2.1.1"
3
3
  end
@@ -8,17 +8,17 @@ describe '.add_multiple' do
8
8
 
9
9
  context "when run with a single value" do
10
10
  it "will add a key to parameters with the correct array value" do
11
- Cukesparse.add_multiple(:tags, 'abc')
12
- Cukesparse.parameters.should have_key(:tags)
13
- Cukesparse.parameters[:tags].should eql ['--tags abc']
11
+ Cukesparse.add_multiple('tags', 'abc')
12
+ Cukesparse.parameters.should have_key('tags')
13
+ Cukesparse.parameters['tags'].should eql ['--tags abc']
14
14
  end
15
15
  end
16
16
 
17
17
  context "when run with multiple values" do
18
18
  it "will add a key to parameters with the correct array values" do
19
- Cukesparse.add_multiple(:tags, ['abc', 'def', 'hij'])
20
- Cukesparse.parameters.should have_key(:tags)
21
- Cukesparse.parameters[:tags].should eql ['--tags abc', '--tags def', '--tags hij']
19
+ Cukesparse.add_multiple('tags', ['abc', 'def', 'hij'])
20
+ Cukesparse.parameters.should have_key('tags')
21
+ Cukesparse.parameters['tags'].should eql ['--tags abc', '--tags def', '--tags hij']
22
22
  end
23
23
  end
24
24
  end
@@ -0,0 +1,14 @@
1
+ require 'helper'
2
+
3
+ describe ".argv" do
4
+ before :each do
5
+ ARGV.clear
6
+ Cukesparse.reset!
7
+ end
8
+
9
+ context "when run" do
10
+ it "returns true for empty opts parameter" do
11
+ Cukesparse.argv.should be_empty
12
+ end
13
+ end
14
+ end
@@ -8,7 +8,6 @@ describe '.check_for_parameters' do
8
8
 
9
9
  context "when run with no paramaters defined" do
10
10
  it "will return an warning if no parameters are provided" do
11
- Cukesparse.instance_variable_set(:@parameters, {})
12
11
  Cukesparse.should_receive("puts").with("\e[0;33;49mWARN: No parameters passed to cukesparse\e[0m")
13
12
  Cukesparse.check_for_parameters
14
13
  end
@@ -9,7 +9,6 @@ describe '.check_for_task' do
9
9
  context "when run with no task defined" do
10
10
  it "will return an error if no task is provided" do
11
11
  ARGV.push('incorrect_task')
12
- Cukesparse.config = {}
13
12
  Cukesparse.should_receive("abort").with("\e[4;31;49mERROR: No task was passed to cukesparse!\e[0m")
14
13
  Cukesparse.check_for_task
15
14
  end
@@ -18,7 +17,7 @@ describe '.check_for_task' do
18
17
  context "when run with multiple tasks defined" do
19
18
  it "will return an error if multiple tasks are provided" do
20
19
  ARGV.push('test_task', 'test_task1')
21
- Cukesparse.configure {|c| c.config_file = File.join(fixture_path, 'valid_tasks.yml')}
20
+ Cukesparse.config_file = File.join(fixture_path, 'valid_tasks.yml')
22
21
  Cukesparse.load_config
23
22
  Cukesparse.should_receive("puts").with("\e[0;33;49mWARN: Multiple tasks have been passed!\e[0m")
24
23
  Cukesparse.check_for_task
@@ -28,7 +27,7 @@ describe '.check_for_task' do
28
27
  context "when task is defined the @task instance variable will return a hash" do
29
28
  it "will set the task in @task" do
30
29
  ARGV.push('test_task')
31
- Cukesparse.configure {|c| c.config_file = File.join(fixture_path, 'valid_tasks.yml')}
30
+ Cukesparse.config_file = File.join(fixture_path, 'valid_tasks.yml')
32
31
  Cukesparse.load_config
33
32
  Cukesparse.check_for_task
34
33
  Cukesparse.task.should be_an_instance_of Hash
@@ -0,0 +1,25 @@
1
+ require 'helper'
2
+
3
+ describe '.debug' do
4
+ before :each do
5
+ ARGV.clear
6
+ Cukesparse.reset!
7
+ end
8
+
9
+ context "when run with task and --debug parameter" do
10
+ it "will return the correct output" do
11
+ ARGV.push('test_task1', '--debug')
12
+ Cukesparse.config_file = File.join(fixture_path, 'valid_tasks.yml')
13
+ Cukesparse.should_receive("puts").with("\e[0;33;49mDEBUG: Outputting ARGV passed\e[0m")
14
+ Cukesparse.should_receive("puts").with("[\"test_task1\", \"--debug\"]")
15
+ Cukesparse.should_receive("puts").with("\e[0;33;49mDEBUG: Outputting parsed config file\e[0m")
16
+ Cukesparse.should_receive("puts").with("{\"test_task\"=>{\"feature_order\"=>[\"features/featureOne\", \"features/featureTwo\", \"features/featureThree\"], \"cucumber_defaults\"=>{\"format\"=>\"pretty\", \"name\"=>[\"feature1\", \"feature2\"], \"tags\"=>[\"tags1\", \"tags2\"], \"strict\"=>true, \"verbose\"=>true, \"dry_run\"=>true, \"guess\"=>true, \"expand\"=>true}, \"runtime_defaults\"=>{\"environment\"=>\"release\", \"log_level\"=>\"debug\", \"cleanup\"=>true, \"database\"=>true, \"jenkins\"=>true, \"retries\"=>5, \"timeout\"=>60, \"screen\"=>\"1280/1024\", \"screenwidth\"=>1280, \"screenheight\"=>1024, \"position\"=>\"0/0\", \"xposition\"=>0, \"yposition\"=>0, \"highlight\"=>true}, \"defaults\"=>[\"--format html\", \"--out coverage/report.html\", \"-P -s\"]}, \"test_task1\"=>{\"feature_order\"=>[\"features/featureOne\", \"features/featureTwo\", \"features/featureThree\"], \"cucumber_defaults\"=>{\"format\"=>\"pretty\"}, \"runtime_defaults\"=>{\"environment\"=>\"release\", \"log_level\"=>\"debug\"}, \"defaults\"=>[\"--format html\", \"--out coverage/report.html\", \"-P -s\"]}, \"cucumber_default_unknown\"=>{\"feature_order\"=>[\"features/featureOne\", \"features/featureTwo\", \"features/featureThree\"], \"cucumber_defaults\"=>{\"testing\"=>\"pretty\"}, \"runtime_defaults\"=>{\"environment\"=>\"release\", \"log_level\"=>\"debug\"}, \"defaults\"=>[\"--format html\", \"--out coverage/report.html\", \"-P -s\"]}, \"no_defaults\"=>{\"feature_order\"=>[\"features/featureOne\", \"features/featureTwo\", \"features/featureThree\"]}}")
17
+ Cukesparse.should_receive("puts").with("\e[0;33;49mDEBUG: Outputting parameters created\e[0m")
18
+ Cukesparse.should_receive("puts").with("{\"debug\"=>\"DEBUG=TRUE\", \"format\"=>\"--format pretty\", \"environment\"=>\"ENVIRONMENT=release\", \"log_level\"=>\"LOG_LEVEL=debug\"}")
19
+ Cukesparse.should_receive("puts").with("\e[0;33;49mDEBUG: Outputting command created\e[0m")
20
+ Cukesparse.should_receive("puts").with("bundle exec cucumber --require features/ features/featureOne features/featureTwo features/featureThree DEBUG=TRUE --format pretty ENVIRONMENT=release LOG_LEVEL=debug --format html --out coverage/report.html -P -s")
21
+ Cukesparse.execute
22
+ end
23
+
24
+ end
25
+ end