#!/usr/local/bin/perl -w =head1 NAME t/99cvs_clone_delete_order.t =head1 DESCRIPTION Test that VCP::Source::cvs emits clone records in the correct order when cloning a delete. This is to address an issue that is reported by VCP::Dest::cvs of "all revision(s) already integrated" which occurs because VCP::Source::cvs clones a delete before it clones an edit. =cut use File::Basename; use Test; use VCP::Dest::perl_data; use VCP::Filter::changesets; use VCP::Logger qw( set_quiet_mode ); use VCP::Source::cvs; use VCP::TestUtils; use strict; set_quiet_mode( 1 ); my @vcp = vcp_cmd; my $progname = basename $0; my $t = -d 't' ? 't/' : '' ; my @data; my @tests = ( sub { my $s = VCP::Source::cvs->new( "cvs:t:99cvs_delete_clone_order.c" ); my $f = VCP::Filter::changesets->new; my $d = VCP::Dest::perl_data->new; $s->dest( $f ); $f->dest( $d ); $s->init; $f->init; $d->init; $d->output( \@data ); $s->handle_header( {} ); $s->copy_revs; $s->handle_footer( {} ); ok 0 + @data, 16; }, sub { shift @data; # discard header pop @data; # discard footer my %seen; my @out_of_order; for ( @data ) { for my $field qw( previous_id from_id ) { push @out_of_order, $_->{$field} if $_->{$field} && !$seen{$_->{$field}}; } $seen{$_->{id}}++; } ok join( ", ", @out_of_order ), ""; }, ) ; plan tests => scalar @tests ; my $cvs_borken = cvs_borken ; my $why_skip ; $why_skip .= cvs_borken; $why_skip ? skip( $why_skip, '' ) : $_->() for @tests ;
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 4517 | Barrie Slaymaker |
- VCP::Source::cvs uses earlier_ids to prevent deletes from occuring before clones or branches |