X-Git-Url: https://defaria.com/gitweb/?a=blobdiff_plain;f=test%2Ftestclearcase.pl;h=512d372ee33ae0f5a09987221dc1b819cfaa0fbe;hb=6cf0d2cda8a454c46c0cd44fc2edd2093cd8c83a;hp=42e315280c760afc9a1ddca5efa4e41fe75fb0d4;hpb=1140ca8d56832ae529db0f353112ac192cdf9432;p=clearscm.git diff --git a/test/testclearcase.pl b/test/testclearcase.pl index 42e3152..512d372 100755 --- a/test/testclearcase.pl +++ b/test/testclearcase.pl @@ -58,7 +58,7 @@ use warnings; use Cwd; use FindBin; use Getopt::Long; -use Term::ANSIColor qw(:constants); +#use Term::ANSIColor qw(:constants); use lib "$FindBin::Bin/../lib"; @@ -89,8 +89,6 @@ use Utils; # Globals my $VERSION = '2.1'; -my (@ucmobjs, $order); - my ( $test_vob, $test_view, @@ -106,7 +104,7 @@ my ( $test_intview, ); -my ($vbs, $vws, %default_opts, %opts); +my (%default_opts, %opts); my ($script) = ($FindBin::Script =~ /^(.*)\.pl/); @@ -124,12 +122,12 @@ sub LogOpts() { for (sort keys %opts) { if (ref $opts{$_} eq 'ARRAY') { my $name = $_; - $log->msg("$name:\t$_") for (@{$opts{$_}}); + $log->msg("$name:\t$_") for @{$opts{$_}}; } else { $log->msg("$_:\t$opts{$_}"); } # if } # for - + return; } # LogOpts @@ -144,7 +142,7 @@ sub CreateVob($) { my ($status, @output) = $newvob->create($opts{vobhost}, "$opts{vobstore}/$vobname.vbs"); - $log->log($_) for (@output); + $log->log($_) for @output; return ($status, $newvob); } # CreateVob @@ -159,9 +157,7 @@ sub CreatePvob($) { #my ($status, @output) = $pvob->create($opts{vobhost}, "$opts{vobstore}/$vobname.vbs", 'A test Pvob'); my ($status, @output) = $pvob->create($opts{vobhost}, "$opts{vobstore}/$vobname.vbs"); - $log->log($_) for (@output); - - push @ucmobjs, $pvob unless $status; + $log->log($_) for @output; return ($status, $pvob); } # CreatePvob @@ -173,14 +169,14 @@ sub MountVob($) { # Create mount directory my ($status, @output); - + ($status, @output) = Execute 'mkdir -p ' . $vob->tag . ' 2>&1' unless -d $vob->tag; - $log->log($_) for (@output); + $log->log($_) for @output; ($status, @output) = $vob->mount; - $log->log($_) for (@output); + $log->log($_) for @output; return $status; } # MountVob @@ -200,7 +196,7 @@ sub DestroyVob($) { ($status, @output) = $vob->remove; - $log->log($_) for (@output); + $log->log($_) for @output; return $status; } # DestroyVob @@ -214,7 +210,7 @@ sub CreateView($) { my ($status, @output) = $view->create($opts{viewhost}, "$opts{viewstore}/$tag.vws"); - $log->log($_) for (@output); + $log->log($_) for @output; return ($status, $view); } # CreateView @@ -226,7 +222,7 @@ sub SetView($) { my ($status, @output) = $view->set; - $log->log($_) for (@output); + $log->log($_) for @output; return $status; } # SetView @@ -238,14 +234,14 @@ sub DestroyView($) { my ($status, @output) = $Clearcase::CC->execute('cd'); - $log->log($_) for (@output); + $log->log($_) for @output; chdir $ENV{HOME} or $log->err("Unable to chdir $ENV{HOME}", 1); ($status, @output) = $view->remove; - $log->log($_) for (@output); + $log->log($_) for @output; return $status; } # DestroyView @@ -267,7 +263,7 @@ sub CreateViewPrivateFiles(@) { close $file; } # for - + return; } # CreateViewPrivateFiles @@ -284,7 +280,7 @@ sub CheckOut($) { ($status, @output) = $newElement->checkout; - $log->log($_) for (@output); + $log->log($_) for @output; $log->err("Unable to check out $_", $status) if $status; } # for @@ -295,11 +291,11 @@ sub CheckOut($) { ($status, @output) = $newElement->checkout; - $log->log($_) for (@output); + $log->log($_) for @output; $log->err("Unable to check out $element", $status) if $status; } # if - + return; } # CheckOut @@ -316,7 +312,7 @@ sub CheckIn($) { ($status, @output) = $newElement->checkin; - $log->log($_) for (@output); + $log->log($_) for @output; $log->err("Unable to check in $_", $status) if $status; } # for @@ -327,11 +323,11 @@ sub CheckIn($) { ($status, @output) = $newElement->checkin; - $log->log($_) for (@output); + $log->log($_) for @output; $log->err("Unable to check in $element", $status) if $status; } # if - + return; } # CheckIn @@ -357,11 +353,11 @@ sub MakeElements(@) { my ($status, @output) = $newElement->mkelem; - $log->log($_) for (@output); + $log->log($_) for @output; $log->err("Unable to make $_ an element", $status) if $status; } # for - + return; } # MakeElements @@ -390,7 +386,7 @@ sub RunTests() { $log->msg("$script: Start Base Clearcase Tests"); $log->msg('Removing test files'); - unlink $_ for (@elements); + unlink $_ for @elements; $log->msg('Creating view private files'); @@ -443,31 +439,116 @@ sub Cleanup(;$$$) { } # Cleanup sub CleanupUCM() { - my $status = 0; + my ($rc, $status, @output); - # Need to remove UCM objects in the opposite order in which we created them - for (reverse @ucmobjs) { - my ($rc, @output); + $log->msg('Removing ' . $test_activity->name); - if (ref $_ eq 'Clearcase::UCM::Pvob') { - $log->msg('Removing Pvob ' . $_->tag); + ($rc, @output) = $test_activity->remove; - $status += DestroyVob $_; - } else { - $log->msg('Removing ' . ref ($_) . ' ' . $_->name); + $status += $rc; + + $log->log($_) for @output; - ($rc, @output) = $_->remove; + # Need to remove baselines from streams first using rebase (Devstream) + $log->msg('Rebasing ' . $test_devstream->name . ' to remove baseline'); - $status += $rc; - } # if - } # for + $status += RebaseStream( + $test_devstream, + ' -dbaseline ' . $test_baseline->name . '@' . $test_baseline->pvob->tag . + ' -view ' . $test_devview->name . ' -complete', + ); + + # Change intstream to not have a recommended baseline + $log->msg('Changing ' . $test_intstream->name . ' to remove recommended baseline'); + + ($rc, @output) = $test_intstream->nrecommended; + + $status += $rc; + + $log->log($_) for @output; + + $status += DestroyView($test_devview); + + $log->msg('Removing ' . $test_baseline->name); + + ($rc, @output) = $test_baseline->remove; + + $status += $rc; + + $log->log($_) for @output; + + $log->msg('Rebasing ' . $test_intstream->name . ' to remove INITIAL baseline'); + + $status += RebaseStream( + $test_intstream, + ' -dbaseline tc.component_INITIAL' . '@' . $test_intstream->pvob->tag . + ' -view ' . $test_intview->name . ' -complete', + ); + + $log->msg('Removing ' . $test_component->name . ' from ' . $test_project->name); + + ($rc, @output) = $test_project->change( + '-dmodcomp ' . $test_component->name . '@' . $test_project->pvob->tag + ); + + $status += $rc; + + $log->log($_) for @output; + + $log->msg('Removing ' . $test_component->name); + + ($rc, @output) = $test_component->remove; + + $status += $rc; + + $log->log($_) for @output; + + $status += DestroyView($test_intview); + + $log->msg('Removing '. $test_devstream->name); + + ($rc, @output) = $test_devstream->remove; + + $status += $rc; + + $log->log($_) for @output; + + $log->msg('Removing ' . $test_intstream->name); + + ($rc, @output) = $test_intstream->remove; + + $status += $rc; + + $log->log($_) for @output; + + $log->msg('Removing ' . $test_project->name); + + ($rc, @output) = $test_project->remove; + + $status += $rc; + + $log->log($_) for @output; + + $log->msg('Removing ' . $test_folder->name); + + ($rc, @output) = $test_folder->remove; + + $status += $rc; + + $log->log($_) for @output; + + $log->msg('Removing ' . $test_pvob->name); + + ($rc, @output) = DestroyVob($test_pvob); + + $log->log($_) for @output; return $status; } # CleanupUCM sub SetupTest($$) { my ($vob_tag, $view_tag) = @_; - + my ($status, @output); $log->msg('Setup test environment'); @@ -514,7 +595,7 @@ sub SetupTest($$) { ($status, @output) = $Clearcase::CC->execute("cd $dir"); if ($status != 0) { - $log->log($_) for (@output); + $log->log($_) for @output; } # if return $status; @@ -526,23 +607,23 @@ sub SetupUCMTest() { $log->msg("Creating UCM Pvob $Clearcase::VOBTAG_PREFIX/tc.pvob"); ($status, $test_pvob) = CreatePvob("$Clearcase::VOBTAG_PREFIX/tc.pvob"); - + return $status; } # SetupUCMTest sub CreateUCMProject() { # Get the root folder to put this project into (may create folders later) - my $folder = Clearcase::UCM::Folder->new('tc.folder', $test_pvob); + $test_folder = Clearcase::UCM::Folder->new('tc.folder', $test_pvob); - $test_project = Clearcase::UCM::Project->new('tc.project', $folder, $test_pvob); + $test_project = Clearcase::UCM::Project->new('tc.project', $test_folder, $test_pvob); + $test_project->remove if $test_project->exists; + $log->msg('Creating UCM Project tc.project'); - my ($status, @output) = $test_project->create(); + my ($status, @output) = $test_project->create; - $log->log($_) for (@output); - - push @ucmobjs, $test_project unless $status; + $log->log($_) for @output; return $status; } # CreateUCMProject @@ -554,9 +635,7 @@ sub CreateUCMIntStream() { my ($status, @output) = $test_intstream->create($test_project, '-integration'); - $log->log($_) for (@output); - - push @ucmobjs, $test_intstream unless $status; + $log->log($_) for @output; return $status; } # CreateUCMIntStream @@ -568,12 +647,10 @@ sub CreateUCMDevStream() { my ($status, @output) = $test_devstream->create($test_project); - $log->log($_) for (@output); - - push @ucmobjs, $test_devstream unless $status; + $log->log($_) for @output; return $status; -} # CreateUCMIntStream +} # CreateUCMDevStream sub CreateUCMComponent() { $test_component = Clearcase::UCM::Component->new('tc.component', $test_pvob); @@ -584,9 +661,7 @@ sub CreateUCMComponent() { "$Clearcase::VIEWTAG_PREFIX/" . $test_intview->tag . $test_vob->tag ); - $log->log($_) for (@output); - - push @ucmobjs, $test_component unless $status; + $log->log($_) for @output; return $status; } # CreateUCMComponent @@ -597,7 +672,7 @@ sub AddModifiableComponent() { ' ' . $test_project->name . '@' . $test_pvob->tag ); - $log->log($_) for (@output); + $log->log($_) for @output; return $status; } # AddModifiableCOmponent @@ -612,9 +687,7 @@ sub CreateUCMIntView() { '-stream ' . $test_intstream->name . '@' . $test_pvob->tag ); - $log->log($_) for (@output); - - push @ucmobjs, $test_intview unless $status; + $log->log($_) for @output; $test_intview->start unless $status; @@ -631,9 +704,7 @@ sub CreateUCMDevView() { '-stream ' . $test_devstream->name . '@' . $test_pvob->tag ); - $log->log($_) for (@output); - - push @ucmobjs, $test_devview unless $status; + $log->log($_) for @output; $test_devview->start unless $status; @@ -647,9 +718,7 @@ sub CreateUCMBaseline() { my ($status, @output) = $test_baseline->create($test_intview, undef, '-identical'); - $log->log($_) for (@output); - - push @ucmobjs, $test_baseline unless $status; + $log->log($_) for @output; return $status; } # CreateUCMBaseline @@ -661,29 +730,27 @@ sub CreateUCMActivity() { my ($status, @output) = $test_activity->create($test_devstream, 'A UCM Test Activity'); - $log->log($_) for (@output); - - push @ucmobjs, $test_activity unless $status; + $log->log($_) for @output; return $status; } # CreateUCMActivity -sub RebaseStream($$;$) { - my ($stream, $baseline, $opts) = @_; +sub RebaseStream($$) { + my ($stream, $opts) = @_; - my ($status, @output) = $stream->rebase($baseline, $opts); + my ($status, @output) = $stream->rebase($opts); - $log->log($_) for (@output); + $log->log($_) for @output; return $status; } # RebaseStream -sub RecommendBaseline($) { - my ($baseline) = @_; +sub RecommendBaseline($$) { + my ($stream, $baseline) = @_; - my ($status, @output) = $test_intstream->recommend($baseline); + my ($status, @output) = $stream->recommend($baseline); - $log->log($_) for (@output); + $log->log($_) for @output; return $status; } # RecommentBaseline @@ -700,12 +767,13 @@ sub RunUCMTests() { $status += CreateUCMDevView; $status += CreateUCMComponent; $status += AddModifiableComponent; - $status += RebaseStream($test_intstream, 'tc.component_INITIAL', '-complete'); - $status += RecommendBaseline('tc.component_INITIAL'); + $status += RebaseStream($test_intstream, '-baseline tc.component_INITIAL -complete'); + $status += RecommendBaseline($test_intstream, 'tc.component_INITIAL'); $status += CreateUCMBaseline; - $status += RebaseStream($test_devstream, 'tc.baseline', '-complete'); + $status += RebaseStream($test_devstream, '-baseline tc.baseline -complete'); + $status += RecommendBaseline($test_devstream, 'tc.baseline'); $status += CreateUCMActivity; - + $log->msg("$script: End UCM Clearcase Tests"); return $status; @@ -785,7 +853,7 @@ if ($opts{ucm}) { } # if if ($status != 0) { - $log->err("$script Failed (UCM Clearcase)"); + $log->err("$script: Failed (UCM Clearcase)"); } else { $log->msg("$script: Passed (UCM Clearcase)"); } # if