The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/local/bin/perl -w

BEGIN { $|=1; print "1..6\n" }
END { print("not ok 1\n"),exit 1 unless $loaded }

use File::Rsync;
use strict;
use vars qw($loaded $fail);
$loaded=1;
$fail=0;
print STDERR "\nNOTE: expect 'badoption' message for test 6\n\n";
print "ok 1\n";

system qw(rm -rf destdir);
# all in one
{
   my $rs=File::Rsync->new(archive => 1,
         src => 'blib', dest => 'destdir');
   unless ($rs) {
      print "not ";
   } else {
      my $ret=$rs->exec;
      ($ret == 1 && $rs->status == 0 && ! $rs->err) || ($fail++,print "not ");
   }
   print "ok 2\n";
}

system qw(rm -rf destdir);
# some in new, some in exec
{
   my $rs=File::Rsync->new(archive => 1);
   unless ($rs) {
      $fail++;
      print "not ";
   } else {
      my $ret=$rs->exec(src => 'blib', dest => 'destdir');
      ($ret == 1 && $rs->status == 0 && ! $rs->err) || ($fail++,print "not ");
   }
   print "ok 3\n";
}

system qw(rm -rf destdir);
# non-existant source
{
   my $rs=File::Rsync->new(archive => 1);
   unless ($rs) {
      $fail++;
      print "not ";
   } else {
      no strict;
      my $ret=$rs->exec(src => 'some-non-existant-path-name', dest => 'destdir');
         (@{$rs->err} >= 1
         && $rs->err->[0] =~ /\bNo such file or directory\b/i)
         || ($fail++,print "not ");
   }
   print "ok 4\n";
}

system qw(rm -rf destdir);
# non-existant destination
{
   my $rs=File::Rsync->new(archive => 1);
   unless ($rs) {
      $fail++;
      print "not ";
   } else {
      no strict;
      my $ret=$rs->exec(src => 'blib', dest => 'destdir/subdir');
      ($ret == 0
         && $rs->status != 0
         && @{$rs->err} > 0
         && ${$rs->err}[0] =~/\bNo such file or directory\b/i)
         || ($fail++,print "not ");
   }
   print "ok 5\n";
}

system qw(rm -rf destdir);
# invalid option
{
   my $rs=File::Rsync->new(archive => 1, badoption => 1);
   $rs && ($fail++,print "not ");
   print "ok 6\n";
}

system qw(rm -rf destdir);
exit 1 if $fail;