90revml2cvs_1.t #1

  • //
  • guest/
  • perforce_software/
  • revml/
  • t/
  • 90revml2cvs_1.t
  • View
  • Commits
  • Open Download .zip Download (2 KB)
#!/usr/local/bin/perl -w

=head1 NAME

revml2cvs.t - testing of vcp cvs i/o

=cut

use strict ;

use Carp ;
use Cwd ;
use File::Path qw( rmtree );
use Test ;
use VCP::TestUtils ;

# use eq_or_diff from Test::Differences if available,
# else just use ok.
eval "use Test::Differences";
sub ok_or_diff {
   goto &eq_or_diff if defined &eq_or_diff;
   goto &Test::ok;
}


my @vcp = vcp_cmd ;

my $t = -d 't' ? 't/' : '' ;

my $module = 'foo' ;  ## Must match the rev_root in the testrevml files

my $infile_0 = $t . "test-cvs-in-0.revml";
my $infile_1 = $t . "test-cvs-in-1.revml";

my $cvsroot_0 = $t . "cvsroot_0";
my $cvsroot_1 = $t . "cvsroot_1";

my $cvs_spec_1 = "cvs:$cvsroot_1:$module/" ;

# use to check result of ok
sub check {
   croak "test failed and FATALTEST set" if ! $_[0];
}



my @tests = (

## copy cvsroot_0 to cvsroot_1
sub {
   eval {
      rmtree [ $cvsroot_1 ] if -e $cvsroot_1;
      copy_dir_tree $cvsroot_0, $cvsroot_1;
   };
   check ok $@ || '', '', 'diff' ;
},


## apply the changes in the 2nd revml file
sub {
   eval {
#      run [ @vcp, "revml:$infile_0", $cvs_spec_0, "--init-cvsroot" ], \undef;
      run [ @vcp, "revml:$infile_1", $cvs_spec_1 ], \undef;
   };
   check ok $@ || '', '', 'diff';
},


##
## Idempotency test for an incremental revml->cvs->revml update
##
sub {
   my $dir = cwd;
   my $expected = parse_files_and_revids_from_revml
      $infile_0,
      $infile_1,
      { IGNORE_REVS_WITH_DELETE_FLAG => 1 };
   my $got = parse_files_and_revids_from_cvs_history "$dir/$cvsroot_1", "foo";

   ok_or_diff $got, $expected;
},


) ;


plan tests => scalar( @tests ) ;

my $why_skip ;

$why_skip .= cvs_borken ;
$why_skip ? skip( $why_skip, 0 ) : $_->() for @tests ;
# Change User Description Committed
#7 3428 Barrie Slaymaker - Test suite cleanup
#6 2926 John Fetkovich remove --state-location switch
       add --db-dir and --repo-id switches
       build state location from concatenation of those two.
#5 2902 Barrie Slaymaker Minor reduction to a single test sub.
#4 2716 Barrie Slaymaker Shorten, standardize state dir names
#3 2714 Barrie Slaymaker Simplify t/90*cvs.t tests, remove make_cvsroots for speed and
       simplicity.
#2 2649 John Fetkovich Change test suites because of unreliable 'cvs history' command.
#1 2622 John Fetkovich Split revml2cvs.t into three files, then improved;
       particularly made changes to use
       parse_files_and_revids_from_revml (already in TestUtils.pm)
       and parse_files_and_revids_from_cvs_history (newly added to
       TestUtils.pm) to do checks on changes.