App-MtAws
view release on metacpan or search on metacpan
t/unit/cmd_check_local_hash.t view on Meta::CPAN
expect_file_exists $file1->{relfilename};
expect_file_size $file1->{relfilename}, $file1->{size};
expect_file_mtime $file1->{relfilename}, $file1->{mtime};
expect_open_file my $fileobj = { mock => 1 }, $file1->{relfilename}, 1;
expect_treehash $fileobj, $file1->{treehash};
my ($res, $out) = run_command($options, $j);
ok $res;
ok $out =~ /^OK file1 $file1->{size} $file1->{treehash}$/m;
check_ok($out, qw/ok/);
};
};
describe "latest()" => sub {
it "should work with latest file when everything matches" => sub {
ordered_test sub {
expect_read_journal $j;
$j->_add_filename({size => 1231, treehash => 'th001', mtime => 4000, relfilename => 'file1'});
$j->_add_filename(my $r = {size => 1232, treehash => 'th002', mtime => 4003, relfilename => 'file1'});
$j->_add_filename({size => 1233, treehash => 'th003', mtime => 4001, relfilename => 'file1'});
expect_file_exists $r->{relfilename};
expect_file_size $r->{relfilename}, $r->{size};
expect_file_mtime $r->{relfilename}, $r->{mtime};
expect_open_file my $fileobj = { mock => 1 }, $r->{relfilename}, 1;
expect_treehash $fileobj, $r->{treehash};
my ($res, $out) = run_command($options, $j);
ok $res;
ok $out =~ /^OK file1 $r->{size} $r->{treehash}$/m;
check_ok($out, qw/ok/);
};
};
it "should work with latest file and call latest() when everything matches" => sub {
ordered_test sub {
expect_read_journal $j;
$j->_add_filename({size => 1231, treehash => 'th001', mtime => 4000, relfilename => 'file1'});
$j->_add_filename(my $r = {size => 1232, treehash => 'th002', mtime => 4003, relfilename => 'file1'});
$j->_add_filename({size => 1233, treehash => 'th003', mtime => 4001, relfilename => 'file1'});
App::MtAws::Journal->expects("latest")->returns_ordered(sub{ is $_[1], "file1"; $r})->once;
expect_file_exists $r->{relfilename};
expect_file_size $r->{relfilename}, $r->{size};
expect_file_mtime $r->{relfilename}, $r->{mtime};
expect_open_file my $fileobj = { mock => 1 }, $r->{relfilename}, 1;
expect_treehash $fileobj, $r->{treehash};
my ($res, $out) = run_command($options, $j);
ok $res;
ok $out =~ /^OK file1 $r->{size} $r->{treehash}$/m;
check_ok($out, qw/ok/);
};
};
};
it "should work when treehash does not match" => sub {
ordered_test sub {
expect_read_journal $j, $file1;
expect_file_exists $file1->{relfilename};
expect_file_size $file1->{relfilename}, $file1->{size};
expect_file_mtime $file1->{relfilename}, $file1->{mtime};
expect_open_file my $fileobj = { mock => 1 }, $file1->{relfilename}, 1;
expect_treehash $fileobj, "not_a_treehash";
my ($res, $out) = run_command($options, $j);
ok !$res;
ok $out =~ /^TREEHASH MISSMATCH file1$/m;
check_ok($out, qw/treehash/);
};
};
it "should work when mtime does not match" => sub {
ordered_test sub {
expect_read_journal $j, $file1;
expect_file_exists $file1->{relfilename};
expect_file_size $file1->{relfilename}, $file1->{size};
expect_file_mtime $file1->{relfilename}, $file1->{mtime}+1;
expect_open_file my $fileobj = { mock => 1 }, $file1->{relfilename}, 1;
expect_treehash $fileobj, $file1->{treehash};
my ($res, $out) = run_command($options, $j);
ok $res;
ok $out =~ /^OK file1 $file1->{size} $file1->{treehash}$/m;
check_ok($out, qw/ok mtime/);
};
};
it "should work when size does not match" => sub {
ordered_test sub {
expect_read_journal $j, $file1;
expect_file_exists $file1->{relfilename};
expect_file_size $file1->{relfilename}, $file1->{size}+1;
expect_file_mtime $file1->{relfilename}, $file1->{mtime};
App::MtAws::Command::CheckLocalHash->expects("open_file")->never;
App::MtAws::TreeHash->expects("new")->never;
my ($res, $out) = run_command($options, $j);
ok !$res;
ok $out =~ /^SIZE MISSMATCH file1$/m;
check_ok($out, qw/size/);
};
};
it "should work when size is zero" => sub {
ordered_test sub {
expect_read_journal $j, $file1;
expect_file_exists $file1->{relfilename};
expect_file_size $file1->{relfilename}, 0;
expect_file_mtime $file1->{relfilename}, $file1->{mtime};
App::MtAws::Command::CheckLocalHash->expects("open_file")->never;
App::MtAws::TreeHash->expects("new")->never;
my ($res, $out) = run_command($options, $j);
ok !$res;
ok $out =~ /^ZERO SIZE file1$/m;
check_ok($out, qw/zero/);
};
};
it "should work when file is not exists" => sub {
ordered_test sub {
expect_read_journal $j, $file1;
expect_file_exists $file1->{relfilename}, 0;
( run in 0.646 second using v1.01-cache-2.11-cpan-364913b4093 )