diff options
author | Austin Ziegler <austin@zieglers.ca> | 2020-06-23 11:33:25 -0400 |
---|---|---|
committer | Austin Ziegler <austin@zieglers.ca> | 2020-06-23 11:33:25 -0400 |
commit | a7a595e2d5d3b4658d21d33f3f62f7c85ee4c82b (patch) | |
tree | 8e32eb2596f67159dca5302a3efaafcf25bed4de | |
parent | 4168a8eb56231152697290d14ac62a02eac9ac3f (diff) | |
download | diff-lcs-a7a595e2d5d3b4658d21d33f3f62f7c85ee4c82b.tar.gz |
Fix an issue with negative hunk max_size
Resolves #57.
- The `diff_size` should be an absolute value.
- Added a test to ensure that the issue does not introduce a regression.
-rw-r--r-- | Rakefile | 11 | ||||
-rw-r--r-- | diff-lcs.gemspec | 11 | ||||
-rw-r--r-- | lib/diff/lcs.rb | 2 | ||||
-rw-r--r-- | lib/diff/lcs/block.rb | 2 | ||||
-rw-r--r-- | spec/issues_spec.rb | 10 |
5 files changed, 16 insertions, 20 deletions
@@ -24,22 +24,11 @@ _spec = Hoe.spec 'diff-lcs' do extra_dev_deps << ['hoe-gemspec2', '~> 1.1'] extra_dev_deps << ['hoe-git', '~> 1.6'] extra_dev_deps << ['hoe-rubygems', '~> 1.0'] - extra_dev_deps << ['hoe-travis', '~> 1.2'] extra_dev_deps << ['rspec', '>= 2.0', '< 4'] extra_dev_deps << ['rake', '>= 10.0', '< 14'] extra_dev_deps << ['rdoc', '>= 0'] end -require "rspec/core/rake_task" - -desc "Run all specifications" -RSpec::Core::RakeTask.new(:spec) do |t| - rspec_dirs = %w(spec lib) - t.rspec_opts = [] - t.rspec_opts << "-I#{rspec_dirs.join(":")}" unless rspec_dirs.empty? -end -task :default => :spec - if RUBY_VERSION >= '2.0' && RUBY_ENGINE == 'ruby' namespace :spec do desc "Runs test coverage. Only works Ruby 2.0+ and assumes 'simplecov' is installed." diff --git a/diff-lcs.gemspec b/diff-lcs.gemspec index 17b7f24..1b9c386 100644 --- a/diff-lcs.gemspec +++ b/diff-lcs.gemspec @@ -1,16 +1,16 @@ # -*- encoding: utf-8 -*- -# stub: diff-lcs 1.4 ruby lib +# stub: diff-lcs 1.4.1 ruby lib Gem::Specification.new do |s| s.name = "diff-lcs".freeze - s.version = "1.4" + s.version = "1.4.1" s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= s.metadata = { "bug_tracker_uri" => "https://github.com/halostatue/diff-lcs/issues", "homepage_uri" => "https://github.com/halostatue/diff-lcs", "source_code_uri" => "https://github.com/halostatue/diff-lcs" } if s.respond_to? :metadata= s.require_paths = ["lib".freeze] s.authors = ["Austin Ziegler".freeze] - s.date = "2020-06-22" - s.description = "Diff::LCS computes the difference between two Enumerable sequences using the\nMcIlroy-Hunt longest common subsequence (LCS) algorithm. It includes utilities\nto create a simple HTML diff output format and a standard diff-like tool.\n\nThis is release 1.4, providing a simple extension that allows for\nDiff::LCS::Change objects to be treated implicitly as arrays. Ruby versions\nbelow 2.3 are soft-deprecated.\n\nThis means that older versions are no longer part of the CI test suite. If any\nchanges have been introduced that break those versions, bug reports and patches\nwill be accepted, but it will be up to the reporter to verify any fixes prior\nto release. A future release will completely break compatibility.".freeze + s.date = "2020-06-23" + s.description = "Diff::LCS computes the difference between two Enumerable sequences using the\nMcIlroy-Hunt longest common subsequence (LCS) algorithm. It includes utilities\nto create a simple HTML diff output format and a standard diff-like tool.\n\nThis is release 1.4, providing a simple extension that allows for\nDiff::LCS::Change objects to be treated implicitly as arrays. Ruby versions\nbelow 2.5 are soft-deprecated.\n\nThis means that older versions are no longer part of the CI test suite. If any\nchanges have been introduced that break those versions, bug reports and patches\nwill be accepted, but it will be up to the reporter to verify any fixes prior\nto release. A future release will completely break compatibility.".freeze s.email = ["halostatue@gmail.com".freeze] s.executables = ["htmldiff".freeze, "ldiff".freeze] s.extra_rdoc_files = ["Code-of-Conduct.md".freeze, "Contributing.md".freeze, "History.md".freeze, "License.md".freeze, "Manifest.txt".freeze, "README.rdoc".freeze, "docs/COPYING.txt".freeze, "docs/artistic.txt".freeze] @@ -30,7 +30,6 @@ Gem::Specification.new do |s| s.add_development_dependency(%q<hoe-gemspec2>.freeze, ["~> 1.1"]) s.add_development_dependency(%q<hoe-git>.freeze, ["~> 1.6"]) s.add_development_dependency(%q<hoe-rubygems>.freeze, ["~> 1.0"]) - s.add_development_dependency(%q<hoe-travis>.freeze, ["~> 1.2"]) s.add_development_dependency(%q<rspec>.freeze, [">= 2.0", "< 4"]) s.add_development_dependency(%q<rake>.freeze, [">= 10.0", "< 14"]) s.add_development_dependency(%q<rdoc>.freeze, [">= 0"]) @@ -40,7 +39,6 @@ Gem::Specification.new do |s| s.add_dependency(%q<hoe-gemspec2>.freeze, ["~> 1.1"]) s.add_dependency(%q<hoe-git>.freeze, ["~> 1.6"]) s.add_dependency(%q<hoe-rubygems>.freeze, ["~> 1.0"]) - s.add_dependency(%q<hoe-travis>.freeze, ["~> 1.2"]) s.add_dependency(%q<rspec>.freeze, [">= 2.0", "< 4"]) s.add_dependency(%q<rake>.freeze, [">= 10.0", "< 14"]) s.add_dependency(%q<rdoc>.freeze, [">= 0"]) @@ -51,7 +49,6 @@ Gem::Specification.new do |s| s.add_dependency(%q<hoe-gemspec2>.freeze, ["~> 1.1"]) s.add_dependency(%q<hoe-git>.freeze, ["~> 1.6"]) s.add_dependency(%q<hoe-rubygems>.freeze, ["~> 1.0"]) - s.add_dependency(%q<hoe-travis>.freeze, ["~> 1.2"]) s.add_dependency(%q<rspec>.freeze, [">= 2.0", "< 4"]) s.add_dependency(%q<rake>.freeze, [">= 10.0", "< 14"]) s.add_dependency(%q<rdoc>.freeze, [">= 0"]) diff --git a/lib/diff/lcs.rb b/lib/diff/lcs.rb index c4d1cc8..b6d0a86 100644 --- a/lib/diff/lcs.rb +++ b/lib/diff/lcs.rb @@ -49,7 +49,7 @@ module Diff; end unless defined? Diff # rubocop:disable Style/Documentation # a x b y c z p d q # a b c a x b y c z module Diff::LCS - VERSION = '1.4' + VERSION = '1.4.1' end require 'diff/lcs/callbacks' diff --git a/lib/diff/lcs/block.rb b/lib/diff/lcs/block.rb index 430702d..fe86793 100644 --- a/lib/diff/lcs/block.rb +++ b/lib/diff/lcs/block.rb @@ -19,7 +19,7 @@ class Diff::LCS::Block end def diff_size - @insert.size - @remove.size + (@insert.size - @remove.size).abs end def op diff --git a/spec/issues_spec.rb b/spec/issues_spec.rb index 79ddd0b..c4542bb 100644 --- a/spec/issues_spec.rb +++ b/spec/issues_spec.rb @@ -54,4 +54,14 @@ describe 'Diff::LCS Issues' do ] end end + + describe "issue #57" do + it 'should fail with a correct error' do + expect { + actual = {:category=>"app.rack.request"} + expected = {:category=>"rack.middleware", :title=>"Anonymous Middleware"} + expect(actual).to eq(expected) + }.to raise_error(RSpec::Expectations::ExpectationNotMetError) + end + end end |