diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-11-05 16:14:03 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-11-05 17:42:35 +0900 |
commit | fa52a924aa418e363b191179b2ad3eba2506d559 (patch) | |
tree | 49a4e1fee1025cc1558b0202412d7fae4f4b2e1f /spec | |
parent | 19f91f788016ef98e30ead047e53edeb7a5f2566 (diff) | |
download | ruby-fa52a924aa418e363b191179b2ad3eba2506d559.tar.gz |
Enable "-f" option in multi_exec mode
Make `MultiFormatter` a module and extend the formatter specified
by "-f" option.
Diffstat (limited to 'spec')
-rwxr-xr-x | spec/mspec/lib/mspec/commands/mspec.rb | 3 | ||||
-rw-r--r-- | spec/mspec/lib/mspec/runner/formatters/dotted.rb | 10 | ||||
-rw-r--r-- | spec/mspec/lib/mspec/runner/formatters/multi.rb | 18 | ||||
-rw-r--r-- | spec/mspec/lib/mspec/utils/script.rb | 15 |
4 files changed, 34 insertions, 12 deletions
diff --git a/spec/mspec/lib/mspec/commands/mspec.rb b/spec/mspec/lib/mspec/commands/mspec.rb index 0ccea82a5c..f6caf93978 100755 --- a/spec/mspec/lib/mspec/commands/mspec.rb +++ b/spec/mspec/lib/mspec/commands/mspec.rb @@ -90,8 +90,7 @@ class MSpecMain < MSpecScript def multi_exec(argv) require 'mspec/runner/formatters/multi' - formatter = MultiFormatter.new - warn "formatter options is ignored due to multi option" if config[:formatter] + formatter = config_formatter.extend(MultiFormatter) require 'mspec/runner/parallel' processes = cores(@files.size) diff --git a/spec/mspec/lib/mspec/runner/formatters/dotted.rb b/spec/mspec/lib/mspec/runner/formatters/dotted.rb index 32b96f63ae..7e30a22e8d 100644 --- a/spec/mspec/lib/mspec/runner/formatters/dotted.rb +++ b/spec/mspec/lib/mspec/runner/formatters/dotted.rb @@ -97,6 +97,16 @@ class DottedFormatter end end + # Callback for the MSpec :start event. Calls :after event. + def start + after + end + + # Callback for the MSpec :unload event. Calls :after event. + def unload + after + end + # Callback for the MSpec :finish event. Prints a description # and backtrace for every exception that occurred while # evaluating the examples. diff --git a/spec/mspec/lib/mspec/runner/formatters/multi.rb b/spec/mspec/lib/mspec/runner/formatters/multi.rb index 085f961be8..d0a82fe682 100644 --- a/spec/mspec/lib/mspec/runner/formatters/multi.rb +++ b/spec/mspec/lib/mspec/runner/formatters/multi.rb @@ -1,13 +1,23 @@ -require 'mspec/runner/formatters/spinner' +module MultiFormatter + def self.extend_object(obj) + super + obj.multi_initialize + end -class MultiFormatter < SpinnerFormatter - def initialize(out=nil) - super(out) + def multi_initialize @counter = @tally = Tally.new @timer = TimerAction.new @timer.start end + def register + super + + MSpec.register :start, self + MSpec.register :unload, self + MSpec.unregister :before, self + end + def aggregate_results(files) require 'yaml' diff --git a/spec/mspec/lib/mspec/utils/script.rb b/spec/mspec/lib/mspec/utils/script.rb index 132a6ab42c..9bffa924bc 100644 --- a/spec/mspec/lib/mspec/utils/script.rb +++ b/spec/mspec/lib/mspec/utils/script.rb @@ -125,12 +125,7 @@ class MSpecScript require 'mspec/runner/formatters/file' require 'mspec/runner/filters' - if config[:formatter].nil? - config[:formatter] = STDOUT.tty? ? SpinnerFormatter : @files.size < 50 ? DottedFormatter : FileFormatter - end - - if config[:formatter] - formatter = config[:formatter].new(config[:output]) + if formatter = config_formatter formatter.register MSpec.store :formatter, formatter end @@ -149,6 +144,14 @@ class MSpecScript custom_register end + # Makes a formatter specified by :formatter option. + def config_formatter + if config[:formatter].nil? + config[:formatter] = STDOUT.tty? ? SpinnerFormatter : @files.size < 50 ? DottedFormatter : FileFormatter + end + config[:formatter].new(config[:output]) + end + # Callback for enabling custom actions, etc. This version is a # no-op. Provide an implementation specific version in a config # file. Called by #register. |