cukesparse 1.0.11 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +14 -6
- data/Gemfile +2 -2
- data/README.md +73 -14
- data/config/tasks.yml +28 -1
- data/cukesparse.gemspec +3 -3
- data/lib/cukesparse.rb +62 -21
- data/report.html +0 -0
- data/spec/cukesparse_spec.rb +137 -26
- data/spec/spec_files/valid_tasks.yml +25 -5
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
N2FkNTQ5ZjkyZWZjN2U3MmZhMTJlNjk5YWU0MjAyMTAxMTNlYmM5Zg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZDQ2YmQ0YTQwMzU3N2JlOWQxYTBiMGZhZjJmYjNkMTFmMmVjMjcxOA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YzJlMzcxNTExYjE5OWE0ZWRmNGI2ZWIwY2QyOWViMzM2OGU1NzI3Y2E2OTgw
|
10
|
+
YjU0Yjg4NmJmNThhNmE3M2IxM2EzZWM3ZjZjNmJlNGEzMDU3ZDhmMzJiODcy
|
11
|
+
MTg1YTkwZDI1NDVjNGIzMTVhOThiNDFmMmE2ZDEzMzYzN2I3YTA=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MjA2Yjk1NjM5N2ZhMjk1NjA4MTQ0YWJiMjkwODk3YmI4NjMyYzUxN2IyZjQ1
|
14
|
+
OGRjMjc4ZDdmYTVhM2U0YTE2ZjQ2YzI1MzA3ZTJiM2E5NzFiNGY5NDAxZTgx
|
15
|
+
ZDJlMGFkZTlkMTM1NWU4YjU3MjczZmUxZWZkOTcxODA4NTQzODM=
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -4,18 +4,59 @@
|
|
4
4
|
|
5
5
|
#cukesparse
|
6
6
|
|
7
|
-
A simple command line parser to pass default and custom arguments into Cucumber.
|
7
|
+
A simple command line parser to pass default and custom arguments into Cucumber with the power to define these as tasks in a config/tasks.yml file!
|
8
8
|
|
9
9
|
## Getting Started
|
10
|
-
Cukesparse parses command line arguments and sets default arguments from the config/task.yml file. For example please see the example config
|
10
|
+
Cukesparse parses command line arguments and sets default arguments from the config/task.yml file. For example please see the full list of options within the example config below:
|
11
11
|
|
12
12
|
test_task:
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
13
|
+
feature_order: ['features/featureOne', 'features/featureTwo', 'features/featureThree']
|
14
|
+
|
15
|
+
# These cucumber defaults will be set if not passed in from cli
|
16
|
+
cucumber_defaults:
|
17
|
+
format: 'pretty'
|
18
|
+
name: ['feature1', 'feature2']
|
19
|
+
tags: ['tags1', 'tags2']
|
20
|
+
strict: true
|
21
|
+
verbose: true
|
22
|
+
dry_run: true
|
23
|
+
guess: true
|
24
|
+
expand: true
|
25
|
+
|
26
|
+
# These runtime defaults will be set if not passed in from cli
|
27
|
+
runtime_defaults:
|
28
|
+
environment: 'release'
|
29
|
+
log_level: 'debug'
|
30
|
+
cleanup: true
|
31
|
+
database: true
|
32
|
+
jenkins: true
|
33
|
+
retries: 5
|
34
|
+
timeout: 60
|
35
|
+
screen: 1280/1024
|
36
|
+
screenwidth: 1280
|
37
|
+
screenheight: 1024
|
38
|
+
position: 0/0
|
39
|
+
xposition: 0
|
40
|
+
yposition: 0
|
41
|
+
highlight: true
|
42
|
+
|
43
|
+
# Will always be added to end of of the system command
|
44
|
+
defaults: ['--format html', '--out report.html', '-P -s']
|
45
|
+
|
46
|
+
You can have many highlevel tasks defined within your config/tasks.yml file. In the above example we only have the task `test_task`. Please note that the screen and position config options will set screenwidth/screenheight or xposition/yposition parameters. You should use screen/position or define the individual options only within the config file!
|
47
|
+
|
48
|
+
## Lets get it running!
|
49
|
+
|
50
|
+
Lets say we have the following simple config file options defined:
|
51
|
+
|
52
|
+
test_task:
|
53
|
+
feature_order: ['features/featureOne', 'features/featureTwo', 'features/featureThree']
|
54
|
+
cucumber_defaults:
|
55
|
+
format: 'pretty'
|
56
|
+
runtime_defaults:
|
57
|
+
environment: 'release'
|
58
|
+
log_level: 'debug'
|
59
|
+
defaults: ['--format html', '--out coverage/report.html', '-P -s']
|
19
60
|
|
20
61
|
If you were to run the following command `cukesparse test_task -t test` cukesparse would be passed the following arguments:
|
21
62
|
|
@@ -23,15 +64,15 @@ If you were to run the following command `cukesparse test_task -t test` cukespar
|
|
23
64
|
|
24
65
|
Cukesparse would then collate and produce the following parameters hash:
|
25
66
|
|
26
|
-
{:tags=>["--tags test"], :environment=>"ENVIRONMENT=release", :log_level=>"LOG_LEVEL=debug"
|
67
|
+
{:tags=>["--tags test"], :format=>"--format pretty", :environment=>"ENVIRONMENT=release", :log_level=>"LOG_LEVEL=debug"}
|
27
68
|
|
28
|
-
As no `environment`, `log_level`
|
69
|
+
As no `environment`, `log_level` arguments were passed the runtime defaults from the config/tasks.yml are used. The following command line output would be produced and run:
|
29
70
|
|
30
71
|
bundle exec cucumber --require features/ features/featureOne features/featureTwo features/featureThree --tags test
|
31
72
|
ENVIRONMENT=release LOG_LEVEL=debug FORMAT=pretty --format html --out coverage/report.html -P -s
|
32
73
|
|
33
74
|
## Parameters
|
34
|
-
Cukesparse accepts the following
|
75
|
+
Cukesparse accepts the following command line arguments:
|
35
76
|
|
36
77
|
### Cucumber options
|
37
78
|
'-t' e.g. -t @abc
|
@@ -43,7 +84,7 @@ Cukesparse accepts the following parameters:
|
|
43
84
|
'-g --guess'
|
44
85
|
'-x --expand'
|
45
86
|
|
46
|
-
###
|
87
|
+
### Runtime options
|
47
88
|
All arguments below have been setup for a custom project but are useful.
|
48
89
|
|
49
90
|
### Global options
|
@@ -63,8 +104,8 @@ All arguments below have been setup for a custom project but are useful.
|
|
63
104
|
'--timeout' e.g. --timeout 60
|
64
105
|
|
65
106
|
### Driver Options
|
66
|
-
'--screen' e.g. --screen 1024
|
67
|
-
'--position' e.g. --position 0
|
107
|
+
'--screen' e.g. --screen 1024/1280
|
108
|
+
'--position' e.g. --position 0/0
|
68
109
|
'--screenwidth' e.g. --screenwidth 1024
|
69
110
|
'--screenheight' e.g. --screenheight 1280
|
70
111
|
'--xposition' e.g. --xposition 0
|
@@ -77,6 +118,24 @@ When the `--debug` argument is passed it only outputs what would have been produ
|
|
77
118
|
|
78
119
|
'--debug'
|
79
120
|
|
121
|
+
So for example if you ran the following:
|
122
|
+
|
123
|
+
cukesparse test_task -t test --debug
|
124
|
+
|
125
|
+
You would get the following returned in the console:
|
126
|
+
|
127
|
+
DEBUG: Outputting ARGV passed
|
128
|
+
["test_task", "-t", "test", "--debug"]
|
129
|
+
|
130
|
+
DEBUG: Outputting parsed config file
|
131
|
+
{"test_task"=>{"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"]}}
|
132
|
+
|
133
|
+
DEBUG: Outputting parameters created
|
134
|
+
{:tags=>["--tags test"], :debug=>"DEBUG=TRUE", :format=>"--format pretty", :environment=>"ENVIRONMENT=release", :log_level=>"LOG_LEVEL=debug"}
|
135
|
+
|
136
|
+
DEBUG: Outputting commandc created
|
137
|
+
bundle exec cucumber --require features/ features/featureOne features/featureTwo features/featureThree --tags test DEBUG=TRUE --format pretty ENVIRONMENT=release LOG_LEVEL=debug --format html --out coverage/report.html -P -s
|
138
|
+
|
80
139
|
## Tests
|
81
140
|
There are a number of unit tests which are included as part of this project which are run by rspec. Please run:
|
82
141
|
|
data/config/tasks.yml
CHANGED
@@ -1,6 +1,33 @@
|
|
1
1
|
test_task:
|
2
2
|
feature_order: ['features/featureOne', 'features/featureTwo', 'features/featureThree']
|
3
|
+
|
4
|
+
# These cucumber defaults be set if not passed in from cli
|
5
|
+
cucumber_defaults:
|
6
|
+
format: 'pretty'
|
7
|
+
name: ['feature1', 'feature2']
|
8
|
+
tags: ['tags1', 'tags2']
|
9
|
+
strict: true
|
10
|
+
verbose: true
|
11
|
+
dry_run: true
|
12
|
+
guess: true
|
13
|
+
expand: true
|
14
|
+
|
15
|
+
# These runtime defaults be set if not passed in from cli
|
3
16
|
runtime_defaults:
|
4
17
|
environment: 'release'
|
5
18
|
log_level: 'debug'
|
6
|
-
|
19
|
+
cleanup: true
|
20
|
+
database: true
|
21
|
+
jenkins: true
|
22
|
+
retries: 5
|
23
|
+
timeout: 60
|
24
|
+
screen: 1280/1024
|
25
|
+
screenwidth: 1280
|
26
|
+
screenheight: 1024
|
27
|
+
position: 0/0
|
28
|
+
xposition: 0
|
29
|
+
yposition: 0
|
30
|
+
highlight: true
|
31
|
+
|
32
|
+
# Will always be added to end of of the system command
|
33
|
+
defaults: ['--format html', '--out report.html', '-P -s']
|
data/cukesparse.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'cukesparse'
|
3
|
-
s.version = '
|
4
|
-
s.date = '2013-06-
|
3
|
+
s.version = '2.0.0'
|
4
|
+
s.date = '2013-06-08'
|
5
5
|
s.summary = 'Cukesparse - cucumber command line parser'
|
6
6
|
s.description = 'A simple command line parser to pass arguments into Cucumber'
|
7
7
|
s.author = 'Jonathan Chrisp'
|
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
|
16
16
|
s.add_runtime_dependency 'clik', '~> 0.1.0'
|
17
17
|
s.add_runtime_dependency 'colored', '~> 1.2'
|
18
|
-
s.add_runtime_dependency 'cucumber', '~> 1.3.
|
18
|
+
s.add_runtime_dependency 'cucumber', '~> 1.3.2'
|
19
19
|
|
20
20
|
s.files = `git ls-files`.split("\n")
|
21
21
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
data/lib/cukesparse.rb
CHANGED
@@ -5,7 +5,6 @@ require 'pry'
|
|
5
5
|
YAML::ENGINE.yamler = 'psych'
|
6
6
|
|
7
7
|
module Cukesparse
|
8
|
-
|
9
8
|
class << self
|
10
9
|
attr_accessor :config_file, :config, :task, :parameters, :command
|
11
10
|
|
@@ -25,7 +24,7 @@ module Cukesparse
|
|
25
24
|
cli argv,
|
26
25
|
# Cucumber options
|
27
26
|
'-t' => lambda{ |t| add_multiple(:tags, t) },
|
28
|
-
'-n --name' => lambda{ |n|
|
27
|
+
'-n --name' => lambda{ |n| add_multiple(:name, n) },
|
29
28
|
'-f --format' => ->(f){ @parameters[:format] = "--format #{f}" },
|
30
29
|
'-d --dry-run' => ->{ @parameters[:dry_run] = "--dry-run" },
|
31
30
|
'-v --verbose' => ->{ @parameters[:verbose] = "--verbose" },
|
@@ -72,12 +71,13 @@ module Cukesparse
|
|
72
71
|
def build_command
|
73
72
|
check_for_task
|
74
73
|
check_for_parameters
|
74
|
+
set_cucumber_defaults
|
75
75
|
set_runtime_defaults
|
76
76
|
|
77
77
|
unless @task.empty? && @parameters.empty?
|
78
78
|
@command.push 'bundle exec cucumber'
|
79
79
|
@command.push '--require features/'
|
80
|
-
|
80
|
+
@command.push task['feature_order'].join(' ')
|
81
81
|
@parameters.each { |k,v| @command.push(v) }
|
82
82
|
@command.push task['defaults'].join(' ')
|
83
83
|
end
|
@@ -98,32 +98,31 @@ module Cukesparse
|
|
98
98
|
puts @config.inspect
|
99
99
|
puts 'DEBUG: Outputting parameters created'.yellow
|
100
100
|
puts @parameters.inspect
|
101
|
-
puts 'DEBUG: Outputting
|
101
|
+
puts 'DEBUG: Outputting commandc created'.yellow
|
102
102
|
puts @command.join(' ')
|
103
103
|
end
|
104
104
|
|
105
105
|
# Loads the config file
|
106
106
|
def load_config
|
107
107
|
begin
|
108
|
-
@config = YAML.load_file
|
108
|
+
@config = YAML.load_file @config_file
|
109
109
|
rescue Psych::SyntaxError
|
110
110
|
abort 'Your tasks file did not parse as expected!'.red.underline
|
111
111
|
rescue Errno::ENOENT
|
112
112
|
abort 'Your tasks file is missing!'.red.underline
|
113
113
|
end
|
114
|
-
|
115
114
|
self
|
116
115
|
end
|
117
116
|
|
118
117
|
# Checks for task in arguments
|
119
118
|
def check_for_task
|
120
|
-
|
121
|
-
if
|
119
|
+
task = argv & @config.keys
|
120
|
+
if task.empty?
|
122
121
|
abort 'ERROR: No task was passed to cukesparse!'.red.underline
|
123
|
-
elsif
|
124
|
-
|
122
|
+
elsif task.length > 1
|
123
|
+
puts 'WARN: Multiple tasks have been passed!'.yellow
|
125
124
|
else
|
126
|
-
@task = @config[
|
125
|
+
@task = @config[task[0]]
|
127
126
|
end
|
128
127
|
end
|
129
128
|
|
@@ -136,10 +135,15 @@ module Cukesparse
|
|
136
135
|
|
137
136
|
# Updates parameters based on config runtime defaults
|
138
137
|
def set_runtime_defaults
|
139
|
-
if @task.has_key?
|
140
|
-
@task['runtime_defaults'].each do |key,
|
141
|
-
|
142
|
-
|
138
|
+
if @task.has_key? 'runtime_defaults'
|
139
|
+
@task['runtime_defaults'].each do |key, val|
|
140
|
+
case key.to_sym
|
141
|
+
when :screen, :position
|
142
|
+
split_parameters(val, key.to_sym)
|
143
|
+
else
|
144
|
+
unless @parameters.has_key? key.to_sym
|
145
|
+
@parameters[key.to_sym] = key.upcase + '=' + val.to_s
|
146
|
+
end
|
143
147
|
end
|
144
148
|
end
|
145
149
|
else
|
@@ -147,20 +151,55 @@ module Cukesparse
|
|
147
151
|
end
|
148
152
|
end
|
149
153
|
|
154
|
+
# Updates parameters based on config cucumber defaults
|
155
|
+
def set_cucumber_defaults
|
156
|
+
if @task.has_key? 'cucumber_defaults'
|
157
|
+
@task['cucumber_defaults'].each do |key, val|
|
158
|
+
case key.to_sym
|
159
|
+
when :tags, :name
|
160
|
+
add_multiple key.to_sym, val
|
161
|
+
when :format
|
162
|
+
unless @parameters.has_key? key.to_sym
|
163
|
+
@parameters[key.to_sym] = '--' + key.downcase + ' ' + val.to_s
|
164
|
+
end
|
165
|
+
when :strict, :verbose, :guess, :expand
|
166
|
+
unless @parameters.has_key? key.to_sym && @parameters[key.to_sym] == true
|
167
|
+
@parameters[key.to_sym] = '--' + key.downcase
|
168
|
+
end
|
169
|
+
when :dry_run
|
170
|
+
unless @parameters.has_key? key.to_sym && @parameters[key.to_sym] == true
|
171
|
+
@parameters[key.to_sym] = '--dry-run'
|
172
|
+
end
|
173
|
+
else
|
174
|
+
puts 'WARN: The cucumber default ' + key.to_s + ' isn\'t a known option!'.yellow
|
175
|
+
end
|
176
|
+
end
|
177
|
+
else
|
178
|
+
puts 'WARN: The task has no cucumber defaults!'.yellow
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
150
182
|
# Add multiple options to key
|
151
183
|
#
|
152
184
|
# @param [Symbol] key the key to store in options
|
153
185
|
# @param [String] val the arguments passed in for key
|
154
|
-
def add_multiple
|
155
|
-
|
186
|
+
def add_multiple key, val
|
187
|
+
case val
|
188
|
+
when Array
|
189
|
+
val.each do |v|
|
190
|
+
(@parameters[key] ||= []).push '--' + key.to_s + ' ' + v.to_s
|
191
|
+
end
|
192
|
+
else
|
193
|
+
(@parameters[key] ||= []).push '--' + key.to_s + ' ' + val.to_s
|
194
|
+
end
|
156
195
|
end
|
157
196
|
|
158
197
|
# Splits parameters passed
|
159
198
|
#
|
160
199
|
# @param [String] params the parameters passed
|
161
200
|
# @param [Symbol] sym the symbol passed
|
162
|
-
def split_parameters
|
163
|
-
params = params.split
|
201
|
+
def split_parameters params, sym
|
202
|
+
params = params.split '/'
|
164
203
|
if params.length == 1
|
165
204
|
abort "ERROR: You have not passed enough parameters in the #{sym.to_s} command line argument!".red.underline
|
166
205
|
elsif params.length > 2
|
@@ -169,9 +208,11 @@ module Cukesparse
|
|
169
208
|
|
170
209
|
case sym
|
171
210
|
when :screen
|
172
|
-
@parameters[
|
211
|
+
@parameters[:screenwidth] = "SCREENWIDTH=#{params[0]}"
|
212
|
+
@parameters[:screenheight] = "SCREENHEIGHT=#{params[1]}"
|
173
213
|
when :position
|
174
|
-
@parameters[
|
214
|
+
@parameters[:xposition] = "XPOSITION=#{params[0]}"
|
215
|
+
@parameters[:yposition] = "YPOSITION=#{params[1]}"
|
175
216
|
end
|
176
217
|
end
|
177
218
|
end
|
data/report.html
ADDED
File without changes
|
data/spec/cukesparse_spec.rb
CHANGED
@@ -64,7 +64,7 @@ describe "cukesparse" do
|
|
64
64
|
end
|
65
65
|
|
66
66
|
it "should have a name parameter value of test" do
|
67
|
-
Cukesparse.parameters[:name].should eql '--name name_test'
|
67
|
+
Cukesparse.parameters[:name].should eql ['--name name_test']
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
@@ -81,7 +81,7 @@ describe "cukesparse" do
|
|
81
81
|
end
|
82
82
|
|
83
83
|
it "should have a name parameter value of test" do
|
84
|
-
Cukesparse.parameters[:name].should eql '--name name_test'
|
84
|
+
Cukesparse.parameters[:name].should eql ['--name name_test']
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
@@ -530,34 +530,50 @@ describe "cukesparse" do
|
|
530
530
|
context "when passed the --screen parameter" do
|
531
531
|
before :all do
|
532
532
|
# Clear arguments as rspec passes in script path
|
533
|
-
ARGV.push('test_task', '--screen', '1280
|
533
|
+
ARGV.push('test_task', '--screen', '1280/1024')
|
534
534
|
Cukesparse.parameters = {}
|
535
535
|
Cukesparse.parse_argv
|
536
536
|
end
|
537
537
|
|
538
|
-
it "should have a parameter of
|
539
|
-
Cukesparse.parameters.should have_key :
|
538
|
+
it "should have a parameter of screenwidth" do
|
539
|
+
Cukesparse.parameters.should have_key :screenwidth
|
540
|
+
end
|
541
|
+
|
542
|
+
it "should have a parameter of screenheight" do
|
543
|
+
Cukesparse.parameters.should have_key :screenheight
|
544
|
+
end
|
545
|
+
|
546
|
+
it "should have a screenwidth parameter value of SCREENWIDTH=1280" do
|
547
|
+
Cukesparse.parameters[:screenwidth].should eql 'SCREENWIDTH=1280'
|
540
548
|
end
|
541
549
|
|
542
|
-
it "should have a
|
543
|
-
Cukesparse.parameters[:
|
550
|
+
it "should have a screenheight parameter value of SCREENHEIGHT=1024" do
|
551
|
+
Cukesparse.parameters[:screenheight].should eql 'SCREENHEIGHT=1024'
|
544
552
|
end
|
545
553
|
end
|
546
554
|
|
547
555
|
context "when passed the --position parameter" do
|
548
556
|
before :all do
|
549
557
|
# Clear arguments as rspec passes in script path
|
550
|
-
ARGV.push('test_task', '--position', '0
|
558
|
+
ARGV.push('test_task', '--position', '0/0')
|
551
559
|
Cukesparse.parameters = {}
|
552
560
|
Cukesparse.parse_argv
|
553
561
|
end
|
554
562
|
|
555
|
-
it "should have a parameter of
|
556
|
-
Cukesparse.parameters.should have_key :
|
563
|
+
it "should have a parameter of xposition" do
|
564
|
+
Cukesparse.parameters.should have_key :xposition
|
565
|
+
end
|
566
|
+
|
567
|
+
it "should have a parameter of yposition" do
|
568
|
+
Cukesparse.parameters.should have_key :yposition
|
569
|
+
end
|
570
|
+
|
571
|
+
it "should have a xposition parameter value of XPOSITION=0" do
|
572
|
+
Cukesparse.parameters[:xposition].should eql 'XPOSITION=0'
|
557
573
|
end
|
558
574
|
|
559
|
-
it "should have a
|
560
|
-
Cukesparse.parameters[:
|
575
|
+
it "should have a yposition parameter value of YPOSITION=0" do
|
576
|
+
Cukesparse.parameters[:yposition].should eql 'YPOSITION=0'
|
561
577
|
end
|
562
578
|
end
|
563
579
|
|
@@ -708,37 +724,121 @@ describe "cukesparse" do
|
|
708
724
|
it "should have runtime default parameters" do
|
709
725
|
Cukesparse.parameters.should have_key :environment
|
710
726
|
Cukesparse.parameters.should have_key :log_level
|
727
|
+
Cukesparse.parameters.should have_key :cleanup
|
728
|
+
Cukesparse.parameters.should have_key :database
|
729
|
+
Cukesparse.parameters.should have_key :jenkins
|
730
|
+
Cukesparse.parameters.should have_key :retries
|
731
|
+
Cukesparse.parameters.should have_key :timeout
|
732
|
+
Cukesparse.parameters.should have_key :screenwidth
|
733
|
+
Cukesparse.parameters.should have_key :screenheight
|
734
|
+
Cukesparse.parameters.should have_key :xposition
|
735
|
+
Cukesparse.parameters.should have_key :yposition
|
736
|
+
Cukesparse.parameters.should have_key :highlight
|
711
737
|
end
|
712
738
|
|
713
739
|
it "should have the expected default runtime parameter values" do
|
714
740
|
Cukesparse.parameters[:environment].should eql 'ENVIRONMENT=release'
|
715
741
|
Cukesparse.parameters[:log_level].should eql 'LOG_LEVEL=debug'
|
742
|
+
Cukesparse.parameters[:cleanup].should eql 'CLEANUP=true'
|
743
|
+
Cukesparse.parameters[:database].should eql 'DATABASE=true'
|
744
|
+
Cukesparse.parameters[:jenkins].should eql 'JENKINS=true'
|
745
|
+
Cukesparse.parameters[:retries].should eql 'RETRIES=5'
|
746
|
+
Cukesparse.parameters[:timeout].should eql 'TIMEOUT=60'
|
747
|
+
Cukesparse.parameters[:screenwidth].should eql 'SCREENWIDTH=1280'
|
748
|
+
Cukesparse.parameters[:screenheight].should eql 'SCREENHEIGHT=1024'
|
749
|
+
Cukesparse.parameters[:xposition].should eql 'XPOSITION=0'
|
750
|
+
Cukesparse.parameters[:yposition].should eql 'YPOSITION=0'
|
751
|
+
Cukesparse.parameters[:highlight].should eql 'HIGHLIGHT=true'
|
752
|
+
end
|
753
|
+
end
|
754
|
+
|
755
|
+
context "when running the test task cucumber default vars should be set when no arguments passed" do
|
756
|
+
before :all do
|
757
|
+
# Clear arguments as rspec passes in script path
|
758
|
+
# Adding test tag to prevent raise
|
759
|
+
ARGV.push('test_task', '-t', 'test')
|
760
|
+
Cukesparse.parameters = {}
|
761
|
+
Cukesparse.configure {|c| c.config_file = './spec/spec_files/valid_tasks.yml'}
|
762
|
+
Cukesparse.load_config.parse_argv
|
763
|
+
Cukesparse.check_for_task
|
764
|
+
Cukesparse.check_for_parameters
|
765
|
+
Cukesparse.set_cucumber_defaults
|
766
|
+
end
|
767
|
+
|
768
|
+
it "should have cucumber default parameters" do
|
769
|
+
Cukesparse.parameters.should have_key :format
|
770
|
+
Cukesparse.parameters.should have_key :name
|
771
|
+
Cukesparse.parameters.should have_key :tags
|
772
|
+
Cukesparse.parameters.should have_key :strict
|
773
|
+
Cukesparse.parameters.should have_key :verbose
|
774
|
+
Cukesparse.parameters.should have_key :dry_run
|
775
|
+
Cukesparse.parameters.should have_key :guess
|
776
|
+
Cukesparse.parameters.should have_key :expand
|
777
|
+
end
|
778
|
+
|
779
|
+
it "should have the expected default runtime parameter values" do
|
780
|
+
Cukesparse.parameters[:format].should eql '--format pretty'
|
781
|
+
Cukesparse.parameters[:name].should eql ['--name feature1', '--name feature2']
|
782
|
+
Cukesparse.parameters[:tags].should eql ['--tags test', '--tags tags1', '--tags tags2']
|
783
|
+
Cukesparse.parameters[:strict].should eql '--strict'
|
784
|
+
Cukesparse.parameters[:verbose].should eql '--verbose'
|
785
|
+
Cukesparse.parameters[:dry_run].should eql '--dry-run'
|
786
|
+
Cukesparse.parameters[:guess].should eql '--guess'
|
787
|
+
Cukesparse.parameters[:expand].should eql '--expand'
|
716
788
|
end
|
717
789
|
end
|
718
790
|
|
719
791
|
# add_multiple
|
720
|
-
context "when add_multiple is called" do
|
721
|
-
|
722
|
-
Cukesparse.
|
723
|
-
|
724
|
-
|
792
|
+
context "when add_multiple is called with a single value" do
|
793
|
+
before do
|
794
|
+
Cukesparse.parameters = {}
|
795
|
+
end
|
796
|
+
|
797
|
+
it "will add a key to parameters with the correct array value" do
|
798
|
+
Cukesparse.add_multiple(:tags, 'abc')
|
799
|
+
Cukesparse.parameters.should have_key(:tags)
|
800
|
+
Cukesparse.parameters[:tags].should eql ['--tags abc']
|
801
|
+
end
|
802
|
+
end
|
803
|
+
|
804
|
+
context "when add_multiple is called with multiple values" do
|
805
|
+
before do
|
806
|
+
Cukesparse.parameters = {}
|
807
|
+
end
|
808
|
+
|
809
|
+
it "will add a key to parameters with the correct array values" do
|
810
|
+
Cukesparse.add_multiple(:tags, ['abc', 'def', 'hij'])
|
811
|
+
Cukesparse.parameters.should have_key(:tags)
|
812
|
+
Cukesparse.parameters[:tags].should eql ['--tags abc', '--tags def', '--tags hij']
|
725
813
|
end
|
726
814
|
end
|
727
815
|
|
728
816
|
# split_parameters
|
729
817
|
context "when split parameters sends :screen symbol with arguments" do
|
818
|
+
before do
|
819
|
+
Cukesparse.parameters = {}
|
820
|
+
end
|
821
|
+
|
730
822
|
it "will return set a parameters screen key and value" do
|
731
|
-
Cukesparse.split_parameters('1024
|
732
|
-
Cukesparse.parameters.should have_key(:
|
733
|
-
Cukesparse.parameters
|
823
|
+
Cukesparse.split_parameters('1024/1280', :screen)
|
824
|
+
Cukesparse.parameters.should have_key(:screenwidth)
|
825
|
+
Cukesparse.parameters.should have_key(:screenheight)
|
826
|
+
Cukesparse.parameters[:screenwidth].should eql "SCREENWIDTH=1024"
|
827
|
+
Cukesparse.parameters[:screenheight].should eql "SCREENHEIGHT=1280"
|
734
828
|
end
|
735
829
|
end
|
736
830
|
|
737
831
|
context "when split parameters sends :position symbol with arguments" do
|
832
|
+
before do
|
833
|
+
Cukesparse.parameters = {}
|
834
|
+
end
|
835
|
+
|
738
836
|
it "will return set a parameters screen key and value" do
|
739
|
-
Cukesparse.split_parameters('0
|
740
|
-
Cukesparse.parameters.should have_key(:
|
741
|
-
Cukesparse.parameters
|
837
|
+
Cukesparse.split_parameters('0/100', :position)
|
838
|
+
Cukesparse.parameters.should have_key(:xposition)
|
839
|
+
Cukesparse.parameters.should have_key(:yposition)
|
840
|
+
Cukesparse.parameters[:xposition].should eql "XPOSITION=0"
|
841
|
+
Cukesparse.parameters[:yposition].should eql "YPOSITION=100"
|
742
842
|
end
|
743
843
|
end
|
744
844
|
|
@@ -781,7 +881,7 @@ describe "cukesparse" do
|
|
781
881
|
ARGV.push('test_task', 'test_task1')
|
782
882
|
Cukesparse.configure {|c| c.config_file = './spec/spec_files/valid_tasks.yml'}
|
783
883
|
Cukesparse.load_config
|
784
|
-
Cukesparse.should_receive("
|
884
|
+
Cukesparse.should_receive("puts").with("\e[0;33;49mWARN: Multiple tasks have been passed!\e[0m")
|
785
885
|
Cukesparse.check_for_task
|
786
886
|
end
|
787
887
|
end
|
@@ -796,7 +896,7 @@ describe "cukesparse" do
|
|
796
896
|
|
797
897
|
context "when CLI is run with no runtime_defaults defined" do
|
798
898
|
it "will return a warning if no runtime_defaults are provided" do
|
799
|
-
ARGV.push('
|
899
|
+
ARGV.push('no_defaults')
|
800
900
|
Cukesparse.configure {|c| c.config_file = './spec/spec_files/valid_tasks.yml'}
|
801
901
|
Cukesparse.load_config
|
802
902
|
Cukesparse.check_for_task
|
@@ -805,6 +905,17 @@ describe "cukesparse" do
|
|
805
905
|
end
|
806
906
|
end
|
807
907
|
|
908
|
+
context "when CLI is run with no cucumber_defaults defined" do
|
909
|
+
it "will return a warning if no cucumber_defaults are provided" do
|
910
|
+
ARGV.push('no_defaults')
|
911
|
+
Cukesparse.configure {|c| c.config_file = './spec/spec_files/valid_tasks.yml'}
|
912
|
+
Cukesparse.load_config
|
913
|
+
Cukesparse.check_for_task
|
914
|
+
Cukesparse.should_receive("puts").with("\e[0;33;49mWARN: The task has no cucumber defaults!\e[0m")
|
915
|
+
Cukesparse.set_cucumber_defaults
|
916
|
+
end
|
917
|
+
end
|
918
|
+
|
808
919
|
context "when CLI is run with and split paramters which sends one argument" do
|
809
920
|
it "will return a error" do
|
810
921
|
Cukesparse.should_receive("abort").with("\e[4;31;49mERROR: You have not passed enough parameters in the test command line argument!\e[0m")
|
@@ -815,7 +926,7 @@ describe "cukesparse" do
|
|
815
926
|
context "when CLI is run with and split paramters which over two argument" do
|
816
927
|
it "will return a error" do
|
817
928
|
Cukesparse.should_receive("abort").with("\e[4;31;49mERROR: You have passed to many parameters in the test command line argument!\e[0m")
|
818
|
-
Cukesparse.split_parameters('1024
|
929
|
+
Cukesparse.split_parameters('1024/1280/16', :test)
|
819
930
|
end
|
820
931
|
end
|
821
932
|
end
|
@@ -1,17 +1,37 @@
|
|
1
1
|
test_task:
|
2
2
|
feature_order: ['features/featureOne', 'features/featureTwo', 'features/featureThree']
|
3
|
+
cucumber_defaults:
|
4
|
+
format: 'pretty'
|
5
|
+
name: ['feature1', 'feature2']
|
6
|
+
tags: ['tags1', 'tags2']
|
7
|
+
strict: true
|
8
|
+
verbose: true
|
9
|
+
dry_run: true
|
10
|
+
guess: true
|
11
|
+
expand: true
|
3
12
|
runtime_defaults:
|
4
13
|
environment: 'release'
|
5
14
|
log_level: 'debug'
|
6
|
-
|
15
|
+
cleanup: true
|
16
|
+
database: true
|
17
|
+
jenkins: true
|
18
|
+
retries: 5
|
19
|
+
timeout: 60
|
20
|
+
screen: 1280/1024
|
21
|
+
screenwidth: 1280
|
22
|
+
screenheight: 1024
|
23
|
+
position: 0/0
|
24
|
+
xposition: 0
|
25
|
+
yposition: 0
|
26
|
+
highlight: true
|
27
|
+
defaults: ['--format html', '--out coverage/report.html', '-P -s']
|
7
28
|
|
8
29
|
test_task1:
|
9
30
|
feature_order: ['features/featureOne', 'features/featureTwo', 'features/featureThree']
|
10
31
|
runtime_defaults:
|
11
32
|
environment: 'release'
|
12
33
|
log_level: 'debug'
|
13
|
-
defaults: ['--format html', '--out coverage/report.html', '
|
34
|
+
defaults: ['--format html', '--out coverage/report.html', '-P -s']
|
14
35
|
|
15
|
-
|
16
|
-
feature_order: ['features/featureOne', 'features/featureTwo', 'features/featureThree']
|
17
|
-
defaults: ['--format html', '--out coverage/report.html', '--format pretty', '-P -s']
|
36
|
+
no_defaults:
|
37
|
+
feature_order: ['features/featureOne', 'features/featureTwo', 'features/featureThree']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cukesparse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Chrisp
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-06-
|
11
|
+
date: 2013-06-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 1.3.
|
75
|
+
version: 1.3.2
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 1.3.
|
82
|
+
version: 1.3.2
|
83
83
|
description: A simple command line parser to pass arguments into Cucumber
|
84
84
|
email: jonathan.chrisp@gmail.com
|
85
85
|
executables:
|
@@ -95,6 +95,7 @@ files:
|
|
95
95
|
- config/tasks.yml
|
96
96
|
- cukesparse.gemspec
|
97
97
|
- lib/cukesparse.rb
|
98
|
+
- report.html
|
98
99
|
- spec/cukesparse_spec.rb
|
99
100
|
- spec/spec_files/invalid_tasks.yml
|
100
101
|
- spec/spec_files/valid_tasks.yml
|
@@ -108,12 +109,12 @@ require_paths:
|
|
108
109
|
- lib
|
109
110
|
required_ruby_version: !ruby/object:Gem::Requirement
|
110
111
|
requirements:
|
111
|
-
- - '>='
|
112
|
+
- - ! '>='
|
112
113
|
- !ruby/object:Gem::Version
|
113
114
|
version: 1.9.2
|
114
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
116
|
requirements:
|
116
|
-
- - '>='
|
117
|
+
- - ! '>='
|
117
118
|
- !ruby/object:Gem::Version
|
118
119
|
version: '0'
|
119
120
|
requirements: []
|