nyan-cat-formatter 0.0.3 → 0.0.4

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.
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Matt Sears
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -12,6 +12,8 @@ This is my take on the Nyan Cat RSpec Formatter. It simply creates a rainbow tra
12
12
 
13
13
  The rainbow changes colors as it runs. See it in action [here](http://vimeo.com/32424001).
14
14
 
15
+ Works with RSpec 1.3 and RSpec 2.
16
+
15
17
  ```
16
18
  rspec --format NyanCatFormatter
17
19
  ```
@@ -1,7 +1,17 @@
1
1
  # -*- coding: utf-8 -*-
2
- require 'rspec/core/formatters/base_text_formatter'
3
2
 
4
- class NyanCatFormatter < RSpec::Core::Formatters::BaseTextFormatter
3
+ rspec_bin = $0.split('/').last
4
+ if rspec_bin == 'rspec'
5
+ ['rspec2','rspec/core/formatters/base_text_formatter'].each {|f| require f}
6
+ parent_class = RSpec::Core::Formatters::BaseTextFormatter
7
+ rspec_module = RSpec2
8
+ elsif rspec_bin == 'spec'
9
+ ['spec', 'rspec1', 'spec/runner/formatter/base_text_formatter'].each {|f| require f}
10
+ parent_class = Spec::Runner::Formatter::BaseTextFormatter
11
+ rspec_module = RSpec1
12
+ end
13
+
14
+ NyanCatFormatter = Class.new(parent_class) do
5
15
 
6
16
  ESC = "\e["
7
17
  NND = "#{ESC}0m"
@@ -11,77 +21,27 @@ class NyanCatFormatter < RSpec::Core::Formatters::BaseTextFormatter
11
21
  ERROR = '!'
12
22
  PENDING = '+'
13
23
 
14
- attr_reader :current, :example_results, :color_index
15
-
16
- def start(example_count)
17
- super(example_count)
18
- @current, @color_index, @passing_count = 0,0,0
19
- @example_results = []
20
- end
21
-
22
- def example_passed(example)
23
- super(example)
24
- tick PASS
25
- end
24
+ include rspec_module
26
25
 
27
- def example_pending(example)
28
- super(example)
29
- @pending_count =+1
30
- tick PENDING
31
- end
32
-
33
- def example_failed(example)
34
- super(example)
35
- @failure_count =+1
36
- tick FAIL
37
- end
38
-
39
- def start_dump
40
- @current = @example_count
41
- end
42
-
43
- def dump_summary(duration, example_count, failure_count, pending_count)
44
- dump_profile if profile_examples? && failure_count == 0
45
- summary = "\nNyan Cat flew #{format_seconds(duration)} seconds".split(//).map { |c| rainbowify(c) }
46
- output.puts summary.join
47
- output.puts colorise_summary(summary_line(example_count, failure_count, pending_count))
48
-
49
- if respond_to?(:dump_commands_to_rerun_failed_examples)
50
- dump_commands_to_rerun_failed_examples
51
- end
52
- end
53
-
54
- def dump_failures
55
- #no op
56
- end
26
+ attr_reader :current, :example_results, :color_index, :pending_count,
27
+ :failure_count, :example_count
57
28
 
58
29
  # Increments the example count and displays the current progress
59
30
  #
60
31
  # @returns nothing
61
32
  def tick(mark = PASS)
62
33
  @example_results << mark
63
- @current = (@current > @example_count) ? @example_count : @current + 1
34
+ @current = (@current > @example_count) ? @example_count : @current + 1
64
35
  dump_progress
65
36
  end
66
37
 
67
- # Creates a rainbow trail
68
- #
69
- # @return [String] the sprintf format of the Nyan cat
70
- def nyan_trail
71
- marks = @example_results.map{ |mark| highlight(mark) }
72
- marks.shift(current_width - terminal_width) if current_width > terminal_width
73
- nyan_cat_lines = nyan_cat.split("\n").each_with_index.map do |line, index|
74
- format("%s#{line}", marks.join)
75
- end.join("\n")
76
- end
77
-
78
38
  # Determine which Ascii Nyan Cat to display. If tests are complete,
79
39
  # Nyan Cat goes to sleep. If there are failing or pending examples,
80
40
  # Nyan Cat is concerned.
81
41
  #
82
42
  # @return [String] Nyan Cat
83
43
  def nyan_cat
84
- if @failure_count > 0 || @pending_count > 0
44
+ if @failure_count.to_i > 0 || @pending_count.to_i > 0
85
45
  ascii_cat('o')[@color_index%2].join("\n") #'~|_(o.o)'
86
46
  elsif (@current == @example_count)
87
47
  ascii_cat('-')[@color_index%2].join("\n") # '~|_(-.-)'
@@ -133,11 +93,24 @@ class NyanCatFormatter < RSpec::Core::Formatters::BaseTextFormatter
133
93
  #
134
94
  # @return [Array]
135
95
  def scoreboard
136
- padding = @example_count.to_s.length + 9
137
- [ @current.to_s.rjust( @example_count.to_s.length),
138
- green(@current - @pending_examples.size - @failed_examples.size).rjust(padding),
139
- yellow(@pending_examples.size).rjust(padding),
140
- red(@failed_examples.size).rjust(padding) ]
96
+ @pending_examples ||= []
97
+ @failed_examples ||= []
98
+ padding = @example_count.to_s.length
99
+ [ @current.to_s.rjust(padding),
100
+ green((@current - @pending_examples.size - @failed_examples.size).to_s.rjust(padding)),
101
+ yellow(@pending_count.to_s.rjust(padding)),
102
+ red(@failure_count.to_s.rjust(padding)) ]
103
+ end
104
+
105
+ # Creates a rainbow trail
106
+ #
107
+ # @return [String] the sprintf format of the Nyan cat
108
+ def nyan_trail
109
+ marks = @example_results.map{ |mark| highlight(mark) }
110
+ marks.shift(current_width - terminal_width) if current_width >= terminal_width
111
+ nyan_cat_lines = nyan_cat.split("\n").each_with_index.map do |line, index|
112
+ format("%s#{line}", marks.join)
113
+ end.join("\n")
141
114
  end
142
115
 
143
116
  # Ascii version of Nyan cat. Two cats in the array allow Nyan to animate running.
@@ -187,9 +160,10 @@ class NyanCatFormatter < RSpec::Core::Formatters::BaseTextFormatter
187
160
  # @return [String]
188
161
  def highlight(mark = PASS)
189
162
  case mark
190
- when PASS; rainbowify PASS_ARY[@color_index%2]
191
- when FAIL; red mark
192
- when ERROR; yellow mark
163
+ when PASS; rainbowify PASS_ARY[@color_index%2]
164
+ when FAIL; "\e[31m#{mark}\e[0m"
165
+ when ERROR; "\e[33m#{mark}\e[0m"
166
+ when PENDING; "\e[33m#{mark}\e[0m"
193
167
  else mark
194
168
  end
195
169
  end
@@ -0,0 +1,61 @@
1
+ module RSpec1
2
+
3
+ def start(example_count)
4
+ super(example_count)
5
+ @example_count = example_count
6
+ @current = @color_index = @passing_count = @failure_count = @pending_count = 0
7
+ @example_results = []
8
+ end
9
+
10
+ def example_passed(example)
11
+ super
12
+ @passing_count += 1
13
+ tick PASS
14
+ end
15
+
16
+ def example_pending(example, message = nil)
17
+ super
18
+ @pending_count =+1
19
+ tick PENDING
20
+ end
21
+
22
+ def example_failed(example, counter = nil, failure = nil)
23
+ super
24
+ @failure_count =+1
25
+ tick FAIL
26
+ end
27
+
28
+ def start_dump
29
+ @current = @example_count
30
+ end
31
+
32
+ def dump_pending
33
+ output.puts "\e[0;33m"
34
+ super
35
+ end
36
+
37
+ def dump_failure(*args)
38
+ output.puts "\e[0;31m"
39
+ super
40
+ end
41
+
42
+ def dump_summary(duration, example_count, failure_count, pending_count)
43
+ @output.puts "\nNyan Cat flew #{duration} seconds\n".each_char.map {|c| rainbowify(c)}.join
44
+ summary = "#{example_count} example#{'s' unless example_count == 1}, #{failure_count} failure#{'s' unless failure_count == 1}"
45
+ summary << ", #{pending_count} pending" if pending_count > 0
46
+
47
+ if failure_count == 0
48
+ @output.puts red(summary)
49
+ elsif pending_count > 0
50
+ @output.puts yellow(summary)
51
+ else
52
+ @output.puts green(summary)
53
+ end
54
+ @output.flush
55
+ end
56
+
57
+ def dump_failures
58
+ #no op
59
+ end
60
+
61
+ end
@@ -0,0 +1,45 @@
1
+ module RSpec2
2
+
3
+ def start(example_count)
4
+ super(example_count)
5
+ @current = @color_index = @passing_count = 0
6
+ @example_results = []
7
+ end
8
+
9
+ def example_passed(example)
10
+ super(example)
11
+ tick PASS
12
+ end
13
+
14
+ def example_pending(example)
15
+ super(example)
16
+ @pending_count =+1
17
+ tick PENDING
18
+ end
19
+
20
+ def example_failed(example)
21
+ super(example)
22
+ @failure_count =+1
23
+ tick FAIL
24
+ end
25
+
26
+ def start_dump
27
+ @current = @example_count
28
+ end
29
+
30
+ def dump_summary(duration, example_count, failure_count, pending_count)
31
+ dump_profile if profile_examples? && failure_count == 0
32
+ summary = "\nNyan Cat flew #{format_seconds(duration)} seconds".split(//).map { |c| rainbowify(c) }
33
+ output.puts summary.join
34
+ output.puts colorise_summary(summary_line(example_count, failure_count, pending_count))
35
+
36
+ if respond_to?(:dump_commands_to_rerun_failed_examples)
37
+ dump_commands_to_rerun_failed_examples
38
+ end
39
+ end
40
+
41
+ def dump_failures
42
+ #no op
43
+ end
44
+
45
+ end
@@ -2,7 +2,7 @@ $:.push File.expand_path("../lib", __FILE__)
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "nyan-cat-formatter"
5
- s.version = "0.0.3"
5
+ s.version = "0.0.4"
6
6
  s.authors = ["Matt Sears"]
7
7
  s.email = ["matt@mattsears.com"]
8
8
  s.homepage = "http://mtts.rs/nyancat"
@@ -4,10 +4,18 @@ require 'stringio'
4
4
  describe NyanCatFormatter do
5
5
 
6
6
  before do
7
+ rspec_bin = $0.split('/').last
7
8
  @output = StringIO.new
8
- @formatter = NyanCatFormatter.new(@output)
9
+ if rspec_bin == 'rspec'
10
+ @formatter = NyanCatFormatter.new(@output)
11
+ @example = RSpec::Core::ExampleGroup.describe.example
12
+ else
13
+ formatter_options = OpenStruct.new(:colour => true, :dry_run => false, :autospec => nil)
14
+ @formatter = NyanCatFormatter.new(formatter_options, @output)
15
+ @example = Spec::Example::ExampleProxy.new("should pass")
16
+ @formatter.instance_variable_set(:@example_group, OpenStruct.new(:description => "group"))
17
+ end
9
18
  @formatter.start(2)
10
- @example = RSpec::Core::ExampleGroup.describe.example
11
19
  sleep(0.1) # Just to slow it down a little :-)
12
20
  end
13
21
 
metadata CHANGED
@@ -1,89 +1,71 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: nyan-cat-formatter
3
- version: !ruby/object:Gem::Version
4
- hash: 25
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 3
10
- version: 0.0.3
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Matt Sears
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-11-22 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2011-12-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: rspec
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70322272045780 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :development
33
- version_requirements: *id001
34
- description: "Nyan Cat inspired RSpec formatter! "
35
- email:
23
+ prerelease: false
24
+ version_requirements: *70322272045780
25
+ description: ! 'Nyan Cat inspired RSpec formatter! '
26
+ email:
36
27
  - matt@mattsears.com
37
28
  executables: []
38
-
39
29
  extensions: []
40
-
41
30
  extra_rdoc_files: []
42
-
43
- files:
31
+ files:
44
32
  - .gitignore
45
33
  - .rspec
46
34
  - .rvmrc
47
35
  - Gemfile
36
+ - LICENSE.md
48
37
  - README.md
49
38
  - Rakefile
50
39
  - lib/nyan_cat_formatter.rb
40
+ - lib/rspec1.rb
41
+ - lib/rspec2.rb
51
42
  - nyan-cat-formatter.gemspec
52
43
  - spec/nyan_cat_formatter_spec.rb
53
44
  - spec/spec_helper.rb
54
45
  homepage: http://mtts.rs/nyancat
55
46
  licenses: []
56
-
57
47
  post_install_message:
58
48
  rdoc_options: []
59
-
60
- require_paths:
49
+ require_paths:
61
50
  - lib
62
- required_ruby_version: !ruby/object:Gem::Requirement
51
+ required_ruby_version: !ruby/object:Gem::Requirement
63
52
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- hash: 3
68
- segments:
69
- - 0
70
- version: "0"
71
- required_rubygems_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
58
  none: false
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- hash: 3
77
- segments:
78
- - 0
79
- version: "0"
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
80
63
  requirements: []
81
-
82
64
  rubyforge_project: nyan-cat-formatter
83
65
  rubygems_version: 1.8.10
84
66
  signing_key:
85
67
  specification_version: 3
86
68
  summary: Nyan Cat inspired RSpec formatter!
87
- test_files:
69
+ test_files:
88
70
  - spec/nyan_cat_formatter_spec.rb
89
71
  - spec/spec_helper.rb