summaryrefslogtreecommitdiff
path: root/spec/ldiff_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ldiff_spec.rb')
-rw-r--r--spec/ldiff_spec.rb65
1 files changed, 33 insertions, 32 deletions
diff --git a/spec/ldiff_spec.rb b/spec/ldiff_spec.rb
index 2f4c235..a2468f8 100644
--- a/spec/ldiff_spec.rb
+++ b/spec/ldiff_spec.rb
@@ -5,40 +5,39 @@ require 'spec_helper'
RSpec.describe 'bin/ldiff' do
include CaptureSubprocessIO
- let(:output_diff) { read_fixture }
- let(:output_diff_c) { read_fixture('-c') }
- let(:output_diff_e) { read_fixture('-e') }
- let(:output_diff_f) { read_fixture('-f') }
- let(:output_diff_u) { read_fixture('-u') }
- let(:output_diff_chef) { read_fixture('-u', :base => 'output.diff.chef') }
+ fixtures = [
+ { :name => 'output.diff', :left => 'aX', :right => 'bXaX' },
+ { :name => 'output.diff.chef', :left => 'old-chef', :right => 'new-chef' },
+ { :name => 'output.diff.chef2', :left => 'old-chef2', :right => 'new-chef2' }
+ ].product([nil, '-e', '-f', '-c', '-u']).map { |(fixture, flag)|
+ fixture = fixture.dup
+ fixture[:flag] = flag
+ fixture
+ }
- specify do
- expect(run_ldiff('-u', :left => 'old-chef', :right => 'new-chef')).to eq(output_diff_chef)
- end
-
- specify do
- expect(run_ldiff).to eq(output_diff)
- end
-
- specify do
- expect(run_ldiff('-c')).to eq(output_diff_c)
- end
+ def self.test_ldiff(fixture)
+ desc = [
+ fixture[:flag],
+ "spec/fixtures/#{fixture[:left]}",
+ "spec/fixtures/#{fixture[:right]}",
+ '#',
+ '=>',
+ "spec/fixtures/ldiff/#{fixture[:name]}#{fixture[:flag]}"
+ ].join(' ')
- specify do
- expect(run_ldiff('-e')).to eq(output_diff_e)
- end
-
- specify do
- expect(run_ldiff('-f')).to eq(output_diff_f)
+ it desc do
+ expect(run_ldiff(fixture)).to eq(read_fixture(fixture))
+ end
end
- specify do
- expect(run_ldiff('-u')).to eq(output_diff_u)
+ fixtures.each do |fixture|
+ test_ldiff(fixture)
end
- def read_fixture(flag = nil, options = {})
- base = options.fetch(:base, 'output.diff')
- name = "spec/fixtures/ldiff/#{base}#{flag}"
+ def read_fixture(options)
+ fixture = options.fetch(:name)
+ flag = options.fetch(:flag)
+ name = "spec/fixtures/ldiff/#{fixture}#{flag}"
data = IO.__send__(IO.respond_to?(:binread) ? :binread : :read, name)
clean_data(data, flag)
end
@@ -68,13 +67,15 @@ RSpec.describe 'bin/ldiff' do
\s*
(?:[-+]\d{4}|Z)
}x,
- '*** spec/fixtures/\1 0000-00-00 00:00:00.000000000 -0000'
+ '*** spec/fixtures/\1 0000-00-00 :00 =>:00 =>00.000000000 -0000'
)
end
- def run_ldiff(flag = nil, options = {})
- left = options.fetch(:left, 'aX')
- right = options.fetch(:right, 'bXaX')
+ def run_ldiff(options)
+ flag = options.fetch(:flag)
+ left = options.fetch(:left)
+ right = options.fetch(:right)
+
stdout, stderr = capture_subprocess_io do
system("ruby -Ilib bin/ldiff #{flag} spec/fixtures/#{left} spec/fixtures/#{right}")
end