Hello community,

here is the log from the commit of package rubygem-rspec-support for 
openSUSE:Factory checked in at 2015-06-15 17:45:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-rspec-support (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-rspec-support.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-rspec-support"

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/rubygem-rspec-support/rubygem-rspec-support.changes  
    2015-03-01 14:57:46.000000000 +0100
+++ 
/work/SRC/openSUSE:Factory/.rubygem-rspec-support.new/rubygem-rspec-support.changes
 2015-06-15 17:45:36.000000000 +0200
@@ -1,0 +2,25 @@
+Sat Jun 13 04:35:37 UTC 2015 - co...@suse.com
+
+- updated to version 3.3.0
+ see installed Changelog.md
+
+  ### 3.3.0 / 2015-06-12
+  [Full 
Changelog](http://github.com/rspec/rspec-support/compare/v3.2.2...v3.3.0)
+  
+  Enhancements:
+  
+  * Improve formatting of arrays and hashes in failure messages so they
+    use our custom formatting of matchers, time objects, etc.
+    (Myron Marston, Nicholas Chmielewski, #205)
+  * Use improved formatting for diffs as well. (Nicholas Chmielewski, #205)
+  
+  Bug Fixes:
+  
+  * Fix `FuzzyMatcher` so that it checks `expected == actual` rather than
+    `actual == expected`, which avoids errors in situations where the
+    `actual` object's `==` is improperly implemented to assume that only
+    objects of the same type will be given. This allows rspec-mocks'
+    `anything` to match against objects with buggy `==` definitions.
+    (Myron Marston, #193)
+
+-------------------------------------------------------------------

Old:
----
  rspec-support-3.2.2.gem

New:
----
  rspec-support-3.3.0.gem

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rubygem-rspec-support.spec ++++++
--- /var/tmp/diff_new_pack.DnFWDS/_old  2015-06-15 17:45:37.000000000 +0200
+++ /var/tmp/diff_new_pack.DnFWDS/_new  2015-06-15 17:45:37.000000000 +0200
@@ -24,7 +24,7 @@
 #
 
 Name:           rubygem-rspec-support
-Version:        3.2.2
+Version:        3.3.0
 Release:        0
 %define mod_name rspec-support
 %define mod_full_name %{mod_name}-%{version}

++++++ rspec-support-3.2.2.gem -> rspec-support-3.3.0.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Changelog.md new/Changelog.md
--- old/Changelog.md    2015-02-24 04:35:55.000000000 +0100
+++ new/Changelog.md    2015-06-12 17:05:41.000000000 +0200
@@ -1,4 +1,24 @@
+### 3.3.0 / 2015-06-12
+[Full Changelog](http://github.com/rspec/rspec-support/compare/v3.2.2...v3.3.0)
+
+Enhancements:
+
+* Improve formatting of arrays and hashes in failure messages so they
+  use our custom formatting of matchers, time objects, etc.
+  (Myron Marston, Nicholas Chmielewski, #205)
+* Use improved formatting for diffs as well. (Nicholas Chmielewski, #205)
+
+Bug Fixes:
+
+* Fix `FuzzyMatcher` so that it checks `expected == actual` rather than
+  `actual == expected`, which avoids errors in situations where the
+  `actual` object's `==` is improperly implemented to assume that only
+  objects of the same type will be given. This allows rspec-mocks'
+  `anything` to match against objects with buggy `==` definitions.
+  (Myron Marston, #193)
+
 ### 3.2.2 / 2015-02-23
+[Full Changelog](http://github.com/rspec/rspec-support/compare/v3.2.1...v3.2.2)
 
 Bug Fixes:
 
Files old/checksums.yaml.gz and new/checksums.yaml.gz differ
Files old/checksums.yaml.gz.sig and new/checksums.yaml.gz.sig differ
Files old/data.tar.gz.sig and new/data.tar.gz.sig differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/support/differ.rb 
new/lib/rspec/support/differ.rb
--- old/lib/rspec/support/differ.rb     2015-02-24 04:35:55.000000000 +0100
+++ new/lib/rspec/support/differ.rb     2015-06-12 17:05:41.000000000 +0200
@@ -1,5 +1,6 @@
 RSpec::Support.require_rspec_support 'encoded_string'
 RSpec::Support.require_rspec_support 'hunk_generator'
+RSpec::Support.require_rspec_support "object_formatter"
 
 require 'pp'
 
@@ -25,7 +26,7 @@
 
       # rubocop:disable MethodLength
       def diff_as_string(actual, expected)
-        encoding = pick_encoding(actual, expected)
+        encoding = EncodedString.pick_encoding(actual, expected)
 
         actual   = EncodedString.new(actual, encoding)
         expected = EncodedString.new(expected, encoding)
@@ -59,8 +60,9 @@
         diff_as_string(actual_as_string, expected_as_string)
       end
 
-      attr_reader :color
-      alias_method :color?, :color
+      def color?
+        @color
+      end
 
       def initialize(opts={})
         @color = opts.fetch(:color, false)
@@ -177,12 +179,9 @@
         object = @object_preparer.call(object)
         case object
         when Hash
-          object.keys.sort_by { |k| k.to_s }.map do |key|
-            pp_key   = PP.singleline_pp(key, "")
-            pp_value = PP.singleline_pp(object[key], "")
-
-            "#{pp_key} => #{pp_value},"
-          end.join("\n")
+          hash_to_string(object)
+        when Array
+          PP.pp(ObjectFormatter.prepare_for_inspection(object), "")
         when String
           object =~ /\n/ ? object : object.inspect
         else
@@ -190,13 +189,14 @@
         end
       end
 
-      if String.method_defined?(:encoding)
-        def pick_encoding(source_a, source_b)
-          Encoding.compatible?(source_a, source_b) || Encoding.default_external
-        end
-      else
-        def pick_encoding(_source_a, _source_b)
-        end
+      def hash_to_string(hash)
+        formatted_hash = ObjectFormatter.prepare_for_inspection(hash)
+        formatted_hash.keys.sort_by { |k| k.to_s }.map do |key|
+          pp_key   = PP.singleline_pp(key, "")
+          pp_value = PP.singleline_pp(formatted_hash[key], "")
+
+          "#{pp_key} => #{pp_value},"
+        end.join("\n")
       end
 
       def handle_encoding_errors(actual, expected)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/support/directory_maker.rb 
new/lib/rspec/support/directory_maker.rb
--- old/lib/rspec/support/directory_maker.rb    2015-02-24 04:35:55.000000000 
+0100
+++ new/lib/rspec/support/directory_maker.rb    2015-06-12 17:05:41.000000000 
+0200
@@ -16,6 +16,8 @@
           stack = generate_path(stack, part)
           begin
             Dir.mkdir(stack) unless directory_exists?(stack)
+          rescue Errno::EEXIST => e
+            raise e unless directory_exists?(stack)
           rescue Errno::ENOTDIR => e
             raise Errno::EEXIST, e.message
           end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/support/encoded_string.rb 
new/lib/rspec/support/encoded_string.rb
--- old/lib/rspec/support/encoded_string.rb     2015-02-24 04:35:55.000000000 
+0100
+++ new/lib/rspec/support/encoded_string.rb     2015-06-12 17:05:41.000000000 
+0200
@@ -131,8 +131,15 @@
         def detect_source_encoding(string)
           string.encoding
         end
+
+        def self.pick_encoding(source_a, source_b)
+          Encoding.compatible?(source_a, source_b) || Encoding.default_external
+        end
       else
 
+        def self.pick_encoding(_source_a, _source_b)
+        end
+
         private
 
         def matching_encoding(string)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/support/fuzzy_matcher.rb 
new/lib/rspec/support/fuzzy_matcher.rb
--- old/lib/rspec/support/fuzzy_matcher.rb      2015-02-24 04:35:55.000000000 
+0100
+++ new/lib/rspec/support/fuzzy_matcher.rb      2015-06-12 17:05:41.000000000 
+0200
@@ -12,7 +12,7 @@
           return arrays_match?(expected, actual.to_a)
         end
 
-        return true if actual == expected
+        return true if expected == actual
 
         begin
           expected === actual
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/support/object_formatter.rb 
new/lib/rspec/support/object_formatter.rb
--- old/lib/rspec/support/object_formatter.rb   1970-01-01 01:00:00.000000000 
+0100
+++ new/lib/rspec/support/object_formatter.rb   2015-06-12 17:05:41.000000000 
+0200
@@ -0,0 +1,93 @@
+module RSpec
+  module Support
+    # Provide additional output details beyond what `inspect` provides when
+    # printing Time, DateTime, or BigDecimal
+    module ObjectFormatter
+      # @api private
+      def self.format(object)
+        prepare_for_inspection(object).inspect
+      end
+
+      # rubocop:disable MethodLength
+
+      # @private
+      # Prepares the provided object to be formatted by wrapping it as needed
+      # in something that, when `inspect` is called on it, will produce the
+      # desired output.
+      #
+      # This allows us to apply the desired formatting to hash/array data 
structures
+      # at any level of nesting, simply by walking that structure and 
replacing items
+      # with custom items that have `inspect` defined to return the desired 
output
+      # for that item. Then we can just use `Array#inspect` or `Hash#inspect` 
to
+      # format the entire thing.
+      def self.prepare_for_inspection(object)
+        case object
+        when Array
+          return object.map { |o| prepare_for_inspection(o) }
+        when Hash
+          return prepare_hash(object)
+        when Time
+          inspection = format_time(object)
+        else
+          if defined?(DateTime) && DateTime === object
+            inspection = format_date_time(object)
+          elsif defined?(BigDecimal) && BigDecimal === object
+            inspection = "#{object.to_s 'F'} (#{object.inspect})"
+          elsif RSpec::Support.is_a_matcher?(object) && 
object.respond_to?(:description)
+            inspection = object.description
+          else
+            return object
+          end
+        end
+
+        InspectableItem.new(inspection)
+      end
+      # rubocop:enable MethodLength
+
+      # @private
+      def self.prepare_hash(input)
+        input.inject({}) do |hash, (k, v)|
+          hash[prepare_for_inspection(k)] = prepare_for_inspection(v)
+          hash
+        end
+      end
+
+      TIME_FORMAT = "%Y-%m-%d %H:%M:%S"
+
+      if Time.method_defined?(:nsec)
+        # @private
+        def self.format_time(time)
+          time.strftime("#{TIME_FORMAT}.#{"%09d" % time.nsec} %z")
+        end
+      else # for 1.8.7
+        # @private
+        def self.format_time(time)
+          time.strftime("#{TIME_FORMAT}.#{"%06d" % time.usec} %z")
+        end
+      end
+
+      DATE_TIME_FORMAT = "%a, %d %b %Y %H:%M:%S.%N %z"
+      # ActiveSupport sometimes overrides inspect. If `ActiveSupport` is
+      # defined use a custom format string that includes more time precision.
+      # @private
+      def self.format_date_time(date_time)
+        if defined?(ActiveSupport)
+          date_time.strftime(DATE_TIME_FORMAT)
+        else
+          date_time.inspect
+        end
+      end
+
+      # @private
+      InspectableItem = Struct.new(:inspection) do
+        def inspect
+          inspection
+        end
+
+        def pretty_print(pp)
+          pp.text inspection
+        end
+      end
+    end
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/support/ruby_features.rb 
new/lib/rspec/support/ruby_features.rb
--- old/lib/rspec/support/ruby_features.rb      2015-02-24 04:35:55.000000000 
+0100
+++ new/lib/rspec/support/ruby_features.rb      2015-06-12 17:05:41.000000000 
+0200
@@ -1,3 +1,5 @@
+require 'rbconfig'
+
 module RSpec
   module Support
     # @api private
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/support/spec/deprecation_helpers.rb 
new/lib/rspec/support/spec/deprecation_helpers.rb
--- old/lib/rspec/support/spec/deprecation_helpers.rb   2015-02-24 
04:35:55.000000000 +0100
+++ new/lib/rspec/support/spec/deprecation_helpers.rb   2015-06-12 
17:05:41.000000000 +0200
@@ -54,6 +54,10 @@
     end
   end
 
+  def expect_no_warnings
+    expect(::Kernel).not_to receive(:warn)
+  end
+
   def allow_warning
     allow(::Kernel).to receive(:warn)
   end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/support/spec/in_sub_process.rb 
new/lib/rspec/support/spec/in_sub_process.rb
--- old/lib/rspec/support/spec/in_sub_process.rb        2015-02-24 
04:35:55.000000000 +0100
+++ new/lib/rspec/support/spec/in_sub_process.rb        2015-06-12 
17:05:41.000000000 +0200
@@ -15,7 +15,7 @@
 
             begin
               yield
-              warning_preventer.verify_example!(self) if prevent_warnings
+              warning_preventer.verify_no_warnings! if prevent_warnings
             rescue Exception => e
               exception = e
             end
@@ -35,13 +35,18 @@
 
           raise exception if exception
         end
+        # rubocop:enable MethodLength
+        alias :in_sub_process_if_possible :in_sub_process
       else
         def in_sub_process(*)
           skip "This spec requires forking to work properly, " \
                "and your platform does not support forking"
         end
+
+        def in_sub_process_if_possible(*)
+          yield
+        end
       end
-      # rubocop:enable MethodLength
     end
   end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/support/spec/library_wide_checks.rb 
new/lib/rspec/support/spec/library_wide_checks.rb
--- old/lib/rspec/support/spec/library_wide_checks.rb   1970-01-01 
01:00:00.000000000 +0100
+++ new/lib/rspec/support/spec/library_wide_checks.rb   2015-06-12 
17:05:41.000000000 +0200
@@ -0,0 +1,145 @@
+require 'rspec/support/spec/shell_out'
+
+RSpec.shared_examples_for "library wide checks" do |lib, options|
+  consider_a_test_env_file = options.fetch(:consider_a_test_env_file, /MATCHES 
NOTHING/)
+  allowed_loaded_feature_regexps = 
options.fetch(:allowed_loaded_feature_regexps, [])
+  preamble_for_lib = options[:preamble_for_lib]
+  preamble_for_spec = "require 'rspec/core'; require 'spec_helper'"
+  skip_spec_files = options.fetch(:skip_spec_files, /MATCHES NOTHING/)
+
+  include RSpec::Support::ShellOut
+
+  define_method :files_to_require_for do |sub_dir|
+    slash         = File::SEPARATOR
+    lib_path_re   = /#{slash + lib}[^#{slash}]*#{slash}lib/
+    load_path     = $LOAD_PATH.grep(lib_path_re).first
+    directory     = load_path.sub(/lib$/, sub_dir)
+    files         = Dir["#{directory}/**/*.rb"]
+    extract_regex = /#{Regexp.escape(directory) + File::SEPARATOR}(.+)\.rb$/
+
+    # We sort to ensure the files are loaded in a consistent order, regardless
+    # of OS. Otherwise, it could load in a different order on Travis than
+    # locally, and potentially trigger a "circular require considered harmful"
+    # warning or similar.
+    files.sort.map { |file| file[extract_regex, 1] }
+  end
+
+  def command_from(code_lines)
+    code_lines.join("\n")
+  end
+
+  def load_all_files(files, preamble, postamble=nil)
+    requires = files.map { |f| "require '#{f}'" }
+    command  = command_from(Array(preamble) + requires + Array(postamble))
+
+    stdout, stderr, status = with_env 'NO_COVERAGE' => '1' do
+      options = %w[ -w ]
+      options << "--disable=gem" if RUBY_VERSION.to_f >= 1.9 && 
RSpec::Support::Ruby.mri?
+      run_ruby_with_current_load_path(command, *options)
+    end
+
+    # Ignore bundler warning.
+    stderr = stderr.split("\n").reject { |l| l =~ %r{bundler/source/rubygems} 
}.join("\n")
+    [stdout, stderr, status.exitstatus]
+  end
+
+  define_method :load_all_lib_files do
+    files = all_lib_files - lib_test_env_files
+    preamble  = ['orig_loaded_features = $".dup', preamble_for_lib]
+    postamble = ['puts(($" - orig_loaded_features).join("\n"))']
+
+    @loaded_feature_lines, stderr, exitstatus = load_all_files(files, 
preamble, postamble)
+    ["", stderr, exitstatus]
+  end
+
+  define_method :load_all_spec_files do
+    files = files_to_require_for("spec") + lib_test_env_files
+    files = files.reject { |f| f =~ skip_spec_files }
+    load_all_files(files, preamble_for_spec)
+  end
+
+  attr_reader :all_lib_files, :lib_test_env_files,
+              :lib_file_results, :spec_file_results
+
+  before(:context) do
+    @all_lib_files           = files_to_require_for("lib")
+    @lib_test_env_files      = all_lib_files.grep(consider_a_test_env_file)
+
+    @lib_file_results, @spec_file_results = [
+      # Load them in parallel so it's faster...
+      Thread.new { load_all_lib_files  },
+      Thread.new { load_all_spec_files }
+    ].map(&:join).map(&:value)
+  end
+
+  def have_successful_no_warnings_output
+    eq ["", "", 0]
+  end
+
+  it "issues no warnings when loaded", :slow do
+    expect(lib_file_results).to have_successful_no_warnings_output
+  end
+
+  it "issues no warnings when the spec files are loaded", :slow do
+    expect(spec_file_results).to have_successful_no_warnings_output
+  end
+
+  it 'only loads a known set of stdlibs so gem authors are forced ' \
+     'to load libs they use to have passing specs', :slow do
+    loaded_features = @loaded_feature_lines.split("\n")
+    if RUBY_VERSION == '1.8.7'
+      # On 1.8.7, $" returns the relative require path if that was used
+      # to require the file. LIB_REGEX will not match the relative version
+      # since it has a `/lib` prefix. Here we deal with this by expanding
+      # relative files relative to the $LOAD_PATH dir (lib).
+      Dir.chdir("lib") { loaded_features.map! { |f| File.expand_path(f) } }
+    end
+
+    loaded_features.reject! { |feature| RSpec::CallerFilter::LIB_REGEX =~ 
feature }
+    loaded_features.reject! { |feature| allowed_loaded_feature_regexps.any? { 
|r| r =~ feature } }
+
+    expect(loaded_features).to eq([])
+  end
+
+  # This malformed whitespace detection logic has been borrowed from bundler:
+  # https://github.com/bundler/bundler/blob/v1.8.0/spec/quality_spec.rb
+  def check_for_tab_characters(filename)
+    failing_lines = []
+    File.readlines(filename).each_with_index do |line, number|
+      failing_lines << number + 1 if line =~ /\t/
+    end
+
+    return if failing_lines.empty?
+    "#{filename} has tab characters on lines #{failing_lines.join(', ')}"
+  end
+
+  def check_for_extra_spaces(filename)
+    failing_lines = []
+    File.readlines(filename).each_with_index do |line, number|
+      next if line =~ /^\s+#.*\s+\n$/
+      failing_lines << number + 1 if line =~ /\s+\n$/
+    end
+
+    return if failing_lines.empty?
+    "#{filename} has spaces on the EOL on lines #{failing_lines.join(', ')}"
+  end
+
+  RSpec::Matchers.define :be_well_formed do
+    match do |actual|
+      actual.empty?
+    end
+
+    failure_message do |actual|
+      actual.join("\n")
+    end
+  end
+
+  it "has no malformed whitespace", :slow do
+    error_messages = []
+    `git ls-files -z`.split("\x0").each do |filename|
+      error_messages << check_for_tab_characters(filename)
+      error_messages << check_for_extra_spaces(filename)
+    end
+    expect(error_messages.compact).to be_well_formed
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/support/spec/prevent_load_time_warnings.rb 
new/lib/rspec/support/spec/prevent_load_time_warnings.rb
--- old/lib/rspec/support/spec/prevent_load_time_warnings.rb    2015-02-24 
04:35:55.000000000 +0100
+++ new/lib/rspec/support/spec/prevent_load_time_warnings.rb    1970-01-01 
01:00:00.000000000 +0100
@@ -1,56 +0,0 @@
-require 'rspec/support/spec/shell_out'
-
-module RSpec
-  module Support
-    module WarningsPrevention
-      def files_to_require_for(lib, sub_dir)
-        slash         = File::SEPARATOR
-        lib_path_re   = /#{slash + lib}[^#{slash}]*#{slash}lib/
-        load_path     = $LOAD_PATH.grep(lib_path_re).first
-        directory     = load_path.sub(/lib$/, sub_dir)
-        files         = Dir["#{directory}/**/*.rb"]
-        extract_regex = /#{Regexp.escape(directory) + 
File::SEPARATOR}(.+)\.rb$/
-
-        # We sort to ensure the files are loaded in a consistent order, 
regardless
-        # of OS. Otherwise, it could load in a different order on Travis than
-        # locally, and potentially trigger a "circular require considered 
harmful"
-        # warning or similar.
-        files.sort.map { |file| file[extract_regex, 1] }
-      end
-    end
-  end
-end
-
-RSpec.shared_examples_for "a library that issues no warnings when loaded" do 
|lib, *preamble_stmnts|
-  include RSpec::Support::ShellOut
-  include RSpec::Support::WarningsPrevention
-
-  define_method :expect_no_warnings_from_files_in do |sub_dir, *pre_stmnts|
-    # We want to explicitly load every file because each lib has some files 
that
-    # aren't automatically loaded, instead being delayed based on an autoload
-    # (such as for rspec-expectations' matchers) or based on a config option
-    # (e.g. `config.mock_with :rr` => 'rspec/core/mocking_adapters/rr').
-    files_to_require = files_to_require_for(lib, sub_dir)
-    statements = pre_stmnts + files_to_require.map do |file|
-      "require '#{file}'"
-    end
-
-    command = statements.join("; ")
-
-    stdout, stderr, status = with_env 'NO_COVERAGE' => '1' do
-      run_ruby_with_current_load_path(command, "-w")
-    end
-
-    expect(stdout).to eq("")
-    expect(stderr).to eq("")
-    expect(status.exitstatus).to eq(0)
-  end
-
-  it "issues no warnings when loaded", :slow do
-    expect_no_warnings_from_files_in "lib", *preamble_stmnts
-  end
-
-  it "issues no warnings when the spec files are loaded", :slow do
-    expect_no_warnings_from_files_in "spec", "require 'rspec/core'; require 
'spec_helper'"
-  end
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/support/spec/shell_out.rb 
new/lib/rspec/support/spec/shell_out.rb
--- old/lib/rspec/support/spec/shell_out.rb     2015-02-24 04:35:55.000000000 
+0100
+++ new/lib/rspec/support/spec/shell_out.rb     2015-06-12 17:05:41.000000000 
+0200
@@ -22,6 +22,9 @@
           return stdout, filter(stderr), status
         end
       else # 1.8.7
+        # popen3 doesn't provide the exit status so we fake it out.
+        FakeProcessStatus = Struct.new(:exitstatus)
+
         def shell_out(*command)
           stdout = stderr = nil
 
@@ -30,8 +33,7 @@
             stderr = err.read
           end
 
-          # popen3 doesn't provide the exit status so we fake it out.
-          status = instance_double(Process::Status, :exitstatus => 0)
+          status = FakeProcessStatus.new(0)
           return stdout, filter(stderr), status
         end
       end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/support/spec/stderr_splitter.rb 
new/lib/rspec/support/spec/stderr_splitter.rb
--- old/lib/rspec/support/spec/stderr_splitter.rb       2015-02-24 
04:35:55.000000000 +0100
+++ new/lib/rspec/support/spec/stderr_splitter.rb       2015-06-12 
17:05:41.000000000 +0200
@@ -50,8 +50,8 @@
         @output_tracker = ::StringIO.new
       end
 
-      def verify_example!(example)
-        example.send(:fail, "Warnings were generated: #{output}") if 
has_output?
+      def verify_no_warnings!
+        raise "Warnings were generated: #{output}" if has_output?
         reset!
       end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/support/spec/string_matcher.rb 
new/lib/rspec/support/spec/string_matcher.rb
--- old/lib/rspec/support/spec/string_matcher.rb        1970-01-01 
01:00:00.000000000 +0100
+++ new/lib/rspec/support/spec/string_matcher.rb        2015-06-12 
17:05:41.000000000 +0200
@@ -0,0 +1,46 @@
+require 'rspec/matchers'
+# Special matcher for comparing encoded strings so that
+# we don't run any expectation failures through the Differ,
+# which also relies on EncodedString. Instead, confirm the
+# strings have the same bytes.
+RSpec::Matchers.define :be_identical_string do |expected|
+
+  if String.method_defined?(:encoding)
+    match do
+      expected_encoding? &&
+        actual.bytes.to_a == expected.bytes.to_a
+    end
+
+    failure_message do
+      "expected\n#{actual.inspect} (#{actual.encoding.name}) to be identical 
to\n"\
+        "#{expected.inspect} (#{expected.encoding.name})\n"\
+        "The exact bytes are printed below for more detail:\n"\
+        "#{actual.bytes.to_a}\n"\
+        "#{expected.bytes.to_a}\n"\
+    end
+
+    # Depends on chaining :with_same_encoding for it to
+    # check for string encoding.
+    def expected_encoding?
+      if defined?(@expect_same_encoding) && @expect_same_encoding
+        actual.encoding == expected.encoding
+      else
+        true
+      end
+    end
+  else
+    match do
+      actual.split(//) == expected.split(//)
+    end
+
+    failure_message do
+      "expected\n#{actual.inspect} to be identical to\n#{expected.inspect}\n"
+    end
+  end
+
+  chain :with_same_encoding do
+    @expect_same_encoding ||= true
+  end
+end
+RSpec::Matchers.alias_matcher :a_string_identical_to, :be_identical_string
+RSpec::Matchers.alias_matcher :be_diffed_as, :be_identical_string
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/support/spec.rb 
new/lib/rspec/support/spec.rb
--- old/lib/rspec/support/spec.rb       2015-02-24 04:35:55.000000000 +0100
+++ new/lib/rspec/support/spec.rb       2015-06-12 17:05:41.000000000 +0200
@@ -1,4 +1,6 @@
 require 'rspec/support'
+require 'rspec/support/spec/in_sub_process'
+
 RSpec::Support.require_rspec_support "spec/deprecation_helpers"
 RSpec::Support.require_rspec_support "spec/with_isolated_stderr"
 RSpec::Support.require_rspec_support "spec/stderr_splitter"
@@ -12,14 +14,15 @@
   c.include RSpecHelpers
   c.include RSpec::Support::WithIsolatedStdErr
   c.include RSpec::Support::FormattingSupport
+  c.include RSpec::Support::InSubProcess
 
   unless defined?(Debugger) # debugger causes warnings when used
     c.before do
       warning_preventer.reset!
     end
 
-    c.after do |example|
-      warning_preventer.verify_example!(example)
+    c.after do
+      warning_preventer.verify_no_warnings!
     end
   end
 
@@ -30,6 +33,7 @@
 
   c.filter_run :focus
   c.run_all_when_everything_filtered = true
+  c.example_status_persistence_file_path = "./spec/examples.txt"
 
   c.define_derived_metadata :failing_on_appveyor do |meta|
     meta[:pending] ||= "This spec fails on AppVeyor and needs someone to fix 
it."
@@ -43,7 +47,8 @@
         # Simplecov emits some ruby warnings when loaded, so silence them.
         old_verbose, $VERBOSE = $VERBOSE, false
 
-        return if ENV['NO_COVERAGE'] || RUBY_VERSION < '1.9.3' || RUBY_ENGINE 
!= 'ruby'
+        return if ENV['NO_COVERAGE'] || RUBY_VERSION < '1.9.3'
+        return if RUBY_ENGINE != 'ruby' || RSpec::Support::OS.windows?
 
         # Don't load it when we're running a single isolated
         # test file rather than the whole suite.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/support/version.rb 
new/lib/rspec/support/version.rb
--- old/lib/rspec/support/version.rb    2015-02-24 04:35:55.000000000 +0100
+++ new/lib/rspec/support/version.rb    2015-06-12 17:05:41.000000000 +0200
@@ -1,7 +1,7 @@
 module RSpec
   module Support
     module Version
-      STRING = '3.2.2'
+      STRING = '3.3.0'
     end
   end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rspec/support.rb new/lib/rspec/support.rb
--- old/lib/rspec/support.rb    2015-02-24 04:35:55.000000000 +0100
+++ new/lib/rspec/support.rb    2015-06-12 17:05:41.000000000 +0200
@@ -72,5 +72,40 @@
         end
       end
     end
+
+    # A single thread local variable so we don't excessively pollute that 
namespace.
+    def self.thread_local_data
+      Thread.current[:__rspec] ||= {}
+    end
+
+    def self.failure_notifier=(callable)
+      thread_local_data[:failure_notifier] = callable
+    end
+
+    # @private
+    DEFAULT_FAILURE_NOTIFIER = lambda { |failure, _opts| raise failure }
+
+    def self.failure_notifier
+      thread_local_data[:failure_notifier] || DEFAULT_FAILURE_NOTIFIER
+    end
+
+    def self.notify_failure(failure, options={})
+      failure_notifier.call(failure, options)
+    end
+
+    def self.with_failure_notifier(callable)
+      orig_notifier = failure_notifier
+      self.failure_notifier = callable
+      yield
+    ensure
+      self.failure_notifier = orig_notifier
+    end
+
+    # The Differ is only needed when a a spec fails with a diffable failure.
+    # In the more common case of all specs passing or the only failures being
+    # non-diffable, we can avoid the extra cost of loading the differ, 
diff-lcs,
+    # pp, etc by avoiding an unnecessary require. Instead, autoload will take
+    # care of loading the differ on first use.
+    autoload :Differ, "rspec/support/differ"
   end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        2015-02-24 04:35:55.000000000 +0100
+++ new/metadata        2015-06-12 17:05:41.000000000 +0200
@@ -1,7 +1,7 @@
 --- !ruby/object:Gem::Specification
 name: rspec-support
 version: !ruby/object:Gem::Version
-  version: 3.2.2
+  version: 3.3.0
 platform: ruby
 authors:
 - David Chelimsky
@@ -48,7 +48,7 @@
   ZsVDj6a7lH3cNqtWXZxrb2wO38qV5AkYj8SQK7Hj3/Yui9myUX3crr+PdetazSqQ
   F3MdtaDehhjC
   -----END CERTIFICATE-----
-date: 2015-02-24 00:00:00.000000000 Z
+date: 2015-06-12 00:00:00.000000000 Z
 dependencies:
 - !ruby/object:Gem::Dependency
   name: bundler
@@ -96,15 +96,17 @@
 - lib/rspec/support/hunk_generator.rb
 - lib/rspec/support/matcher_definition.rb
 - lib/rspec/support/method_signature_verifier.rb
+- lib/rspec/support/object_formatter.rb
 - lib/rspec/support/recursive_const_methods.rb
 - lib/rspec/support/ruby_features.rb
 - lib/rspec/support/spec.rb
 - lib/rspec/support/spec/deprecation_helpers.rb
 - lib/rspec/support/spec/formatting_support.rb
 - lib/rspec/support/spec/in_sub_process.rb
-- lib/rspec/support/spec/prevent_load_time_warnings.rb
+- lib/rspec/support/spec/library_wide_checks.rb
 - lib/rspec/support/spec/shell_out.rb
 - lib/rspec/support/spec/stderr_splitter.rb
+- lib/rspec/support/spec/string_matcher.rb
 - lib/rspec/support/spec/with_isolated_directory.rb
 - lib/rspec/support/spec/with_isolated_stderr.rb
 - lib/rspec/support/version.rb
@@ -130,9 +132,9 @@
     - !ruby/object:Gem::Version
       version: '0'
 requirements: []
-rubyforge_project: rspec
+rubyforge_project: 
 rubygems_version: 2.2.2
 signing_key: 
 specification_version: 4
-summary: rspec-support-3.2.2
+summary: rspec-support-3.3.0
 test_files: []
Files old/metadata.gz.sig and new/metadata.gz.sig differ


Reply via email to