Class: RSpec::ProgressTable::Server
- Inherits:
-
Object
- Object
- RSpec::ProgressTable::Server
- Defined in:
- lib/rspec/progress_table/server.rb
Defined Under Namespace
Classes: Progress
Instance Attribute Summary collapse
-
#number_of_queue_shifted ⇒ Object
readonly
Returns the value of attribute number_of_queue_shifted.
-
#output ⇒ Object
readonly
Returns the value of attribute output.
-
#previous_rendered_lines ⇒ Object
Returns the value of attribute previous_rendered_lines.
-
#progresses ⇒ Object
readonly
Returns the value of attribute progresses.
-
#queue_size ⇒ Object
readonly
Returns the value of attribute queue_size.
-
#show_total ⇒ Object
readonly
Returns the value of attribute show_total.
Class Method Summary collapse
Instance Method Summary collapse
- #dump(s) ⇒ Object
- #failed(pid) ⇒ Object
-
#initialize(output = $stdout) ⇒ Server
constructor
A new instance of Server.
- #passed(pid) ⇒ Object
- #pending(pid) ⇒ Object
- #queue_shifted ⇒ Object
- #render ⇒ Object
- #update_queue_size(n) ⇒ Object
- #update_total(pid, n) ⇒ Object
Constructor Details
#initialize(output = $stdout) ⇒ Server
Returns a new instance of Server.
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/rspec/progress_table/server.rb', line 16 def initialize(output = $stdout) @progresses = Concurrent::Map.new {|m, pid| m[pid] = Progress.new(pid, 0, 0, 0, 0) } @previous_rendered_lines = 0 @output = output @queue_size = 0 @number_of_queue_shifted = 0 @show_total = false end |
Instance Attribute Details
#number_of_queue_shifted ⇒ Object (readonly)
Returns the value of attribute number_of_queue_shifted.
9 10 11 |
# File 'lib/rspec/progress_table/server.rb', line 9 def number_of_queue_shifted @number_of_queue_shifted end |
#output ⇒ Object (readonly)
Returns the value of attribute output.
9 10 11 |
# File 'lib/rspec/progress_table/server.rb', line 9 def output @output end |
#previous_rendered_lines ⇒ Object
Returns the value of attribute previous_rendered_lines.
10 11 12 |
# File 'lib/rspec/progress_table/server.rb', line 10 def previous_rendered_lines @previous_rendered_lines end |
#progresses ⇒ Object (readonly)
Returns the value of attribute progresses.
9 10 11 |
# File 'lib/rspec/progress_table/server.rb', line 9 def progresses @progresses end |
#queue_size ⇒ Object (readonly)
Returns the value of attribute queue_size.
9 10 11 |
# File 'lib/rspec/progress_table/server.rb', line 9 def queue_size @queue_size end |
#show_total ⇒ Object (readonly)
Returns the value of attribute show_total.
9 10 11 |
# File 'lib/rspec/progress_table/server.rb', line 9 def show_total @show_total end |
Class Method Details
.start(url = DEFAULT_SERVER_URL) ⇒ Object
12 13 14 |
# File 'lib/rspec/progress_table/server.rb', line 12 def self.start(url = DEFAULT_SERVER_URL) DRb.start_service(url, new) end |
Instance Method Details
#dump(s) ⇒ Object
47 48 49 50 |
# File 'lib/rspec/progress_table/server.rb', line 47 def dump(s) puts s self.previous_rendered_lines = 0 end |
#failed(pid) ⇒ Object
32 33 34 35 |
# File 'lib/rspec/progress_table/server.rb', line 32 def failed(pid) progresses[pid].failed += 1 render end |
#passed(pid) ⇒ Object
27 28 29 30 |
# File 'lib/rspec/progress_table/server.rb', line 27 def passed(pid) progresses[pid].passed += 1 render end |
#pending(pid) ⇒ Object
37 38 39 40 |
# File 'lib/rspec/progress_table/server.rb', line 37 def pending(pid) progresses[pid].pending += 1 render end |
#queue_shifted ⇒ Object
56 57 58 |
# File 'lib/rspec/progress_table/server.rb', line 56 def queue_shifted @number_of_queue_shifted += 1 end |
#render ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/rspec/progress_table/server.rb', line 60 def render table = TTY::Table.new(header: %w(PID Passed Failed Pending) + (show_total ? ["Total"] : [])) progresses.each_value do |progress| table << ( [ progress.pid, RSpec::Core::Formatters::ConsoleCodes.wrap(progress.passed, :success), RSpec::Core::Formatters::ConsoleCodes.wrap(progress.failed, :failure), RSpec::Core::Formatters::ConsoleCodes.wrap(progress.pending, :pending), ] + (show_total ? [progress.total] : []) ) end s = table.render(:unicode, padding: [0, 1, 0, 1], alignments: [:left, :right, :right, :right, :right]) line_count = s.lines.count output.write("\e[1A" * previous_rendered_lines) if previous_rendered_lines > 0 output.puts(s) unless queue_size.zero? r = format("%.2f", number_of_queue_shifted / queue_size.to_f * 100) puts "Queue: #{number_of_queue_shifted} / #{queue_size} (#{r}%)" line_count += 1 end self.previous_rendered_lines = line_count end |
#update_queue_size(n) ⇒ Object
52 53 54 |
# File 'lib/rspec/progress_table/server.rb', line 52 def update_queue_size(n) @queue_size = n end |
#update_total(pid, n) ⇒ Object
42 43 44 45 |
# File 'lib/rspec/progress_table/server.rb', line 42 def update_total(pid, n) progresses[pid].total = n @show_total = true if n > 0 end |