use strict; use Test::More tests => 17; use VCS::Lite; my $save_output = $ENV{VCS_LITE_KEEP_OUTPUT}; my $el1 = VCS::Lite->new('data/mariner.txt'); #01 isa_ok($el1,'VCS::Lite','Return from new, passed filespec'); #02 is($el1->id,'data/mariner.txt','Correct name returned by id'); my $el2 = VCS::Lite->new('data/marinerx.txt'); #03 ok(!$el1->delta($el1),'Compare with same returns empty array'); my $dt1 = $el1->delta($el2); #04 isa_ok($dt1,'VCS::Lite::Delta','Delta return'); #05 my @id = $dt1->id; is_deeply(\@id,['data/mariner.txt', 'data/marinerx.txt'], 'id method of delta returns correct ids'); #06 my @hunks = $dt1->hunks; is_deeply(\@hunks, [ [ ['-', 3, "Now wherefore stopp'st thou me?\n"], ['+', 3, "Now wherefore stoppest thou me?\n"], ],[ ['-', 20, "The Wedding-Guest sat on a stone:\n"], ['-', 21, "He cannot chuse but hear;\n"], ['-', 22, "And thus spake on that ancient man,\n"], ['-', 23, "The bright-eyed Mariner.\n"], ['-', 24, "\n"], ],[ ['+', 32, "Wondering about the wretched loon\n"], ],[ ['-', 94, "Whiles all the night, through fog-smoke white,\n"], ['-', 95, "Glimmered the white Moon-shine.\n"], ['+', 90, "While all the night, through fog-smoke white,\n"], ['+', 91, "Glimmered the white Moonshine.\n"], ] ], 'Full comparison of hunks'); my $diff = $dt1->diff; #07 ok($diff, 'Diff returns differences'); if ($save_output) { open (my $dfh, '>', 'diff1.out') or die "Failed to write output: $!"; print $dfh $diff; } my $results = do { local (@ARGV, $/) = 'data/marinerx.dif'; <> }; #08 is($diff, $results, 'Diff matches expected results (diff)'); my $el1c = VCS::Lite->new('data/mariner.txt', { chomp => 1 } ); my $el2c = VCS::Lite->new('data/marinerx.txt', { chomp => 1 } ); my $dt1c = $el1c->delta($el2c); $diff = $dt1c->diff; if ($save_output) { open (my $dfh, '>', 'diff1c.out') or die "Failed to write output: $!"; print $dfh $diff; } #09 is($diff, $results, 'Chomped mode: diff matches expected results'); my $el3 = VCS::Lite->new('data/marinery.txt'); $diff = $el1->diff($el3); # old form of call #10 ok($diff, 'Diff returns differences'); if ($save_output) { open (my $dfh, '>', 'diff2.out') or die "Failed to write output: $!"; print $dfh $diff; } $results = do { local (@ARGV, $/) = 'data/marinery.dif'; <> }; #11 is($diff, $results, 'Diff matches expected results (diff)'); my $udiff = $dt1->udiff; #12 ok($udiff, 'udiff returns differences'); if ($save_output) { open (my $dfh, '>', 'diff3.out') or die "Failed to write output: $!"; print $dfh $udiff; } $results = do { local (@ARGV, $/) = 'data/marinerx1.udif'; <> }; #13 is($udiff, $results, 'Diff matches expected results (udiff)'); $dt1 = $el1->delta($el2, window => 3); $udiff = $dt1->udiff; $results = do { local (@ARGV, $/) = 'data/marinerx.udif'; <> }; #14 is($udiff, $results, 'Diff matches expected results (udiff, 3 window)'); $dt1c = $el1c->delta($el2c, window => 3); $udiff = $dt1c->udiff; #15 is($udiff, $results, 'Chomped diff matches expected results (udiff, 3 window)'); if ($save_output) { open (my $dfh, '>', 'diff4.out') or die "Failed to write output: $!"; print $dfh $udiff; } #Test with no newline at end of file my $el4 = VCS::Lite->new('data/snarka.txt'); my $el5 = VCS::Lite->new('data/snarkb.txt'); my $dt2 = $el4->delta($el5); $results = do { local (@ARGV, $/) = 'data/snarkab.dif'; <> }; $diff = $dt2->diff; #16 is($diff, $results, 'Diff matches expected results (diff)'); $results = do { local (@ARGV, $/) = 'data/snarkab.udif'; <> }; $udiff = $dt2->udiff; #17 is($udiff, $results, 'Diff matches expected results (udiff)'); if ($save_output) { open (my $dfh, '>', 'diff5.out') or die "Failed to write output: $!"; print $dfh $udiff; }