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 )