Class: SpinnerFormatter
- Inherits:
-
DottedFormatter
- Object
- DottedFormatter
- SpinnerFormatter
- Defined in:
- lib/extensions/mspec/mspec/runner/formatters/spinner.rb
Constant Summary collapse
- Spins =
%w!| / - \\!
- HOUR =
3600
- MIN =
60
Instance Attribute Summary collapse
-
#length ⇒ Object
Returns the value of attribute length.
Attributes inherited from DottedFormatter
Instance Method Summary collapse
-
#after(state) ⇒ Object
Callback for the MSpec :after event.
- #etr ⇒ Object
-
#exception(exception) ⇒ Object
Callback for the MSpec :exception event.
-
#initialize(out = nil) ⇒ SpinnerFormatter
constructor
A new instance of SpinnerFormatter.
-
#load ⇒ Object
Callback for the MSpec :load event.
- #percentage ⇒ Object
- #register ⇒ Object
- #spin ⇒ Object
-
#start ⇒ Object
Callback for the MSpec :start event.
Methods inherited from DottedFormatter
#abort, #before, #exception?, #failure?, #finish, #print
Constructor Details
#initialize(out = nil) ⇒ SpinnerFormatter
Returns a new instance of SpinnerFormatter.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/extensions/mspec/mspec/runner/formatters/spinner.rb', line 11 def initialize(out=nil) @exception = @failure = false @exceptions = [] @count = 0 @out = $stdout @which = 0 @loaded = 0 self.length = 40 @percent = 0 @start = Time.now term = ENV['TERM'] @color = (term != "dumb") @fail_color = "32" @error_color = "32" end |
Instance Attribute Details
#length ⇒ Object
Returns the value of attribute length.
5 6 7 |
# File 'lib/extensions/mspec/mspec/runner/formatters/spinner.rb', line 5 def length @length end |
Instance Method Details
#after(state) ⇒ Object
Callback for the MSpec :after event. Updates the spinner and progress bar.
96 97 98 |
# File 'lib/extensions/mspec/mspec/runner/formatters/spinner.rb', line 96 def after(state) spin end |
#etr ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/extensions/mspec/mspec/runner/formatters/spinner.rb', line 42 def etr return "00:00:00" if @percent == 0 elapsed = Time.now - @start remain = (100 * elapsed / @percent) - elapsed hour = remain >= HOUR ? (remain / HOUR).to_i : 0 remain -= hour * HOUR min = remain >= MIN ? (remain / MIN).to_i : 0 sec = remain - min * MIN "%02d:%02d:%02d" % [hour, min, sec] end |
#exception(exception) ⇒ Object
Callback for the MSpec :exception event. Changes the color used to display the tally of errors and failures
88 89 90 91 92 |
# File 'lib/extensions/mspec/mspec/runner/formatters/spinner.rb', line 88 def exception(exception) super @fail_color = "31" if exception.failure? @error_color = "33" unless exception.failure? end |
#load ⇒ Object
Callback for the MSpec :load event. Increments the number of files that have been loaded.
82 83 84 |
# File 'lib/extensions/mspec/mspec/runner/formatters/spinner.rb', line 82 def load @loaded += 1 end |
#percentage ⇒ Object
55 56 57 58 59 60 61 |
# File 'lib/extensions/mspec/mspec/runner/formatters/spinner.rb', line 55 def percentage @percent = @loaded * 100 / @total = ("=" * (@percent / @ratio)).ljust @length label = "%d%%" % @percent [@position, label.size] = label end |
#register ⇒ Object
29 30 31 32 33 34 |
# File 'lib/extensions/mspec/mspec/runner/formatters/spinner.rb', line 29 def register super MSpec.register :start, self MSpec.register :load, self end |
#spin ⇒ Object
63 64 65 66 67 68 69 70 71 72 |
# File 'lib/extensions/mspec/mspec/runner/formatters/spinner.rb', line 63 def spin @which = (@which + 1) % Spins.size if @color print "\r[%s | %s | %s] \033[0;#{@fail_color}m%6dF \033[0;#{@error_color}m%6dE\033[0m" % [Spins[@which], percentage, etr, @counter.failures, @counter.errors] else print "\r[%s | %s | %s] %6dF %6dE" % [Spins[@which], percentage, etr, @counter.failures, @counter.errors] end end |