fuubar 2.0.0 → 2.1.0.beta1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 04245529ade7f1040025d12e925f75973bba9337
4
- data.tar.gz: d336dc4891c038f3244446e34b11a02baf7088d8
3
+ metadata.gz: 708b886bc4ae937727cdb525165d4b9de5fea9b3
4
+ data.tar.gz: 9e73d903a3fd2386b14d7ec037ef6e486d915577
5
5
  SHA512:
6
- metadata.gz: 9b4218ff1a6af7183f44c4df5df5b211aa72a469cf5b4b3ebc2eb7292ea1faf9b0288ff8eaec6372d3eafc28b92545ac70e05713e5330d5f2b57959e48f8e79c
7
- data.tar.gz: 89d2946e249fb19e39a62015fe1387179aa6ca22cb12174689cd2bbf2837ef382604e23b24226053a9351464e030b0f8c28cca4ed72b75d6e93942dfec551985
6
+ metadata.gz: 273b6fee00548ee13cf1735d3a1458d21852207a2550033109e991b632bd3c43d002504474655f658bbb1f129646a70421118f5c820c81428f618863e051b367
7
+ data.tar.gz: 521da1a5c29bf1ca17e5c480b539008f37828d6922473116cf5f64efbca191c7d4fb131eb49d7f3ae8daf6f05a06652e586aec639a10fb99cb4d2e64384f2a2c
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2010 Jeff Kreeftmeijer.
2
+ Copyright (c) 2010-2016 The Kompanee, Ltd
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in
12
+ all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ THE SOFTWARE.
data/README.md CHANGED
@@ -1,16 +1,20 @@
1
1
  #Fuubar
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/fuubar.png)](https://badge.fury.io/rb/fuubar) [![Build Status](https://secure.travis-ci.org/thekompanee/fuubar.png?branch=master)](http://travis-ci.org/thekompanee/fuubar) [![Code Climate](https://codeclimate.com/github/thekompanee/fuubar.png)](https://codeclimate.com/github/thekompanee/fuubar) [![Code Climate](https://codeclimate.com/github/thekompanee/fuubar/coverage.png)](https://codeclimate.com/github/thekompanee/fuubar)
3
+ [![Gem Version](https://badge.fury.io/rb/fuubar.svg)](https://badge.fury.io/rb/fuubar) [![Build Status](https://secure.travis-ci.org/thekompanee/fuubar.svg?branch=master)](http://travis-ci.org/thekompanee/fuubar) [![Code Climate](https://codeclimate.com/github/thekompanee/fuubar.svg)](https://codeclimate.com/github/thekompanee/fuubar) [![Code Climate](https://codeclimate.com/github/thekompanee/fuubar/coverage.svg)](https://codeclimate.com/github/thekompanee/fuubar)
4
4
 
5
- Fuubar is an instafailing [RSpec](http://github.com/rspec) formatter that uses a progress bar instead of a string of letters and dots as feedback. Here's [a video of Fuubar in action](http://vimeo.com/16845253).
5
+ Fuubar is an instafailing [RSpec](http://github.com/rspec) formatter that uses a progress bar instead of a string of letters and dots as feedback.
6
+
7
+ [![gif](http://i.imgur.com/GIiA53s.gif)](http://vimeo.com/16845253).
6
8
 
7
9
  Supported Rubies
8
10
  --------------------------------
9
11
  * MRI Ruby 1.8.7
10
12
  * MRI Ruby 1.9.2
11
13
  * MRI Ruby 1.9.3
12
- * MRI Ruby 2.0.0
13
- * MRI Ruby 2.1.0
14
+ * MRI Ruby 2.0.x
15
+ * MRI Ruby 2.1.x
16
+ * MRI Ruby 2.2.x
17
+ * MRI Ruby 2.3.x
14
18
  * JRuby (in 1.8 compat mode)
15
19
  * JRuby (in 1.9 compat mode)
16
20
 
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env rake
2
+ require 'bundler/gem_tasks'
@@ -1,18 +1,19 @@
1
1
  require 'rspec'
2
2
  require 'rspec/core/formatters/base_text_formatter'
3
3
  require 'ruby-progressbar'
4
+ require 'fuubar/output'
4
5
 
5
6
  RSpec.configuration.add_setting :fuubar_progress_bar_options, :default => {}
6
7
 
7
8
  class Fuubar < RSpec::Core::Formatters::BaseTextFormatter
8
- DEFAULT_PROGRESS_BAR_OPTIONS = { :format => ' %c/%C |%w>%i| %e ' }
9
+ DEFAULT_PROGRESS_BAR_OPTIONS = { :format => ' %c/%C |%w>%i| %e ' }.freeze
9
10
 
10
11
  RSpec::Core::Formatters.register self, :start,
11
- :message,
12
- :example_passed,
13
- :example_pending,
14
- :example_failed,
15
- :dump_failures
12
+ :message,
13
+ :example_passed,
14
+ :example_pending,
15
+ :example_failed,
16
+ :dump_failures
16
17
 
17
18
  attr_accessor :progress,
18
19
  :passed_count,
@@ -22,20 +23,22 @@ class Fuubar < RSpec::Core::Formatters::BaseTextFormatter
22
23
  def initialize(*args)
23
24
  super
24
25
 
25
- self.progress = ProgressBar.create(DEFAULT_PROGRESS_BAR_OPTIONS.
26
- merge(:throttle_rate => continuous_integration? ? 1.0 : nil).
27
- merge(:total => 0,
28
- :output => output,
29
- :autostart => false))
26
+ self.progress = ProgressBar.create(
27
+ DEFAULT_PROGRESS_BAR_OPTIONS.
28
+ merge(:throttle_rate => continuous_integration? ? 1.0 : nil).
29
+ merge(:total => 0,
30
+ :output => output,
31
+ :autostart => false)
32
+ )
30
33
  end
31
34
 
32
35
  def start(notification)
33
- progress_bar_options = DEFAULT_PROGRESS_BAR_OPTIONS.
34
- merge(:throttle_rate => continuous_integration? ? 1.0 : nil).
35
- merge(configuration.fuubar_progress_bar_options).
36
- merge(:total => notification.count,
37
- :output => output,
38
- :autostart => false)
36
+ progress_bar_options = DEFAULT_PROGRESS_BAR_OPTIONS.
37
+ merge(:throttle_rate => continuous_integration? ? 1.0 : nil).
38
+ merge(configuration.fuubar_progress_bar_options).
39
+ merge(:total => notification.count,
40
+ :output => output,
41
+ :autostart => false)
39
42
 
40
43
  self.progress = ProgressBar.create(progress_bar_options)
41
44
  self.passed_count = 0
@@ -47,13 +50,13 @@ class Fuubar < RSpec::Core::Formatters::BaseTextFormatter
47
50
  with_current_color { progress.start }
48
51
  end
49
52
 
50
- def example_passed(notification)
53
+ def example_passed(_notification)
51
54
  self.passed_count += 1
52
55
 
53
56
  increment
54
57
  end
55
58
 
56
- def example_pending(notification)
59
+ def example_pending(_notification)
57
60
  self.pending_count += 1
58
61
 
59
62
  increment
@@ -78,13 +81,17 @@ class Fuubar < RSpec::Core::Formatters::BaseTextFormatter
78
81
  end
79
82
  end
80
83
 
81
- def dump_failures(notification)
84
+ def dump_failures(_notification)
82
85
  #
83
86
  # We output each failure as it happens so we don't need to output them en
84
87
  # masse at the end of the run.
85
88
  #
86
89
  end
87
90
 
91
+ def output
92
+ @fuubar_output ||= Fuubar::Output.new(super, configuration.tty?)
93
+ end
94
+
88
95
  private
89
96
 
90
97
  def increment
@@ -111,15 +118,18 @@ class Fuubar < RSpec::Core::Formatters::BaseTextFormatter
111
118
  end
112
119
  end
113
120
 
121
+ # :reek:UtilityFunction disable
114
122
  def color_code_for(*args)
115
123
  RSpec::Core::Formatters::ConsoleCodes.console_code_for(*args)
116
124
  end
117
125
 
126
+ # :reek:UtilityFunction disable
118
127
  def configuration
119
128
  RSpec.configuration
120
129
  end
121
130
 
122
131
  def continuous_integration?
123
- @continuous_integration ||= !(ENV['CONTINUOUS_INTEGRATION'].nil? || ENV['CONTINUOUS_INTEGRATION'] == '' || ENV['CONTINUOUS_INTEGRATION'] == 'false')
132
+ @continuous_integration ||= \
133
+ ![nil, '', 'false'].include?(ENV['CONTINUOUS_INTEGRATION'])
124
134
  end
125
135
  end
@@ -0,0 +1,17 @@
1
+ class Fuubar < RSpec::Core::Formatters::BaseTextFormatter
2
+ class Output < Delegator
3
+ # :reek:BooleanParameter disable
4
+ def initialize(output, force_tty = false)
5
+ @raw_output = output
6
+ @force_tty = force_tty
7
+ end
8
+
9
+ def __getobj__
10
+ @raw_output
11
+ end
12
+
13
+ def tty?
14
+ @force_tty || @raw_output.tty?
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,35 @@
1
+ require 'fuubar'
2
+
3
+ class TestNonTtyOutputClass
4
+ def tty?
5
+ false
6
+ end
7
+ end
8
+
9
+ class TestTtyOutputClass
10
+ def hello
11
+ 'hello'
12
+ end
13
+
14
+ def tty?
15
+ true
16
+ end
17
+ end
18
+
19
+ class Fuubar < RSpec::Core::Formatters::BaseTextFormatter
20
+ describe Output do
21
+ it 'delegates anything to the passed in object' do
22
+ output = Output.new(TestTtyOutputClass.new)
23
+
24
+ expect(output.hello).to eql 'hello'
25
+ expect(output).to be_tty
26
+ expect(output.to_s).to match 'TestTtyOutputClass'
27
+ end
28
+
29
+ it 'can override the TTY of the passed in class' do
30
+ output = Output.new(TestNonTtyOutputClass.new, true)
31
+
32
+ expect(output).to be_tty
33
+ end
34
+ end
35
+ end
@@ -2,6 +2,7 @@ require 'fuubar'
2
2
  require 'stringio'
3
3
  require 'ostruct'
4
4
 
5
+ # rubocop:disable Metrics/LineLength
5
6
  describe Fuubar do
6
7
  let(:output) do
7
8
  io = StringIO.new
@@ -24,8 +25,8 @@ describe Fuubar do
24
25
  let(:failed_example) do
25
26
  exception = RuntimeError.new('Test Fuubar Error')
26
27
  exception.set_backtrace [
27
- "/my/filename.rb:4:in `some_method'",
28
- ]
28
+ "/my/filename.rb:4:in `some_method'",
29
+ ]
29
30
 
30
31
  example = RSpec::Core::ExampleGroup.describe.example
31
32
 
@@ -78,13 +79,13 @@ describe Fuubar do
78
79
  end
79
80
 
80
81
  it 'sets the bar\'s output' do
81
- expect(formatter.progress.send(:output)).to eql formatter.output
82
+ expect(formatter.progress.send(:output)).to be_a Fuubar::Output
82
83
  expect(formatter.progress.send(:output)).to eql output
83
84
  end
84
85
 
85
86
  context 'and continuous integration is enabled' do
86
87
  before do
87
- RSpec.configuration.fuubar_progress_bar_options = {:length => 40}
88
+ RSpec.configuration.fuubar_progress_bar_options = { :length => 40 }
88
89
  ENV['CONTINUOUS_INTEGRATION'] = 'true'
89
90
  end
90
91
 
@@ -99,8 +100,8 @@ describe Fuubar do
99
100
  before do
100
101
  formatter.start(start_notification)
101
102
 
102
- throttle = formatter.progress.instance_variable_get(:@throttle)
103
- throttle_rate = throttle.instance_variable_set(:@period, 0.0)
103
+ throttle = formatter.progress.instance_variable_get(:@throttle)
104
+ _throttle_rate = throttle.instance_variable_set(:@period, 0.0)
104
105
 
105
106
  output.rewind
106
107
 
@@ -115,7 +116,7 @@ describe Fuubar do
115
116
 
116
117
  context 'and continuous integration is not enabled' do
117
118
  before do
118
- RSpec.configuration.fuubar_progress_bar_options = {:length => 40}
119
+ RSpec.configuration.fuubar_progress_bar_options = { :length => 40 }
119
120
  ENV['CONTINUOUS_INTEGRATION'] = 'false'
120
121
  end
121
122
 
@@ -130,8 +131,8 @@ describe Fuubar do
130
131
  before do
131
132
  formatter.start(start_notification)
132
133
 
133
- throttle = formatter.progress.instance_variable_get(:@throttle)
134
- throttle_rate = throttle.instance_variable_set(:@period, 0.0)
134
+ throttle = formatter.progress.instance_variable_get(:@throttle)
135
+ _throttle_rate = throttle.instance_variable_set(:@period, 0.0)
135
136
 
136
137
  output.rewind
137
138
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fuubar
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicholas Evans
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-08-07 00:00:00.000000000 Z
13
+ date: 2016-04-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
@@ -19,6 +19,9 @@ dependencies:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
21
  version: '3.0'
22
+ - - "<="
23
+ - !ruby/object:Gem::Version
24
+ version: 3.5.0.beta9
22
25
  type: :runtime
23
26
  prerelease: false
24
27
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,6 +29,9 @@ dependencies:
26
29
  - - "~>"
27
30
  - !ruby/object:Gem::Version
28
31
  version: '3.0'
32
+ - - "<="
33
+ - !ruby/object:Gem::Version
34
+ version: 3.5.0.beta9
29
35
  - !ruby/object:Gem::Dependency
30
36
  name: ruby-progressbar
31
37
  requirement: !ruby/object:Gem::Requirement
@@ -41,26 +47,24 @@ dependencies:
41
47
  - !ruby/object:Gem::Version
42
48
  version: '1.4'
43
49
  description: the instafailing RSpec progress bar formatter
44
- email:
45
- - jeff@kreeftmeijer.nl
50
+ email: '["jeff@kreeftmeijer.nl"]'
46
51
  executables: []
47
52
  extensions: []
48
- extra_rdoc_files:
49
- - README.md
50
- - LICENSE
53
+ extra_rdoc_files: []
51
54
  files:
52
- - LICENSE
55
+ - LICENSE.txt
53
56
  - README.md
57
+ - Rakefile
54
58
  - lib/fuubar.rb
59
+ - lib/fuubar/output.rb
60
+ - spec/fuubar/output_spec.rb
55
61
  - spec/fuubar_spec.rb
56
62
  homepage: https://github.com/jeffkreeftmeijer/fuubar
57
63
  licenses:
58
64
  - MIT
59
65
  metadata: {}
60
66
  post_install_message:
61
- rdoc_options:
62
- - "--charset"
63
- - UTF-8
67
+ rdoc_options: []
64
68
  require_paths:
65
69
  - lib
66
70
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -70,14 +74,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
70
74
  version: '0'
71
75
  required_rubygems_version: !ruby/object:Gem::Requirement
72
76
  requirements:
73
- - - ">="
77
+ - - ">"
74
78
  - !ruby/object:Gem::Version
75
- version: '0'
79
+ version: 1.3.1
76
80
  requirements: []
77
81
  rubyforge_project:
78
- rubygems_version: 2.2.2
82
+ rubygems_version: 2.4.5.1
79
83
  signing_key:
80
84
  specification_version: 4
81
85
  summary: the instafailing RSpec progress bar formatter
82
86
  test_files:
87
+ - spec/fuubar/output_spec.rb
83
88
  - spec/fuubar_spec.rb
89
+ has_rdoc:
data/LICENSE DELETED
@@ -1,23 +0,0 @@
1
- (The MIT License)
2
-
3
- Copyright (c) 2010 Jeff Kreeftmeijer.
4
- Copyright (c) 2013 The Kompanee - Jeff Felchner
5
-
6
- Permission is hereby granted, free of charge, to any person obtaining
7
- a copy of this software and associated documentation files (the
8
- "Software"), to deal in the Software without restriction, including
9
- without limitation the rights to use, copy, modify, merge, publish,
10
- distribute, sublicense, and/or sell copies of the Software, and to
11
- permit persons to whom the Software is furnished to do so, subject to
12
- the following conditions:
13
-
14
- The above copyright notice and this permission notice shall be
15
- included in all copies or substantial portions of the Software.
16
-
17
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.