BEGIN{ use Cwd; my($wd) = cwd; $ENV{'ISLVINI'} = "$wd/t/PVCSPROJ/islvrc.txt"; } use VCS::PVCS::Project; my($wd) = cwd; # Self configure my($wdir) = $wd; my($adir) = $wd; $wdir .= "/t/PVCSPROJ/PVCSWORK/src"; $adir .= "/t/PVCSPROJ/archives/src"; #$PVCSDEBUG = 1; $|=1; print "1..64\n"; print STDERR "This might take a minute or two on Windows especially...\n"; # Create new project # Pass ref to hash for WKDIR for project, if desired. my($i) =1; my($proj) = new VCS::PVCS::Project("examples", {'WKDIR' => $wdir }); ($proj) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; # Create a new folder called example in the examples project # Same argument for working dir my ($folder) = $proj->openFolders("docs" , {'WKDIR' => $wdir}); ($folder) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; my($wd2) = $folder->getWD(); # utility routine returns the folder's working dir ($wd2) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; my(@files) = qw(foo.c bar.c baz.c blech.h); # Created in 00setup.t my($file); foreach $file (@files){ $folder->newArchive($file,$adir); (!($PVCSERR) && $folder) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; } # Checkout all files in the folder $folder->checkout("-l"); # Checkout all archives with lock (! $PVCSERR) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; # Populate the attributes object for each file in the folder $folder->getAttributes; (! $PVCSERR) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; # i = 10 # Get a list of archive object members of the folder and ck for locks my(@members) = $folder->members; my($member,$attributes); foreach $member (@members){ $attributes = $member->attributes; # Get the attributes object ($attributes->Locks) ? (print "ok $i\n") : (print "not ok $i\n"); $i++ } # Now make a small change my($j); foreach $j (@files){ if(open(F,">t/PVCSPROJ/PVCSWORK/src/$j")){ print "ok $i\n"; } else{ print "not ok $i\n"; } print F "foobaz\n"; close F; $i++; } $folder->checkin('-M"Checked in from test"'); # Checkin all archives (! $PVCSERR) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; my($vers,$label); # Reload the attributes for all files (force with 1 as argument) $folder->getAttributes(1); foreach $member (@members){ $attributes = $member->attributes; # Get the attributes object ($attributes->Locks) ? (print "not ok $i\n") : (print "ok $i\n"); $i++; $vers = $attributes->Last_trunk_rev; ($vers =~ /1.1/) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; } # Add/change/delete some version labels # add foobar to 1.1 (tip default) $folder->addVersionLabel("foobar"); (! $PVCSERR) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; $folder->getAttributes(1); foreach $member (@members){ $attributes = $member->attributes; # Get the attributes object $label = $attributes->Version_labels; ($label =~ /foobar/) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; } # Add a version label to an earlier version $folder->addVersionLabel("bazbar:1.0"); (! $PVCSERR) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; $folder->getAttributes(1); foreach $member (@members){ $attributes = $member->attributes; # Get the attributes object $label = $attributes->Version_labels; ($label =~ /bazbar/) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; } # Convert a version label to floating $folder->transformVersionLabel("foobar"); (! $PVCSERR) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; $folder->getAttributes(1); foreach $member (@members){ $attributes = $member->attributes; # Get the attributes hash $label = $attributes->Version_labels; ($label =~ /1.\*/) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; } # delete a version label $folder->deleteVersionLabel("foobar"); (! $PVCSERR) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; $folder->getAttributes(1); foreach $member (@members){ $attributes = $member->attributes; # Get the attributes hash $label = $attributes->Version_labels; ($label =~ /foobar/) ? (print "not ok $i\n") : (print "ok $i\n"); $i++; } # REname a version label $folder->replaceVersionLabel("blahblek","bazbar"); (! $PVCSERR) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; $folder->getAttributes(1); foreach $member (@members){ $attributes = $member->attributes; # Get the attributes hash $label = $attributes->Version_labels; ($label =~ /bazbar/) ? (print "not ok $i\n") : (print "ok $i\n"); $i++; ($label =~ /blahblek/) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; } # Promote all of the 1.0 revisions to the Prodtest group $folder->addPromoGroup("Prodtest:1.0"); (! $PVCSERR) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; $folder->getAttributes(1); foreach $member (@members){ $attributes = $member->attributes; # Get the attributes hash $label = $attributes->Groups; ($label =~ /Prodtest/) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; } # take a diff on all members against the two versions (default) foreach $member (@members){ $member->vdiff("-D -R1.0 -R1.1"); ($PVCSOUTPUT =~ /foobaz/) ? (print "ok $i\n") : (print "not ok $i\n"); $i++; }