class RSpecLive::Suite
Public Class Methods
new(runner, file_watcher)
click to toggle source
# File lib/rspec-live/suite.rb, line 5 def initialize(runner, file_watcher) @runner = runner @file_watcher = file_watcher @examples = {} end
Public Instance Methods
activity_status()
click to toggle source
# File lib/rspec-live/suite.rb, line 38 def activity_status run_count = stale_example_names.count run_count.zero? ? "watching for updates..." : "running #{example_count run_count}" end
example_count(number)
click to toggle source
# File lib/rspec-live/suite.rb, line 50 def example_count(number) "#{number} example" + (number == 1 ? "" : "s") end
ordered_example_names()
click to toggle source
# File lib/rspec-live/suite.rb, line 62 def ordered_example_names example_names.sort_by do |name| file, line = name.split(":") line = line.rjust(8, "0") [file, line].join(":") end end
ordered_examples()
click to toggle source
# File lib/rspec-live/suite.rb, line 54 def ordered_examples ordered_example_names.map { |name| @examples[name] } end
process_updates()
click to toggle source
# File lib/rspec-live/suite.rb, line 11 def process_updates any_processed = need_inventory = false @file_watcher.updated.each do |path| @examples.values.each { |example| example.file_touched path } @examples.delete_if { |name, example| example.in_file? path } any_processed = need_inventory = true end @file_watcher.removed.each do |path| @examples.delete_if { |name, example| example.in_file? path } any_processed = true end if @examples.empty? || @file_watcher.added.any? any_processed = need_inventory = true end @runner.request_inventory(need_inventory) @runner.request_results stale_example_names @runner.results.each do |result| update_or_create_example result any_processed = true end any_processed end
reset()
click to toggle source
# File lib/rspec-live/suite.rb, line 58 def reset @examples = {} end
stale_example_names()
click to toggle source
# File lib/rspec-live/suite.rb, line 34 def stale_example_names @examples.values.select(&:stale?).map(&:name) end
summary()
click to toggle source
# File lib/rspec-live/suite.rb, line 43 def summary passed = ordered_examples.select(&:passed?).length total = ordered_examples.length percent = total.zero? ? 0 : (100*passed/total.to_f).round "#{passed} of #{example_count total} passed (#{percent}%)" end
Private Instance Methods
example_names()
click to toggle source
# File lib/rspec-live/suite.rb, line 79 def example_names @examples.keys end
update_or_create_example(data)
click to toggle source
# File lib/rspec-live/suite.rb, line 72 def update_or_create_example(data) name = data["name"] @examples[name] ||= Example.new @examples[name].update data @examples[name] end