cukedep 0.1.07 → 0.1.08
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 +8 -8
- data/CHANGELOG.md +3 -0
- data/Rakefile +3 -3
- data/lib/cukedep/application.rb +15 -14
- data/lib/cukedep/config.rb +0 -2
- data/lib/cukedep/constants.rb +3 -3
- data/lib/cukedep/cuke-runner.rb +22 -20
- data/lib/cukedep/feature-model.rb +33 -33
- data/lib/cukedep/file-action.rb +9 -9
- data/lib/cukedep/gherkin-listener.rb +7 -7
- data/sample/result.html +1 -1
- data/spec/cukedep/sample_features/cukedep.rake +1 -1
- data/spec/cukedep/sample_features/dependencies.dot +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OWRhNGZmMDMzMThmODZkZWE5ODlkMGU4MzRjZDVjZTVjY2U1MGNmMQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MzgzYTA5YTYwODQ2MzkzNjU0YjJhYzA0Y2M2ZThiODg3M2VmNTU5MA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YjM3OTZjMzVmNTlmNTc2YWU2ZmIyMGY5NGMzM2RjMDQxNDY5ODBjMzQ0MWU1
|
10
|
+
ZDBlN2M5ZjkzNWM0NDM0NWVlNDFhYzdiNzUzNjU0NTQyM2E1NmNiZTk2YTQz
|
11
|
+
MWZlYTMxNGQ1NGFjYWMwMjQ5OWQ0YjkxYzc0YzY1YzE3YWEyZGY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YmY4YWNjMWVkMTQyOTYyNmUwMTFlZThkMWVlNzg2NTcxN2Q0YmJiMmQzNjBj
|
14
|
+
ZjE1YmM0Y2M1YWEzMGMwM2M0NThmYWIwNmMxZjdhMWRhM2E3ZTNjYjc1ZWMw
|
15
|
+
YTczNjVlODI3OWZkZTlhMDBlM2VmMjcwNTc5NGRlZmM1OTg1ZTc=
|
data/CHANGELOG.md
CHANGED
data/Rakefile
CHANGED
data/lib/cukedep/application.rb
CHANGED
@@ -39,10 +39,9 @@ class Application
|
|
39
39
|
model = FeatureModel.new(feature_files)
|
40
40
|
generate_files(model, config)
|
41
41
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
end
|
42
|
+
return if options[:dryrun]
|
43
|
+
rake_cmd = 'rake -f cukedep.rake'
|
44
|
+
system(rake_cmd)
|
46
45
|
end
|
47
46
|
|
48
47
|
protected
|
@@ -67,16 +66,18 @@ class Application
|
|
67
66
|
|
68
67
|
exit
|
69
68
|
end
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
end
|
79
|
-
|
69
|
+
|
70
|
+
|
71
|
+
# # Read the .cukedep.yml file in the current working directory
|
72
|
+
# def load_cfg()
|
73
|
+
# if File.exist?(Cukedep::YMLFilename)
|
74
|
+
# YAML.load_file(Cukedep::YMLFilename)
|
75
|
+
# else
|
76
|
+
# Config.default
|
77
|
+
# end
|
78
|
+
# end
|
79
|
+
|
80
|
+
|
80
81
|
# Parse the feature files (with the specified external encoding)
|
81
82
|
def parse_features(external_encoding)
|
82
83
|
# Create a Gherkin listener
|
data/lib/cukedep/config.rb
CHANGED
data/lib/cukedep/constants.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
module Cukedep # Module used as a namespace
|
5
5
|
# The version number of the gem.
|
6
|
-
Version = '0.1.
|
6
|
+
Version = '0.1.08'
|
7
7
|
|
8
8
|
# Brief description of the gem.
|
9
9
|
Description = 'Manage dependencies between Cucumber feature files'
|
@@ -11,8 +11,8 @@ module Cukedep # Module used as a namespace
|
|
11
11
|
# Constant Cukedep::RootDir contains the absolute path of Rodent's
|
12
12
|
# root directory. Note: it also ends with a slash character.
|
13
13
|
unless defined?(RootDir)
|
14
|
-
|
15
|
-
|
14
|
+
# The initialisation of constant RootDir is guarded in order
|
15
|
+
# to avoid multiple initialisation (not allowed for constants)
|
16
16
|
|
17
17
|
# The root folder of Cukedep.
|
18
18
|
RootDir = begin
|
data/lib/cukedep/cuke-runner.rb
CHANGED
@@ -12,15 +12,21 @@ require_relative 'customization'
|
|
12
12
|
# UGLY workaround for bug in Cucumber's rake task
|
13
13
|
if Gem::VERSION[0].to_i >= 2 && Cucumber::VERSION <= '1.3.2'
|
14
14
|
# Monkey-patch a buggy method
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
15
|
+
module Cucumber
|
16
|
+
module Rake
|
17
|
+
class Task
|
18
|
+
class ForkedCucumberRunner
|
19
|
+
def gem_available?(gemname)
|
20
|
+
if Gem::VERSION[0].to_i >= 2
|
21
|
+
gem_available_new_rubygems?(gemname)
|
22
|
+
else
|
23
|
+
gem_available_old_rubygems?(gemname)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end # class
|
27
|
+
end # class
|
28
|
+
end # module
|
29
|
+
end # module
|
24
30
|
end
|
25
31
|
|
26
32
|
|
@@ -128,18 +134,15 @@ class CukeRunner
|
|
128
134
|
def validated_proj_dir(projectDir)
|
129
135
|
path = Pathname.new(projectDir)
|
130
136
|
path = path.expand_path if path.relative?
|
131
|
-
unless path.exist?
|
132
|
-
fail StandardError, "No such project path: '#{path}'"
|
133
|
-
end
|
137
|
+
fail StandardError, "No such project path: '#{path}'" unless path.exist?
|
134
138
|
|
135
139
|
return path.to_s
|
136
140
|
end
|
137
141
|
|
138
142
|
def expected_state(aState)
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
end
|
143
|
+
return if state == aState
|
144
|
+
msg = "expected state was '#{aState}' instead of '#{state}'."
|
145
|
+
fail StandardError, msg
|
143
146
|
end
|
144
147
|
|
145
148
|
|
@@ -189,10 +192,9 @@ class CukeRunner
|
|
189
192
|
hook_kind = (kind + '_hooks')
|
190
193
|
|
191
194
|
kode = handlers[hook_kind.to_sym][scope.to_sym]
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
end
|
195
|
+
return if kode.nil?
|
196
|
+
safe_args = args.map { |one_arg| one_arg.dup.freeze }
|
197
|
+
kode.call(*safe_args)
|
196
198
|
end
|
197
199
|
|
198
200
|
|
@@ -16,39 +16,39 @@ class FeatureModel
|
|
16
16
|
|
17
17
|
FeatureDependencies = Struct.new(:dependee, :dependents)
|
18
18
|
|
19
|
-
# Helper class used internally by FeatureModel class.
|
20
|
-
# Purpose: to try to create a valid dependency graph and perform a
|
21
|
-
# topological sort of the nodes.
|
22
|
-
class DepGraph
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
19
|
+
# Helper class used internally by FeatureModel class.
|
20
|
+
# Purpose: to try to create a valid dependency graph and perform a
|
21
|
+
# topological sort of the nodes.
|
22
|
+
class DepGraph
|
23
|
+
include TSort # Mix-in module for topological sorting
|
24
|
+
|
25
|
+
attr_reader(:dependencies)
|
26
|
+
|
27
|
+
# Inverse lookup: from the feature file => FeatureDependencies
|
28
|
+
attr_reader(:lookup)
|
29
|
+
|
30
|
+
def initialize(theDependencies)
|
31
|
+
@dependencies = theDependencies
|
32
|
+
@lookup = dependencies.each_with_object({}) do |f_deps, subresult|
|
33
|
+
subresult[f_deps.dependee] = f_deps
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# Method required by TSort module.
|
38
|
+
# It is used to iterate over all the nodes of the dependency graph
|
39
|
+
def tsort_each_node(&aBlock)
|
40
|
+
return dependencies.each(&aBlock)
|
34
41
|
end
|
35
|
-
end
|
36
|
-
|
37
|
-
# Method required by TSort module.
|
38
|
-
# It is used to iterate over all the nodes of the dependency graph
|
39
|
-
def tsort_each_node(&aBlock)
|
40
|
-
return dependencies.each(&aBlock)
|
41
|
-
end
|
42
42
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
43
|
+
# Method required by TSort module.
|
44
|
+
# It is used to iterate over all the children nodes of the given node.
|
45
|
+
def tsort_each_child(aDependency, &aBlock)
|
46
|
+
dependents = aDependency.dependents
|
47
|
+
children = dependents.map { |feature| lookup[feature] }
|
48
|
+
children.each(&aBlock)
|
49
|
+
end
|
50
50
|
|
51
|
-
end # class
|
51
|
+
end # class
|
52
52
|
|
53
53
|
|
54
54
|
attr_reader(:feature_files)
|
@@ -164,7 +164,7 @@ EOS
|
|
164
164
|
|
165
165
|
# Output the nodes as graph vertices + their edges with parent node
|
166
166
|
def emit_body(anIO)
|
167
|
-
anIO.puts
|
167
|
+
anIO.puts <<-EOS
|
168
168
|
subgraph island {
|
169
169
|
node [shape = box, style=filled, color=lightgray];
|
170
170
|
EOS
|
@@ -205,7 +205,7 @@ EOS
|
|
205
205
|
else
|
206
206
|
id_suffix = " -- #{its_feature.identifier}"
|
207
207
|
end
|
208
|
-
anIO.puts %Q
|
208
|
+
anIO.puts %Q( node_#{anIndex} [label = "#{basename}#{id_suffix}"];)
|
209
209
|
end
|
210
210
|
|
211
211
|
# Draw an edge between feature files having dependencies.
|
@@ -271,7 +271,7 @@ EOS
|
|
271
271
|
dep_tags = feature.dependency_tags
|
272
272
|
# Complain when self dependency detected
|
273
273
|
if dep_tags.include?(its_id)
|
274
|
-
msg = "Feature
|
274
|
+
msg = "Feature with identifier #{its_id} depends on itself!"
|
275
275
|
fail(StandardError, msg)
|
276
276
|
end
|
277
277
|
|
data/lib/cukedep/file-action.rb
CHANGED
@@ -39,10 +39,10 @@ class FileAction
|
|
39
39
|
|
40
40
|
def validate_file_patterns(filePatterns)
|
41
41
|
err_msg = 'Expecting a list of file patterns'
|
42
|
-
fail StandardError, err_msg unless filePatterns.
|
42
|
+
fail StandardError, err_msg unless filePatterns.is_a?(Array)
|
43
43
|
filePatterns.each do |filePatt|
|
44
44
|
err_msg = "Invalid value in list of file patterns: #{filePatt}"
|
45
|
-
fail StandardError, err_msg unless filePatt.
|
45
|
+
fail StandardError, err_msg unless filePatt.is_a?(String)
|
46
46
|
end
|
47
47
|
|
48
48
|
return filePatterns
|
@@ -162,11 +162,11 @@ class ActionTriplet
|
|
162
162
|
# :copy_patterns, :copy_subdir
|
163
163
|
def initialize(theActionSettings)
|
164
164
|
@save_action = CopyAction.new(theActionSettings[:save_patterns],
|
165
|
-
|
165
|
+
theActionSettings[:save_subdir])
|
166
166
|
@delete_action = DeleteAction.new(theActionSettings[:delete_patterns],
|
167
|
-
|
167
|
+
theActionSettings[:delete_subdir])
|
168
168
|
@copy_action = CopyAction.new(theActionSettings[:copy_patterns],
|
169
|
-
|
169
|
+
theActionSettings[:copy_subdir])
|
170
170
|
end
|
171
171
|
|
172
172
|
|
@@ -191,22 +191,22 @@ class ActionTriplet
|
|
191
191
|
# Return nil if no triplet was found for the event.
|
192
192
|
def self.builtin(anEvent)
|
193
193
|
@@builtin_actions ||= {
|
194
|
-
before_each: ActionTriplet.new(
|
194
|
+
before_each: ActionTriplet.new(
|
195
195
|
save_patterns: [],
|
196
196
|
save_subdir: '',
|
197
197
|
delete_patterns: ['*.feature'],
|
198
198
|
delete_subdir: './features',
|
199
199
|
copy_patterns: [],
|
200
200
|
copy_subdir: './features'
|
201
|
-
|
202
|
-
after_each: ActionTriplet.new(
|
201
|
+
),
|
202
|
+
after_each: ActionTriplet.new(
|
203
203
|
save_patterns: [],
|
204
204
|
save_subdir: '',
|
205
205
|
delete_patterns: ['*.feature'], # Remove feature files after the run
|
206
206
|
delete_subdir: './features',
|
207
207
|
copy_patterns: [],
|
208
208
|
copy_subdir: ''
|
209
|
-
|
209
|
+
)
|
210
210
|
}
|
211
211
|
|
212
212
|
return @@builtin_actions.fetch(anEvent, nil)
|
@@ -17,7 +17,7 @@ class FeatureFileRep
|
|
17
17
|
def basename()
|
18
18
|
File.basename(filepath)
|
19
19
|
end
|
20
|
-
end
|
20
|
+
end # class
|
21
21
|
|
22
22
|
# A ParserListener listens to all the formatting events
|
23
23
|
# emitted by the Gherkin parser.
|
@@ -53,27 +53,27 @@ class GherkinListener
|
|
53
53
|
end
|
54
54
|
|
55
55
|
# aBackground is a Gherkin::Formatter::Model::Background instance
|
56
|
-
def background(
|
56
|
+
def background(_aBackground)
|
57
57
|
; # Do nothing
|
58
58
|
end
|
59
59
|
|
60
60
|
# aScenario is a Gherkin::Formatter::Model::Scenario instance
|
61
|
-
def scenario(
|
61
|
+
def scenario(_aScenario)
|
62
62
|
; # Do nothing
|
63
63
|
end
|
64
64
|
|
65
65
|
# aScenarioOutline is a Gherkin::Formatter::Model::ScenarioOutline instance
|
66
|
-
def scenario_outline(
|
66
|
+
def scenario_outline(_aScenarioOutline)
|
67
67
|
; # Do nothing
|
68
68
|
end
|
69
69
|
|
70
70
|
# theExamples is a Gherkin::Formatter::Model::Examples instance
|
71
|
-
def examples(
|
71
|
+
def examples(_theExamples)
|
72
72
|
; # Do nothing
|
73
73
|
end
|
74
74
|
|
75
75
|
# aStep is a Gherkin::Formatter::Model::Step instance
|
76
|
-
def step(
|
76
|
+
def step(_aStep)
|
77
77
|
; # Do nothing
|
78
78
|
end
|
79
79
|
|
@@ -84,7 +84,7 @@ class GherkinListener
|
|
84
84
|
|
85
85
|
|
86
86
|
# Catch all method
|
87
|
-
def method_missing(message, *
|
87
|
+
def method_missing(message, *_args)
|
88
88
|
puts "Method #{message} is not implemented (yet)."
|
89
89
|
end
|
90
90
|
|
data/sample/result.html
CHANGED
@@ -469,4 +469,4 @@ e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["
|
|
469
469
|
$('#'+element_id).css('color', '#000000');
|
470
470
|
}
|
471
471
|
|
472
|
-
</script></head><body><!-- Step count 12--><div class="cucumber"><div id="cucumber-header"><div id="label"><h1>Cucumber Features</h1></div><div id="summary"><p id="totals"></p><p id="duration"></p><div id="expand-collapse"><p id="expander">Expand All</p><p id="collapser">Collapse All</p></div></div></div><div class="feature"><span class="tag">@a_few</span> <span class="tag">@feature:qux</span><h2><span class="val">Feature: Registering user credentials</span></h2><p class="narrative">As a video rental employee<br/>I want to enter my credentials<br/>So I can identify myself when use the rental application<br/></p><div class='scenario'><span class="scenario_file">features\a_few_tests.feature:8</span><h3 id="scenario_1"><span class="keyword">Scenario:</span> <span class="val">Start without credentials</span></h3><ol><li id='features\a_few_tests_feature_9' class='step passed'><div class="step_name"><span class="keyword">Given </span><span class="step val">there is no registered user</span></div><div class="step_file"><span>features/step_definitions/steps.rb:46</span></div></li> <script type="text/javascript">moveProgressBar('8.3');</script><li id='features\a_few_tests_feature_10' class='step passed'><div class="step_name"><span class="keyword">When </span><span class="step val">I enter the credentials "<span class="param">it's me</span>"</span></div><div class="step_file"><span>features/step_definitions/steps.rb:50</span></div></li> <script type="text/javascript">moveProgressBar('16.6');</script><li id='features\a_few_tests_feature_11' class='step passed'><div class="step_name"><span class="keyword">Then </span><span class="step val">I should not be authorized</span></div><div class="step_file"><span>features/step_definitions/steps.rb:54</span></div></li><li class="step message">Invalid user credential</li> <script type="text/javascript">moveProgressBar('25.0');</script></ol></div><div class='scenario outline'><span class="scenario_file">features\a_few_tests.feature:14</span><h3 id="scenario_2"><span class="keyword">Scenario Outline:</span> <span class="val">Registering some credentials</span></h3><ol><li id='features\a_few_tests_feature_15' class='step skipped'><div class="step_name"><span class="keyword">When </span><span class="step val">I register my credentials "<credentials>"</span></div><div class="step_file"><span>features/step_definitions/steps.rb:59</span></div></li> <script type="text/javascript">moveProgressBar('33.3');</script><li id='features\a_few_tests_feature_16' class='step skipped'><div class="step_name"><span class="keyword">When </span><span class="step val">I enter the credentials "<credentials>"</span></div><div class="step_file"><span>features/step_definitions/steps.rb:50</span></div></li> <script type="text/javascript">moveProgressBar('41.6');</script><li id='features\a_few_tests_feature_17' class='step skipped'><div class="step_name"><span class="keyword">Then </span><span class="step val">I should see a welcome message</span></div><div class="step_file"><span>features/step_definitions/steps.rb:63</span></div></li> <script type="text/javascript">moveProgressBar('50.0');</script></ol><div class="examples"><h4><span class="keyword">Examples</span> <span class="val"></span></h4><table><tr class='step' id='row_20'><th class="step skipped_param" id="row_20_0"><div><span class="step param">credentials</span></div></th></tr> <script type="text/javascript">moveProgressBar('58.3');</script><tr class='step' id='row_21'><td class="step passed" id="row_21_0"><div><span class="step param">it's me</span></div></td><td class="message">Welcome to the rental application.</td></tr> <script type="text/javascript">moveProgressBar('66.6');</script><tr class='step' id='row_22'><td class="step passed" id="row_22_0"><div><span class="step param">himself</span></div></td><td class="message">Welcome to the rental application.</td></tr> <script type="text/javascript">moveProgressBar('75.0');</script><tr class='step' id='row_23'><td class="step passed" id="row_23_0"><div><span class="step param">nemo</span></div></td><td class="message">Welcome to the rental application.</td></tr> <script type="text/javascript">moveProgressBar('83.3');</script></table></div></div></div><script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>0m0.
|
472
|
+
</script></head><body><!-- Step count 12--><div class="cucumber"><div id="cucumber-header"><div id="label"><h1>Cucumber Features</h1></div><div id="summary"><p id="totals"></p><p id="duration"></p><div id="expand-collapse"><p id="expander">Expand All</p><p id="collapser">Collapse All</p></div></div></div><div class="feature"><span class="tag">@a_few</span> <span class="tag">@feature:qux</span><h2><span class="val">Feature: Registering user credentials</span></h2><p class="narrative">As a video rental employee<br/>I want to enter my credentials<br/>So I can identify myself when use the rental application<br/></p><div class='scenario'><span class="scenario_file">features\a_few_tests.feature:8</span><h3 id="scenario_1"><span class="keyword">Scenario:</span> <span class="val">Start without credentials</span></h3><ol><li id='features\a_few_tests_feature_9' class='step passed'><div class="step_name"><span class="keyword">Given </span><span class="step val">there is no registered user</span></div><div class="step_file"><span>features/step_definitions/steps.rb:46</span></div></li> <script type="text/javascript">moveProgressBar('8.3');</script><li id='features\a_few_tests_feature_10' class='step passed'><div class="step_name"><span class="keyword">When </span><span class="step val">I enter the credentials "<span class="param">it's me</span>"</span></div><div class="step_file"><span>features/step_definitions/steps.rb:50</span></div></li> <script type="text/javascript">moveProgressBar('16.6');</script><li id='features\a_few_tests_feature_11' class='step passed'><div class="step_name"><span class="keyword">Then </span><span class="step val">I should not be authorized</span></div><div class="step_file"><span>features/step_definitions/steps.rb:54</span></div></li><li class="step message">Invalid user credential</li> <script type="text/javascript">moveProgressBar('25.0');</script></ol></div><div class='scenario outline'><span class="scenario_file">features\a_few_tests.feature:14</span><h3 id="scenario_2"><span class="keyword">Scenario Outline:</span> <span class="val">Registering some credentials</span></h3><ol><li id='features\a_few_tests_feature_15' class='step skipped'><div class="step_name"><span class="keyword">When </span><span class="step val">I register my credentials "<credentials>"</span></div><div class="step_file"><span>features/step_definitions/steps.rb:59</span></div></li> <script type="text/javascript">moveProgressBar('33.3');</script><li id='features\a_few_tests_feature_16' class='step skipped'><div class="step_name"><span class="keyword">When </span><span class="step val">I enter the credentials "<credentials>"</span></div><div class="step_file"><span>features/step_definitions/steps.rb:50</span></div></li> <script type="text/javascript">moveProgressBar('41.6');</script><li id='features\a_few_tests_feature_17' class='step skipped'><div class="step_name"><span class="keyword">Then </span><span class="step val">I should see a welcome message</span></div><div class="step_file"><span>features/step_definitions/steps.rb:63</span></div></li> <script type="text/javascript">moveProgressBar('50.0');</script></ol><div class="examples"><h4><span class="keyword">Examples</span> <span class="val"></span></h4><table><tr class='step' id='row_20'><th class="step skipped_param" id="row_20_0"><div><span class="step param">credentials</span></div></th></tr> <script type="text/javascript">moveProgressBar('58.3');</script><tr class='step' id='row_21'><td class="step passed" id="row_21_0"><div><span class="step param">it's me</span></div></td><td class="message">Welcome to the rental application.</td></tr> <script type="text/javascript">moveProgressBar('66.6');</script><tr class='step' id='row_22'><td class="step passed" id="row_22_0"><div><span class="step param">himself</span></div></td><td class="message">Welcome to the rental application.</td></tr> <script type="text/javascript">moveProgressBar('75.0');</script><tr class='step' id='row_23'><td class="step passed" id="row_23_0"><div><span class="step param">nemo</span></div></td><td class="message">Welcome to the rental application.</td></tr> <script type="text/javascript">moveProgressBar('83.3');</script></table></div></div></div><script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>0m0.031s seconds</strong>";</script><script type="text/javascript">document.getElementById('totals').innerHTML = "4 scenarios (4 passed)<br />12 steps (12 passed)";</script></div></body></html>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
// 'C:/Ruby193/lib/ruby/site_ruby/Cukedep/spec/cukedep/sample_features'
|
3
3
|
// This file uses the DOT syntax, a free utility from the Graphviz toolset.
|
4
4
|
// Graphviz is available at: www.graphviz.org
|
5
|
-
// File generated on
|
5
|
+
// File generated on Sun Jul 6 12:16:27 2014.
|
6
6
|
|
7
7
|
digraph g {
|
8
8
|
size = "7, 11"; // Dimensions in inches...
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cukedep
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.08
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dimitri Geshef
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cucumber
|