[前][次][番号順一覧][スレッド一覧]

ruby-changes:58581

From: Nobuyoshi <ko1@a...>
Date: Tue, 5 Nov 2019 17:42:53 +0900 (JST)
Subject: [ruby-changes:58581] fa52a924aa (master): Enable "-f" option in multi_exec mode

https://git.ruby-lang.org/ruby.git/commit/?id=fa52a924aa

From fa52a924aa418e363b191179b2ad3eba2506d559 Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Tue, 5 Nov 2019 16:14:03 +0900
Subject: Enable "-f" option in multi_exec mode

Make `MultiFormatter` a module and extend the formatter specified
by "-f" option.

diff --git a/spec/mspec/lib/mspec/commands/mspec.rb b/spec/mspec/lib/mspec/commands/mspec.rb
index 0ccea82..f6caf93 100755
--- a/spec/mspec/lib/mspec/commands/mspec.rb
+++ b/spec/mspec/lib/mspec/commands/mspec.rb
@@ -90,8 +90,7 @@ class MSpecMain < MSpecScript https://github.com/ruby/ruby/blob/trunk/spec/mspec/lib/mspec/commands/mspec.rb#L90
 
   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 32b96f6..7e30a22 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 https://github.com/ruby/ruby/blob/trunk/spec/mspec/lib/mspec/runner/formatters/dotted.rb#L97
     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 085f961..d0a82fe 100644
--- a/spec/mspec/lib/mspec/runner/formatters/multi.rb
+++ b/spec/mspec/lib/mspec/runner/formatters/multi.rb
@@ -1,13 +1,23 @@ https://github.com/ruby/ruby/blob/trunk/spec/mspec/lib/mspec/runner/formatters/multi.rb#L1
-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 132a6ab..9bffa92 100644
--- a/spec/mspec/lib/mspec/utils/script.rb
+++ b/spec/mspec/lib/mspec/utils/script.rb
@@ -125,12 +125,7 @@ class MSpecScript https://github.com/ruby/ruby/blob/trunk/spec/mspec/lib/mspec/utils/script.rb#L125
     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 https://github.com/ruby/ruby/blob/trunk/spec/mspec/lib/mspec/utils/script.rb#L144
     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.
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]