# Before running this test, run the following tests: # # 00_clear.t - Remove ./test # 01_basic.t - Create fresh ./test # 03_subsidiary.t - Create test/parent, test/session1, test/session2 use strict; use Test::More; use File::Spec::Functions qw(catdir updir catfile); use File::Find; our @stores; BEGIN { require 'backends.pl'; @stores = test_stores(); plan tests => 1 + @stores * 12; #01 use_ok 'VCS::Lite::Repository'; } VCS::Lite::Repository->user('test'); # for tests on non-Unix platforms # The purpose of this test is to replicate a problem found when # a parent repository is created from scratch. # # This uses test/parent, blowing away the repository files underneath # it, and re-creating the repository. # # This may invalidate some of tests 02_traverse.t through 06_binary.t for (@stores) { print "Store $_\n"; my $pardir = catdir("test", $_, "parent"); { local $_; # File::Find is overwriting $_ !! find ( { bydepth => 1, wanted => sub { return unless $File::Find::name =~ /.VCSLite/; if (-d $_) { rmdir $_; } else { 1 while unlink $_; } } }, $pardir); } my $rep = VCS::Lite::Repository->new($pardir, store => $_); chdir 'test'; chdir $_; #+01 isa_ok($rep, 'VCS::Lite::Repository','Created new'); #+02 isa_ok($rep->add('mariner.txt'), 'VCS::Lite::Element', 'Add a text file'); my $screp = $rep->add('scripts'); #+03 isa_ok($screp->add('vldiff.pl'), 'VCS::Lite::Element', 'Add vldiff.pl'); #+04 isa_ok($screp->add('vlpatch.pl'), 'VCS::Lite::Element', 'Add vlpatch.pl'); #+05 isa_ok($screp->add('vlmerge.pl'), 'VCS::Lite::Element', 'Add vlmerge.pl'); my $tpath = catfile(updir,qw/t 04_repository.t/); #+06 isa_ok($screp->add($tpath), 'VCS::Lite::Element', 'Add a test'); $rep = VCS::Lite::Repository->new('parent', store => $_); $rep->check_in( description => 'Initial version'); my @repc = $rep->fetch->text; #+07 is_deeply(\@repc, [ qw/ mariner.txt scripts t / ], "Top level contents"); my $sess = $rep->check_out('session3', store => $_); #+08 isa_ok($sess, 'VCS::Lite::Repository', 'Clone returns'); #+09 is( scalar($sess->contents), 3, 'Correct number of members before update'); $sess->update; $sess = VCS::Lite::Repository->new('session3', store => $_); #+10 is( scalar($sess->contents), 3, 'Correct number of members after update'); #+11 isa_ok($sess, 'VCS::Lite::Repository', 'reconstruction'); @repc = $sess->fetch->text; #+12 is_deeply(\@repc, [ qw/ mariner.txt scripts t / ], "Top level contents"); chdir updir; chdir updir; }