diff-lcs 1.4 → 1.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.md +16 -0
- data/Rakefile +0 -11
- data/lib/diff/lcs.rb +1 -1
- data/lib/diff/lcs/backports.rb +1 -1
- data/lib/diff/lcs/block.rb +1 -1
- data/lib/diff/lcs/hunk.rb +11 -8
- data/spec/issues_spec.rb +41 -0
- data/spec/ldiff_spec.rb +22 -14
- metadata +2 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f8c970551b0fef2c712a6dbdc87453ecbd383a6c5b69f0c1e20e7525a9f4d1ef
|
4
|
+
data.tar.gz: 6a46ef91155a305417163c3e92503b567e47bf69413e697101b613ed8665c016
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9612854483a3dc37cab0f7ec561d23c4ff2c4d190c4d526c18ae45de8c42a2b48f4809fc7da78de524703a7424b7bfd128bb6705424ffa8c139d7a8a59eea10f
|
7
|
+
data.tar.gz: 16586385ffdfd194afd04f1da73ba3b358b7f324f3dfa5c76b8d37e4ffee0eff257ae7c718d85164d02130c9424b04b130521f87dc4d812d9426bbba6806dfd2
|
data/History.md
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
# History
|
2
2
|
|
3
|
+
## 1.4.2 / 2020-06-23
|
4
|
+
|
5
|
+
- Camille Drapier fixed a small issue with RuboCop configuration. [#59][]
|
6
|
+
- Applied another fix (and unit test) to fix an issue for the Chef team.
|
7
|
+
[#60][], [#61][]
|
8
|
+
|
9
|
+
## 1.4.1 / 2020-06-23
|
10
|
+
|
11
|
+
- Fix an issue where diff sizes could be negative, and they should be. [#57][],
|
12
|
+
[#58][]
|
13
|
+
|
3
14
|
## 1.4 / 2020-06-23
|
4
15
|
|
5
16
|
- Ruby versions lower than 2.4 are soft-deprecated and will not be run as
|
@@ -245,3 +256,8 @@
|
|
245
256
|
[#49]: https://github.com/halostatue/diff-lcs/pull/49
|
246
257
|
[#52]: https://github.com/halostatue/diff-lcs/pull/52
|
247
258
|
[#53]: https://github.com/halostatue/diff-lcs/issues/53
|
259
|
+
[#57]: https://github.com/halostatue/diff-lcs/issues/57
|
260
|
+
[#58]: https://github.com/halostatue/diff-lcs/pull/58
|
261
|
+
[#59]: https://github.com/halostatue/diff-lcs/pull/59
|
262
|
+
[#60]: https://github.com/halostatue/diff-lcs/issues/60
|
263
|
+
[#61]: https://github.com/halostatue/diff-lcs/pull/61
|
data/Rakefile
CHANGED
@@ -24,22 +24,11 @@ _spec = Hoe.spec 'diff-lcs' do
|
|
24
24
|
extra_dev_deps << ['hoe-gemspec2', '~> 1.1']
|
25
25
|
extra_dev_deps << ['hoe-git', '~> 1.6']
|
26
26
|
extra_dev_deps << ['hoe-rubygems', '~> 1.0']
|
27
|
-
extra_dev_deps << ['hoe-travis', '~> 1.2']
|
28
27
|
extra_dev_deps << ['rspec', '>= 2.0', '< 4']
|
29
28
|
extra_dev_deps << ['rake', '>= 10.0', '< 14']
|
30
29
|
extra_dev_deps << ['rdoc', '>= 0']
|
31
30
|
end
|
32
31
|
|
33
|
-
require "rspec/core/rake_task"
|
34
|
-
|
35
|
-
desc "Run all specifications"
|
36
|
-
RSpec::Core::RakeTask.new(:spec) do |t|
|
37
|
-
rspec_dirs = %w(spec lib)
|
38
|
-
t.rspec_opts = []
|
39
|
-
t.rspec_opts << "-I#{rspec_dirs.join(":")}" unless rspec_dirs.empty?
|
40
|
-
end
|
41
|
-
task :default => :spec
|
42
|
-
|
43
32
|
if RUBY_VERSION >= '2.0' && RUBY_ENGINE == 'ruby'
|
44
33
|
namespace :spec do
|
45
34
|
desc "Runs test coverage. Only works Ruby 2.0+ and assumes 'simplecov' is installed."
|
data/lib/diff/lcs.rb
CHANGED
data/lib/diff/lcs/backports.rb
CHANGED
data/lib/diff/lcs/block.rb
CHANGED
data/lib/diff/lcs/hunk.rb
CHANGED
@@ -2,12 +2,12 @@
|
|
2
2
|
|
3
3
|
require 'diff/lcs/block'
|
4
4
|
|
5
|
-
# A Hunk is a group of Blocks which overlap because of the context
|
6
|
-
#
|
7
|
-
#
|
5
|
+
# A Hunk is a group of Blocks which overlap because of the context surrounding
|
6
|
+
# each block. (So if we're not using context, every hunk will contain one
|
7
|
+
# block.) Used in the diff program (bin/ldiff).
|
8
8
|
class Diff::LCS::Hunk
|
9
|
-
# Create a hunk using references to both the old and new data, as well as
|
10
|
-
#
|
9
|
+
# Create a hunk using references to both the old and new data, as well as the
|
10
|
+
# piece of data.
|
11
11
|
def initialize(data_old, data_new, piece, flag_context, file_length_difference)
|
12
12
|
# At first, a hunk will have just one Block in it
|
13
13
|
@blocks = [Diff::LCS::Block.new(piece)]
|
@@ -61,17 +61,20 @@ class Diff::LCS::Hunk
|
|
61
61
|
return if context.nil? or context.zero?
|
62
62
|
|
63
63
|
add_start = context > @start_old ? @start_old : context
|
64
|
+
|
64
65
|
@start_old -= add_start
|
65
66
|
@start_new -= add_start
|
66
67
|
|
68
|
+
old_size = @data_old.size
|
69
|
+
|
67
70
|
add_end =
|
68
|
-
if (@end_old + context) >
|
69
|
-
|
71
|
+
if (@end_old + context) > old_size
|
72
|
+
old_size - @end_old
|
70
73
|
else
|
71
74
|
context
|
72
75
|
end
|
73
76
|
|
74
|
-
add_end = @max_diff_size if add_end
|
77
|
+
add_end = @max_diff_size if add_end >= old_size
|
75
78
|
|
76
79
|
@end_old += add_end
|
77
80
|
@end_new += add_end
|
data/spec/issues_spec.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
|
+
require 'diff/lcs/hunk'
|
4
5
|
|
5
6
|
describe 'Diff::LCS Issues' do
|
6
7
|
include Diff::LCS::SpecHelper::Matchers
|
@@ -54,4 +55,44 @@ describe 'Diff::LCS Issues' do
|
|
54
55
|
]
|
55
56
|
end
|
56
57
|
end
|
58
|
+
|
59
|
+
describe "issue #57" do
|
60
|
+
it 'should fail with a correct error' do
|
61
|
+
expect {
|
62
|
+
actual = {:category=>"app.rack.request"}
|
63
|
+
expected = {:category=>"rack.middleware", :title=>"Anonymous Middleware"}
|
64
|
+
expect(actual).to eq(expected)
|
65
|
+
}.to raise_error(RSpec::Expectations::ExpectationNotMetError)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "issue #60" do
|
70
|
+
it 'should produce unified output with correct context' do
|
71
|
+
old_data = <<-DATA_OLD.strip.split("\n").map(&:chomp)
|
72
|
+
{
|
73
|
+
"name": "x",
|
74
|
+
"description": "hi"
|
75
|
+
}
|
76
|
+
DATA_OLD
|
77
|
+
|
78
|
+
new_data = <<-DATA_NEW.strip.split("\n").map(&:chomp)
|
79
|
+
{
|
80
|
+
"name": "x",
|
81
|
+
"description": "lo"
|
82
|
+
}
|
83
|
+
DATA_NEW
|
84
|
+
|
85
|
+
diff = ::Diff::LCS.diff(old_data, new_data)
|
86
|
+
hunk = ::Diff::LCS::Hunk.new(old_data, new_data, diff.first, 3, 0)
|
87
|
+
|
88
|
+
expect(hunk.diff(:unified)).to eq(<<-EXPECTED.chomp)
|
89
|
+
@@ -1,5 +1,5 @@
|
90
|
+
{
|
91
|
+
"name": "x",
|
92
|
+
- "description": "hi"
|
93
|
+
+ "description": "lo"
|
94
|
+
}
|
95
|
+
EXPECTED
|
96
|
+
end
|
97
|
+
end
|
57
98
|
end
|
data/spec/ldiff_spec.rb
CHANGED
@@ -10,6 +10,11 @@ RSpec.describe 'bin/ldiff' do
|
|
10
10
|
let(:output_diff_e) { read_fixture('-e') }
|
11
11
|
let(:output_diff_f) { read_fixture('-f') }
|
12
12
|
let(:output_diff_u) { read_fixture('-u') }
|
13
|
+
let(:output_diff_chef) { read_fixture('-u', base: 'output.diff.chef') }
|
14
|
+
|
15
|
+
specify do
|
16
|
+
expect(run_ldiff('-u', left: 'old-chef', right: 'new-chef')).to eq(output_diff_chef)
|
17
|
+
end
|
13
18
|
|
14
19
|
specify do
|
15
20
|
expect(run_ldiff).to eq(output_diff)
|
@@ -31,30 +36,33 @@ RSpec.describe 'bin/ldiff' do
|
|
31
36
|
expect(run_ldiff('-u')).to eq(output_diff_u)
|
32
37
|
end
|
33
38
|
|
34
|
-
def read_fixture(flag = nil)
|
35
|
-
clean_data(IO.binread("spec/fixtures/ldiff
|
39
|
+
def read_fixture(flag = nil, base: 'output.diff')
|
40
|
+
clean_data(IO.binread("spec/fixtures/ldiff/#{base}#{flag}"), flag)
|
36
41
|
end
|
37
42
|
|
38
43
|
def clean_data(data, flag)
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
44
|
+
data =
|
45
|
+
case flag
|
46
|
+
when '-c', '-u'
|
47
|
+
clean_output_timestamp(data)
|
48
|
+
else
|
49
|
+
data
|
50
|
+
end
|
51
|
+
data.gsub(/\r\n?/, "\n")
|
45
52
|
end
|
46
53
|
|
47
54
|
def clean_output_timestamp(data)
|
48
55
|
data.gsub(
|
49
56
|
%r{
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
\
|
57
|
+
^
|
58
|
+
[-+*]{3}
|
59
|
+
\s*
|
60
|
+
spec/fixtures/(\S+)
|
61
|
+
\s*
|
54
62
|
\d{4}-\d\d-\d\d
|
55
|
-
\s
|
63
|
+
\s*
|
56
64
|
\d\d:\d\d:\d\d(?:\.\d+)
|
57
|
-
\s
|
65
|
+
\s*
|
58
66
|
(?:[-+]\d{4}|Z)
|
59
67
|
}x,
|
60
68
|
'*** spec/fixtures/\1 0000-00-00 00:00:00.000000000 -0000'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: diff-lcs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Austin Ziegler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-06-
|
11
|
+
date: 2020-06-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hoe-doofus
|
@@ -66,20 +66,6 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: hoe-travis
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '1.2'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '1.2'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: rspec
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|