NAME

VCP::TestUtils - support routines for VCP testing

General utility functions

mk_tmp_dir

Creates one or more temporary directories, which will be removed upon exit in an END block

assert_eq
assert_eq $test_name, $in, $out ;

dies with a useful diff in $@ is $in ne $out. Returns nothing.

Requires a diff that knows about the -d and -U options.

slurp
$guts = slurp $filename ;
perl_cmd
@perl = perl_cmd

Returns a list containing the Perl executable and some options to reproduce the current Perl options , like -I.

vcp_cmd
@vcp = vcp_cmd

Returns a list containing the Perl executable and some options to reproduce the current Perl options , like -I.

vcp_cmd assumes it is called from within the main distro directory or one subdir under it, since it looks for "bin/vcp" and "../bin/vcp". This should be adequate for almost all uses.

vcp_cmd caches it's results to allow it to be run from other directories after the first time it's called. (this is not a significant performance improvement; running the vcp process takes several orders of magnitude longer than the quick checks vcp_cmd does).

get_vcp_output
@vcp = get_vcp_output "foo:", "-bar" ;

Does a:

run [ vcp_cmd, @_, "revml:", ... ], \undef, \$out
   or croak "`vcp blahdy blah` returned $?";

and returns $out. The "..." refers to whatever output options are needed to make the test output agree with bin/gentrevml's test files (t/test-*.revml).

XML "cleanup" functions

These are used to get rid of content or elements that are known to differ when comparing the revml fed in to a repository with the revml that comes out.

s_content
s_content
   $elt_type1, $elt_type2, ..., \$string1, \$string2, ..., $new_content ;

Changes the contents of the elements, since some things, like suer id or mod_time can't be the same after going through a repository.

If $new_val is not supplied, a constant string is used.

rm_elts
rm_elts $elt_type1, $elt_type2, ..., \$string1, \$string2
rm_elts $elt_type1, $elt_type2, ..., qr/$content_re/, \$string1, \$string2

Removes the specified elements from the strings, including leading whitespace and trailing line separators. If the optional $content_re regular expression is provided, then only elements containing that pattern will be removed.

p4 repository mgmt functions

p4_borken

Returns true if the p4 is missing or too old (< 99.2).

launch_p4d
launch_p4d "prefix_" ;

Creates an empty repository and launches a p4d for it. The p4d will be killed and it's repository deleted on exit. Returns the options needed to access the repository.

CVS mgmt functions

cvs_borken

Returns true if the cvs is missing or too old (< 99.2).

init_cvs
my $cvs_options = init_cvs $prefix, $module_name ;

Creates a CVS repository containing an empty module. Also sets $ENV{LOGNAME} if it notices that we're running as root, so CVS won't give a "cannot commit files as 'root'" error. Tries "nobody", then "guest".

Returns the options needed to access the cvs repository.

COPYRIGHT

Copyright 2000, Perforce Software, Inc. All Rights Reserved.

This module and the VCP package are licensed according to the terms given in the file LICENSE accompanying this distribution, a copy of which is included in vcp.

3 POD Errors

The following errors were encountered while parsing the POD:

Around line 181:

=cut found outside a pod block. Skipping to next block.

Around line 262:

You forgot a '=back' before '=head1'

Around line 547:

You forgot a '=back' before '=head1'