summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin Ziegler <austin@zieglers.ca>2020-06-23 11:33:25 -0400
committerAustin Ziegler <austin@zieglers.ca>2020-06-23 11:33:25 -0400
commita7a595e2d5d3b4658d21d33f3f62f7c85ee4c82b (patch)
tree8e32eb2596f67159dca5302a3efaafcf25bed4de
parent4168a8eb56231152697290d14ac62a02eac9ac3f (diff)
downloaddiff-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--Rakefile11
-rw-r--r--diff-lcs.gemspec11
-rw-r--r--lib/diff/lcs.rb2
-rw-r--r--lib/diff/lcs/block.rb2
-rw-r--r--spec/issues_spec.rb10
5 files changed, 16 insertions, 20 deletions
diff --git a/Rakefile b/Rakefile
index e6bbf86..c19b7d1 100644
--- a/Rakefile
+++ b/Rakefile
@@ -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