Hello community, here is the log from the commit of package rubygem-rspec-core for openSUSE:Factory checked in at 2016-03-07 13:22:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-rspec-core (Old) and /work/SRC/openSUSE:Factory/.rubygem-rspec-core.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "rubygem-rspec-core" Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-rspec-core/rubygem-rspec-core.changes 2016-02-28 02:25:41.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.rubygem-rspec-core.new/rubygem-rspec-core.changes 2016-03-07 13:22:48.000000000 +0100 @@ -1,0 +2,23 @@ +Fri Feb 19 05:38:02 UTC 2016 - coolo@suse.com + +- updated to version 3.4.3 + see installed Changelog.md + + ### Development + [Full Changelog](http://github.com/rspec/rspec-core/compare/v3.4.3...3-4-maintenance) + + ### 3.4.3 / 2016-02-19 + [Full Changelog](http://github.com/rspec/rspec-core/compare/v3.4.2...3.4.3) + + Bug Fixes: + + * Prevent a `TypeError` from occuring when running via the rake task when + Ruby crashes. (Patrik Wenger, #2161) + * Only consider example and group declaration lines from a specific file + when applying line number filtering, instead of considering all + declaration lines from all spec files. (Myron Marston, #2170) + * Fix failure snippet extraction so that snippets that contain `do-end` style + block and end with `end`-only line can be extracted properly. + (Yuji Nakayama, #2173) + +------------------------------------------------------------------- Old: ---- rspec-core-3.4.2.gem New: ---- rspec-core-3.4.3.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-rspec-core.spec ++++++ --- /var/tmp/diff_new_pack.KTocNs/_old 2016-03-07 13:22:48.000000000 +0100 +++ /var/tmp/diff_new_pack.KTocNs/_new 2016-03-07 13:22:48.000000000 +0100 @@ -24,7 +24,7 @@ # Name: rubygem-rspec-core -Version: 3.4.2 +Version: 3.4.3 Release: 0 %define mod_name rspec-core %define mod_full_name %{mod_name}-%{version} ++++++ rspec-core-3.4.2.gem -> rspec-core-3.4.3.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Changelog.md new/Changelog.md --- old/Changelog.md 2016-01-27 00:11:21.000000000 +0100 +++ new/Changelog.md 2016-02-18 23:50:28.000000000 +0100 @@ -1,3 +1,20 @@ +### Development +[Full Changelog](http://github.com/rspec/rspec-core/compare/v3.4.3...3-4-maintenance) + +### 3.4.3 / 2016-02-19 +[Full Changelog](http://github.com/rspec/rspec-core/compare/v3.4.2...3.4.3) + +Bug Fixes: + +* Prevent a `TypeError` from occuring when running via the rake task when + Ruby crashes. (Patrik Wenger, #2161) +* Only consider example and group declaration lines from a specific file + when applying line number filtering, instead of considering all + declaration lines from all spec files. (Myron Marston, #2170) +* Fix failure snippet extraction so that snippets that contain `do-end` style + block and end with `end`-only line can be extracted properly. + (Yuji Nakayama, #2173) + ### 3.4.2 / 2016-01-26 [Full Changelog](http://github.com/rspec/rspec-core/compare/v3.4.1...v3.4.2) 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/core/example_group.rb new/lib/rspec/core/example_group.rb --- old/lib/rspec/core/example_group.rb 2016-01-27 00:11:21.000000000 +0100 +++ new/lib/rspec/core/example_group.rb 2016-02-18 23:50:28.000000000 +0100 @@ -347,7 +347,7 @@ @descendant_filtered_examples = nil @_descendants = nil @parent_groups = nil - @declaration_line_numbers = nil + @declaration_locations = nil end # Adds an example to the example group @@ -599,10 +599,10 @@ end # @private - def self.declaration_line_numbers - @declaration_line_numbers ||= [metadata[:line_number]] + - examples.map { |e| e.metadata[:line_number] } + - FlatMap.flat_map(children, &:declaration_line_numbers) + def self.declaration_locations + @declaration_locations ||= [Metadata.location_tuple_from(metadata)] + + examples.map { |e| Metadata.location_tuple_from(e.metadata) } + + FlatMap.flat_map(children, &:declaration_locations) end # @return [String] the unique id of this example group. Pass diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rspec/core/formatters/exception_presenter.rb new/lib/rspec/core/formatters/exception_presenter.rb --- old/lib/rspec/core/formatters/exception_presenter.rb 2016-01-27 00:11:21.000000000 +0100 +++ new/lib/rspec/core/formatters/exception_presenter.rb 2016-02-18 23:50:28.000000000 +0100 @@ -92,9 +92,11 @@ private - def final_exception(exception) - if exception.cause - final_exception(exception.cause) + def final_exception(exception, previous=[]) + cause = exception.cause + if cause && !previous.include?(cause) + previous << cause + final_exception(cause, previous) else exception end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rspec/core/formatters/snippet_extractor.rb new/lib/rspec/core/formatters/snippet_extractor.rb --- old/lib/rspec/core/formatters/snippet_extractor.rb 2016-01-27 00:11:21.000000000 +0100 +++ new/lib/rspec/core/formatters/snippet_extractor.rb 2016-02-18 23:50:28.000000000 +0100 @@ -23,13 +23,6 @@ if RSpec::Support::RubyFeatures.ripper_supported? NoExpressionAtLineError = Class.new(StandardError) - PAREN_TOKEN_TYPE_PAIRS = { - :on_lbracket => :on_rbracket, - :on_lparen => :on_rparen, - :on_lbrace => :on_rbrace, - :on_heredoc_beg => :on_heredoc_end - } - attr_reader :source, :beginning_line_number, :max_line_count def self.extract_expression_lines_at(file_path, beginning_line_number, max_line_count=nil) @@ -64,29 +57,29 @@ def line_range_of_expression @line_range_of_expression ||= begin line_range = line_range_of_location_nodes_in_expression - initial_unclosed_parens = unclosed_paren_tokens_in_line_range(line_range) - unclosed_parens = initial_unclosed_parens + initial_unclosed_tokens = unclosed_tokens_in_line_range(line_range) + unclosed_tokens = initial_unclosed_tokens - until (initial_unclosed_parens & unclosed_parens).empty? + until (initial_unclosed_tokens & unclosed_tokens).empty? line_range = (line_range.begin)..(line_range.end + 1) - unclosed_parens = unclosed_paren_tokens_in_line_range(line_range) + unclosed_tokens = unclosed_tokens_in_line_range(line_range) end line_range end end - def unclosed_paren_tokens_in_line_range(line_range) + def unclosed_tokens_in_line_range(line_range) tokens = FlatMap.flat_map(line_range) do |line_number| source.tokens_by_line_number[line_number] end tokens.each_with_object([]) do |token, unclosed_tokens| - if PAREN_TOKEN_TYPE_PAIRS.keys.include?(token.type) + if token.opening? unclosed_tokens << token else index = unclosed_tokens.rindex do |unclosed_token| - PAREN_TOKEN_TYPE_PAIRS[unclosed_token.type] == token.type + unclosed_token.closed_by?(token) end unclosed_tokens.delete_at(index) if index end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rspec/core/metadata.rb new/lib/rspec/core/metadata.rb --- old/lib/rspec/core/metadata.rb 2016-01-27 00:11:21.000000000 +0100 +++ new/lib/rspec/core/metadata.rb 2016-02-18 23:50:28.000000000 +0100 @@ -107,6 +107,11 @@ end # @private + def self.location_tuple_from(metadata) + [metadata[:absolute_file_path], metadata[:line_number]] + end + + # @private # Used internally to populate metadata hashes with computed keys # managed by RSpec. class HashPopulator diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rspec/core/metadata_filter.rb new/lib/rspec/core/metadata_filter.rb --- old/lib/rspec/core/metadata_filter.rb 2016-01-27 00:11:21.000000000 +0100 +++ new/lib/rspec/core/metadata_filter.rb 2016-02-18 23:50:28.000000000 +0100 @@ -15,9 +15,9 @@ # @private def filter_applies?(key, value, metadata) silence_metadata_example_group_deprecations do - return location_filter_applies?(value, metadata) if key == :locations - return id_filter_applies?(value, metadata) if key == :ids - return filters_apply?(key, value, metadata) if Hash === value + return location_filter_applies?(value, metadata) if key == :locations + return id_filter_applies?(value, metadata) if key == :ids + return filters_apply?(key, value, metadata) if Hash === value return false unless metadata.key?(key) return true if TrueClass === value && !!metadata[key] @@ -49,13 +49,14 @@ end def location_filter_applies?(locations, metadata) - line_numbers = example_group_declaration_lines(locations, metadata) - line_number_filter_applies?(line_numbers, metadata) - end + Metadata.ascend(metadata).any? do |meta| + file_path = meta[:absolute_file_path] + line_num = meta[:line_number] - def line_number_filter_applies?(line_numbers, metadata) - preceding_declaration_lines = line_numbers.map { |n| RSpec.world.preceding_declaration_line(n) } - !(relevant_line_numbers(metadata) & preceding_declaration_lines).empty? + locations[file_path].any? do |filter_line_num| + line_num == RSpec.world.preceding_declaration_line(file_path, filter_line_num) + end + end end def proc_filter_applies?(key, proc, metadata) @@ -66,16 +67,6 @@ end end - def relevant_line_numbers(metadata) - Metadata.ascend(metadata).map { |meta| meta[:line_number] } - end - - def example_group_declaration_lines(locations, metadata) - FlatMap.flat_map(Metadata.ascend(metadata)) do |meta| - locations[meta[:absolute_file_path]] - end.uniq - end - def filters_apply?(key, value, metadata) subhash = metadata[key] return false unless Hash === subhash || HashImitatable === subhash diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rspec/core/rake_task.rb new/lib/rspec/core/rake_task.rb --- old/lib/rspec/core/rake_task.rb 2016-01-27 00:11:21.000000000 +0100 +++ new/lib/rspec/core/rake_task.rb 2016-02-18 23:50:28.000000000 +0100 @@ -81,7 +81,7 @@ return unless fail_on_error $stderr.puts "#{command} failed" if verbose - exit $?.exitstatus + exit $?.exitstatus || 1 end private diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rspec/core/source/token.rb new/lib/rspec/core/source/token.rb --- old/lib/rspec/core/source/token.rb 2016-01-27 00:11:21.000000000 +0100 +++ new/lib/rspec/core/source/token.rb 2016-02-18 23:50:28.000000000 +0100 @@ -6,6 +6,17 @@ # @private # A wrapper for Ripper token which is generated with `Ripper.lex`. class Token + CLOSING_TYPES_BY_OPENING_TYPE = { + :on_lbracket => :on_rbracket, + :on_lparen => :on_rparen, + :on_lbrace => :on_rbrace, + :on_heredoc_beg => :on_heredoc_end + }.freeze + + CLOSING_KEYWORDS_BY_OPENING_KEYWORD = { + 'do' => 'end' + }.freeze + attr_reader :token def self.tokens_from_ripper_tokens(ripper_tokens) @@ -37,6 +48,38 @@ def inspect "#<#{self.class} #{type} #{string.inspect}>" end + + def keyword? + type == :on_kw + end + + def opening? + opening_delimiter? || opening_keyword? + end + + def closed_by?(other) + closed_by_delimiter?(other) || closed_by_keyword?(other) + end + + private + + def opening_delimiter? + CLOSING_TYPES_BY_OPENING_TYPE.key?(type) + end + + def opening_keyword? + return false unless keyword? + CLOSING_KEYWORDS_BY_OPENING_KEYWORD.key?(string) + end + + def closed_by_delimiter?(other) + other.type == CLOSING_TYPES_BY_OPENING_TYPE[type] + end + + def closed_by_keyword?(other) + return false unless other.keyword? + other.string == CLOSING_KEYWORDS_BY_OPENING_KEYWORD[string] + end end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rspec/core/version.rb new/lib/rspec/core/version.rb --- old/lib/rspec/core/version.rb 2016-01-27 00:11:21.000000000 +0100 +++ new/lib/rspec/core/version.rb 2016-02-18 23:50:28.000000000 +0100 @@ -3,7 +3,7 @@ # Version information for RSpec Core. module Version # Current version of RSpec Core, in semantic versioning format. - STRING = '3.4.2' + STRING = '3.4.3' end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rspec/core/world.rb new/lib/rspec/core/world.rb --- old/lib/rspec/core/world.rb 2016-01-27 00:11:21.000000000 +0100 +++ new/lib/rspec/core/world.rb 2016-02-18 23:50:28.000000000 +0100 @@ -96,10 +96,12 @@ # @api private # # Find line number of previous declaration. - def preceding_declaration_line(filter_line) - declaration_line_numbers.sort.inject(nil) do |highest_prior_declaration_line, line| - line <= filter_line ? line : highest_prior_declaration_line + def preceding_declaration_line(absolute_file_name, filter_line) + line_numbers = descending_declaration_line_numbers_by_file.fetch(absolute_file_name) do + return nil end + + line_numbers.find { |num| num <= filter_line } end # @private @@ -179,8 +181,22 @@ private - def declaration_line_numbers - @declaration_line_numbers ||= FlatMap.flat_map(example_groups, &:declaration_line_numbers) + def descending_declaration_line_numbers_by_file + @descending_declaration_line_numbers_by_file ||= begin + declaration_locations = FlatMap.flat_map(example_groups, &:declaration_locations) + hash_of_arrays = Hash.new { |h, k| h[k] = [] } + + # TODO: change `inject` to `each_with_object` when we drop 1.8.7 support. + line_nums_by_file = declaration_locations.inject(hash_of_arrays) do |hash, (file_name, line_number)| + hash[file_name] << line_number + hash + end + + line_nums_by_file.each_value do |list| + list.sort! + list.reverse! + end + end end def fail_if_config_and_cli_options_invalid diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2016-01-27 00:11:21.000000000 +0100 +++ new/metadata 2016-02-18 23:50:28.000000000 +0100 @@ -1,7 +1,7 @@ --- !ruby/object:Gem::Specification name: rspec-core version: !ruby/object:Gem::Version - version: 3.4.2 + version: 3.4.3 platform: ruby authors: - Steven Baker @@ -46,7 +46,7 @@ ZsVDj6a7lH3cNqtWXZxrb2wO38qV5AkYj8SQK7Hj3/Yui9myUX3crr+PdetazSqQ F3MdtaDehhjC -----END CERTIFICATE----- -date: 2016-01-26 00:00:00.000000000 Z +date: 2016-02-18 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: rspec-support @@ -293,9 +293,9 @@ version: '0' requirements: [] rubyforge_project: -rubygems_version: 2.2.2 +rubygems_version: 2.5.1 signing_key: specification_version: 4 -summary: rspec-core-3.4.2 +summary: rspec-core-3.4.3 test_files: [] has_rdoc: Files old/metadata.gz.sig and new/metadata.gz.sig differ