fuubar-cucumber 0.0.4 → 0.0.5

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.0.5
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{fuubar-cucumber}
8
- s.version = "0.0.4"
8
+ s.version = "0.0.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Marcin Ciunelis"]
12
- s.date = %q{2010-11-27}
12
+ s.date = %q{2010-11-30}
13
13
  s.description = %q{the instafailing Cucumber progress bar formatter}
14
14
  s.email = %q{marcin.ciunelis@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -1,13 +1,26 @@
1
- require 'cucumber/formatter/progress'
1
+ require 'cucumber/formatter/console'
2
+ require 'cucumber/formatter/io'
2
3
 
3
4
  module Cucumber
4
5
  module Formatter
5
- class Fuubar < Progress
6
+ class Fuubar
7
+ include Console
8
+ include Io
9
+
10
+ attr_reader :step_mother
6
11
 
7
12
  def initialize(step_mother, path_or_io, options)
13
+ @step_mother, @io, @options = step_mother, ensure_io(path_or_io, "fuubar"), options
8
14
  @step_count = @finished_count = @issues_count = 0
9
- @in_background = false
10
- super
15
+ end
16
+
17
+ def after_features(features)
18
+ @io.print COLORS[state]
19
+ @progress_bar.finish
20
+ @io.print "\e[0m"
21
+ @io.puts
22
+ @io.puts
23
+ print_summary(features)
11
24
  end
12
25
 
13
26
  def before_features(features)
@@ -15,24 +28,17 @@ module Cucumber
15
28
  @progress_bar = ProgressBar.new(" #{@step_count} steps", @step_count, @io)
16
29
  @progress_bar.bar_mark = '='
17
30
  end
18
-
31
+
19
32
  def before_background(background)
20
33
  @in_background = true
21
34
  end
22
-
35
+
23
36
  def after_background(background)
24
37
  @in_background = false
25
38
  end
26
39
 
27
- def after_features(features)
28
- @io.print COLORS[state]
29
- @progress_bar.finish
30
- @io.print "\e[0m"
31
- super
32
- end
33
-
34
40
  def after_step_result(keyword, step_match, multiline_arg, status, exception, source_indent, background)
35
- return if @in_background
41
+ return if @in_background || status == :skipped
36
42
  @state = :red if status == :failed
37
43
  if [:failed, :undefined].include? status
38
44
  @io.print "\e[K"
@@ -43,11 +49,30 @@ module Cucumber
43
49
  @io.puts
44
50
  @io.flush
45
51
  end
46
- super
52
+ progress(status)
47
53
  end
48
54
 
49
- protected
55
+ def before_examples(examples)
56
+ @is_example = true
57
+ end
58
+
59
+ def after_exaples(examples)
60
+ @is_example = false
61
+ end
62
+
63
+ def before_table_row(table_row)
64
+ if @is_example && table_row.scenario_outline
65
+ progress(:passed, table_row.scenario_outline.instance_variable_get("@background").instance_variable_get("@steps").count)
66
+ end
67
+ end
50
68
 
69
+ def after_table_row(table_row)
70
+ if @is_example && table_row.scenario_outline
71
+ progress(:passed, table_row.scenario_outline.instance_variable_get("@steps").count)
72
+ end
73
+ end
74
+
75
+ protected
51
76
  def state
52
77
  @state ||= :green
53
78
  end
@@ -58,20 +83,12 @@ module Cucumber
58
83
  print_passing_wip(@options)
59
84
  end
60
85
 
61
- CHARS = {
62
- :passed => '.',
63
- :failed => 'F',
64
- :undefined => 'U',
65
- :pending => 'P',
66
- :skipped => '-'
67
- }
68
-
69
86
  COLORS = { :green => "\e[32m", :yellow => "\e[33m", :red => "\e[31m" }
70
87
 
71
- def progress(status)
88
+ def progress(status = 'passed', count = 1)
72
89
  @io.print COLORS[state]
73
- @finished_count += 1
74
- @progress_bar.inc
90
+ @finished_count += count
91
+ @progress_bar.inc(count)
75
92
  @progress_bar.instance_variable_set("@title", " #{@finished_count}/#{@step_count}")
76
93
  @io.print "\e[0m"
77
94
  end
@@ -80,19 +97,26 @@ module Cucumber
80
97
  count = 0
81
98
  features = features.instance_variable_get("@features")
82
99
  features.each do |feature|
83
- #get scenarios
100
+ if feature.instance_variable_get("@background")
101
+ background = feature.instance_variable_get("@background")
102
+ background.init
103
+ background_steps = background.instance_variable_get("@steps").instance_variable_get("@steps")
104
+ end
84
105
  feature.instance_variable_get("@feature_elements").each do |scenario|
85
106
  scenario.init
86
- #get steps
87
107
  steps = scenario.instance_variable_get("@steps").instance_variable_get("@steps")
88
- count += steps.size
89
- #get example table
108
+ scenario_size = steps.size
109
+ if background_steps && scenario.is_a?(Cucumber::Ast::ScenarioOutline)
110
+ background_size = background_steps.size
111
+ end
90
112
  examples = scenario.instance_variable_get("@examples_array")
91
- unless examples.nil?
113
+ if examples
92
114
  examples.each do |example|
93
115
  example_matrix = example.instance_variable_get("@outline_table").instance_variable_get("@cell_matrix")
94
- count += example_matrix.size
116
+ count += (scenario_size + background_size)*(example_matrix.size - 1)
95
117
  end
118
+ else
119
+ count += scenario_size
96
120
  end
97
121
  end
98
122
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fuubar-cucumber
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 4
10
- version: 0.0.4
9
+ - 5
10
+ version: 0.0.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Marcin Ciunelis
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-27 00:00:00 +01:00
18
+ date: 2010-11-30 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency