cukedep 0.1.07 → 0.1.08
Sign up to get free protection for your applications and to get access to all the features.
- 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
|