[Rt-commit] rt branch, 4.2/validate-after-shredding-in-tests, created. rt-4.0.8-573-gc6519c5
Ruslan Zakirov
ruz at bestpractical.com
Sat Nov 24 11:20:31 EST 2012
The branch, 4.2/validate-after-shredding-in-tests has been created
at c6519c5166474cc4ada7efad837f0fad37a4aa50 (commit)
- Log -----------------------------------------------------------------
commit 80ae47dbdd3bb2b8723337afabe8867ede46c10c
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Thu Mar 29 15:49:32 2012 +0400
move run_validator into RT::Test
diff --git a/lib/RT/Test.pm b/lib/RT/Test.pm
index aafeebc..82dd2c2 100644
--- a/lib/RT/Test.pm
+++ b/lib/RT/Test.pm
@@ -1097,6 +1097,43 @@ sub fetch_caught_mails {
sub clean_caught_mails {
unlink $tmp{'mailbox'};
}
+my $validator_path = "$RT::SbinPath/rt-validator";
+sub run_validator {
+ my $self = shift;
+ my %args = (check => 1, resolve => 0, force => 1, @_ );
+
+ my $cmd = $validator_path;
+ die "Couldn't find $cmd command" unless -f $cmd;
+
+ while( my ($k,$v) = each %args ) {
+ next unless $v;
+ $cmd .= " --$k '$v'";
+ }
+ $cmd .= ' 2>&1';
+
+ require IPC::Open2;
+ my ($child_out, $child_in);
+ my $pid = IPC::Open2::open2($child_out, $child_in, $cmd);
+ close $child_in;
+
+ my $result = do { local $/; <$child_out> };
+ close $child_out;
+ waitpid $pid, 0;
+
+ DBIx::SearchBuilder::Record::Cachable->FlushCache
+ if $args{'resolve'};
+
+ return ($?, $result);
+}
+
+sub db_is_valid {
+ local $Test::Builder::Level = $Test::Builder::Level + 1;
+
+ my $self = shift;
+ my ($ecode, $res) = $self->run_validator;
+ Test::More::is( $ecode, 0, 'no invalid records' )
+ or Test::More::diag "errors:\n$res";
+}
=head2 object_scrips_are
diff --git a/t/validator/group_members.t b/t/validator/group_members.t
index fbe7580..115a61e 100644
--- a/t/validator/group_members.t
+++ b/t/validator/group_members.t
@@ -35,45 +35,13 @@ sub load_or_create_group {
return $group;
}
-my $validator_path = "$RT::SbinPath/rt-validator";
-sub run_validator {
- my %args = (check => 1, resolve => 0, force => 1, @_ );
-
- my $cmd = $validator_path;
- die "Couldn't find $cmd command" unless -f $cmd;
-
- while( my ($k,$v) = each %args ) {
- next unless $v;
- $cmd .= " --$k '$v'";
- }
- $cmd .= ' 2>&1';
-
- require IPC::Open2;
- my ($child_out, $child_in);
- my $pid = IPC::Open2::open2($child_out, $child_in, $cmd);
- close $child_in;
-
- my $result = do { local $/; <$child_out> };
- close $child_out;
- waitpid $pid, 0;
-
- DBIx::SearchBuilder::Record::Cachable->FlushCache
- if $args{'resolve'};
-
- return ($?, $result);
-}
-
-{
- my ($ecode, $res) = run_validator();
- is $res, '', 'empty result';
-}
+RT::Test->db_is_valid;
{
my $group = load_or_create_group('test', Members => [] );
ok $group, "loaded or created a group";
- my ($ecode, $res) = run_validator();
- is $res, '', 'empty result';
+ RT::Test->db_is_valid;
}
# G1 -> G2
@@ -87,20 +55,18 @@ sub run_validator {
ok $group2->HasMember( $group1->id ), "has member";
ok $group2->HasMemberRecursively( $group1->id ), "has member";
- my ($ecode, $res) = run_validator();
- is $res, '', 'empty result';
+ RT::Test->db_is_valid;
$RT::Handle->dbh->do("DELETE FROM CachedGroupMembers");
DBIx::SearchBuilder::Record::Cachable->FlushCache;
ok !$group2->HasMemberRecursively( $group1->id ), "has no member, broken DB";
- ($ecode, $res) = run_validator(resolve => 1);
+ my ($ecode, $res) = RT::Test->run_validator(resolve => 1);
ok $group2->HasMember( $group1->id ), "has member";
ok $group2->HasMemberRecursively( $group1->id ), "has member";
- ($ecode, $res) = run_validator();
- is $res, '', 'empty result';
+ RT::Test->db_is_valid;
}
# G1 <- G2 <- G3 <- G4 <- G5
@@ -120,15 +86,14 @@ sub run_validator {
push @groups, $group;
}
- my ($ecode, $res) = run_validator();
- is $res, '', 'empty result';
+ RT::Test->db_is_valid;
$RT::Handle->dbh->do("DELETE FROM CachedGroupMembers");
DBIx::SearchBuilder::Record::Cachable->FlushCache;
ok !$groups[1]->HasMemberRecursively( $groups[0]->id ), "has no member, broken DB";
- ($ecode, $res) = run_validator(resolve => 1);
+ my ($ecode, $res) = RT::Test->run_validator(resolve => 1);
for ( my $i = 1; $i < @groups; $i++ ) {
ok $groups[$i]->HasMember( $groups[$i-1]->id ), "has member";
@@ -136,8 +101,7 @@ sub run_validator {
foreach 0..$i-1;
}
- ($ecode, $res) = run_validator();
- is $res, '', 'empty result';
+ RT::Test->db_is_valid;
}
# G1 <- (G2, G3, G4, G5)
@@ -152,8 +116,7 @@ sub run_validator {
my $parent = load_or_create_group( 'test1', Members => \@groups );
ok $parent, "loaded or created a group";
- my ($ecode, $res) = run_validator();
- is $res, '', 'empty result';
+ RT::Test->db_is_valid;
}
# G1 <- (G2, G3, G4) <- G5
@@ -171,7 +134,6 @@ sub run_validator {
my $parent = load_or_create_group( 'test1', Members => \@groups );
ok $parent, "loaded or created a group";
- my ($ecode, $res) = run_validator();
- is $res, '', 'empty result';
+ RT::Test->db_is_valid;
}
commit 261ba04ac9c8336188eb43cc3b068db93504e955
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Fri Apr 6 00:29:57 2012 +0400
check exit code when we expect DB to be invalid
diff --git a/t/validator/group_members.t b/t/validator/group_members.t
index 115a61e..7a37ed5 100644
--- a/t/validator/group_members.t
+++ b/t/validator/group_members.t
@@ -2,7 +2,7 @@
use strict;
use warnings;
-use RT::Test tests => 60;
+use RT::Test tests => 62;
sub load_or_create_group {
my $name = shift;
@@ -62,6 +62,7 @@ RT::Test->db_is_valid;
ok !$group2->HasMemberRecursively( $group1->id ), "has no member, broken DB";
my ($ecode, $res) = RT::Test->run_validator(resolve => 1);
+ isnt($ecode, 0, 'non-zero exit code');
ok $group2->HasMember( $group1->id ), "has member";
ok $group2->HasMemberRecursively( $group1->id ), "has member";
@@ -94,6 +95,7 @@ RT::Test->db_is_valid;
ok !$groups[1]->HasMemberRecursively( $groups[0]->id ), "has no member, broken DB";
my ($ecode, $res) = RT::Test->run_validator(resolve => 1);
+ isnt($ecode, 0, 'non-zero exit code');
for ( my $i = 1; $i < @groups; $i++ ) {
ok $groups[$i]->HasMember( $groups[$i-1]->id ), "has member";
commit c6519c5166474cc4ada7efad837f0fad37a4aa50
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Mon Apr 9 18:45:49 2012 +0400
validate database in tests after each wipeout
diff --git a/t/shredder/01basics.t b/t/shredder/01basics.t
index aea4e49..368c9ba 100644
--- a/t/shredder/01basics.t
+++ b/t/shredder/01basics.t
@@ -3,7 +3,7 @@ use strict;
use warnings;
use Test::Deep;
-use RT::Test::Shredder tests => 3;
+use RT::Test::Shredder tests => 4;
my $test = "RT::Test::Shredder";
$test->create_savepoint();
@@ -20,4 +20,6 @@ ok( $id, "load ticket" ) or diag( "error: $msg" );
my $shredder = $test->shredder_new();
$shredder->Wipeout( Object => $ticket );
+$test->db_is_valid;
+
cmp_deeply( $test->dump_current_and_savepoint(), "current DB equal to savepoint");
diff --git a/t/shredder/01ticket.t b/t/shredder/01ticket.t
index a65cdea..4ef4992 100644
--- a/t/shredder/01ticket.t
+++ b/t/shredder/01ticket.t
@@ -3,7 +3,7 @@ use strict;
use warnings;
use Test::Deep;
-use RT::Test::Shredder tests => 15;
+use RT::Test::Shredder tests => 20;
my $test = "RT::Test::Shredder";
$test->create_savepoint('clean');
@@ -26,6 +26,7 @@ use RT::Tickets;
my $shredder = $test->shredder_new();
$shredder->PutObjects( Objects => $tickets );
$shredder->WipeoutAll;
+ $test->db_is_valid;
}
cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
@@ -44,10 +45,12 @@ cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to sav
my $shredder = $test->shredder_new();
$shredder->PutObjects( Objects => $child );
$shredder->WipeoutAll;
+ $test->db_is_valid;
cmp_deeply( $test->dump_current_and_savepoint('parent_ticket'), "current DB equal to savepoint");
$shredder->PutObjects( Objects => $parent );
$shredder->WipeoutAll;
+ $test->db_is_valid;
}
cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
@@ -61,17 +64,18 @@ cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to sav
my $child = RT::Ticket->new( RT->SystemUser );
my ($cid) = $child->Create( Subject => 'test', Queue => 1 );
- ok( $cid, "created new ticket" );
+ ok( $cid, "created new ticket #$cid" );
($status, $msg) = $parent->AddLink( Type => 'DependsOn', Target => $cid );
ok( $status, "Added link between tickets") or diag("error: $msg");
my $shredder = $test->shredder_new();
$shredder->PutObjects( Objects => $child );
$shredder->WipeoutAll;
-
+ $test->db_is_valid;
cmp_deeply( $test->dump_current_and_savepoint('parent_ticket'), "current DB equal to savepoint");
$shredder->PutObjects( Objects => $parent );
$shredder->WipeoutAll;
+ $test->db_is_valid;
}
cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
diff --git a/t/shredder/02group_member.t b/t/shredder/02group_member.t
index 4f881a0..4170c94 100644
--- a/t/shredder/02group_member.t
+++ b/t/shredder/02group_member.t
@@ -3,7 +3,7 @@ use strict;
use warnings;
use Test::Deep;
-use RT::Test::Shredder tests => 22;
+use RT::Test::Shredder tests => 26;
my $test = "RT::Test::Shredder";
### nested membership check
@@ -41,14 +41,17 @@ my $test = "RT::Test::Shredder";
my $shredder = $test->shredder_new();
$shredder->PutObjects( Objects => $members );
$shredder->WipeoutAll();
+ $test->db_is_valid;
cmp_deeply( $test->dump_current_and_savepoint('buadd'), "current DB equal to savepoint");
$shredder->PutObjects( Objects => $user );
$shredder->WipeoutAll();
+ $test->db_is_valid;
cmp_deeply( $test->dump_current_and_savepoint('bucreate'), "current DB equal to savepoint");
$shredder->PutObjects( Objects => [$pgroup, $cgroup] );
$shredder->WipeoutAll();
+ $test->db_is_valid;
cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
}
@@ -85,6 +88,7 @@ my $test = "RT::Test::Shredder";
my $shredder = $test->shredder_new();
$shredder->PutObjects( Objects => $member );
$shredder->WipeoutAll();
+ $test->db_is_valid;
$ticket = RT::Ticket->new( RT->SystemUser );
($status, $msg) = $ticket->Load( $id );
diff --git a/t/shredder/02queue.t b/t/shredder/02queue.t
index 5b83e0f..00213ec 100644
--- a/t/shredder/02queue.t
+++ b/t/shredder/02queue.t
@@ -3,7 +3,7 @@ use strict;
use warnings;
use Test::Deep;
-use RT::Test::Shredder tests => 16;
+use RT::Test::Shredder tests => 21;
my $test = "RT::Test::Shredder";
diag 'simple queue' if $ENV{TEST_VERBOSE};
@@ -16,6 +16,7 @@ diag 'simple queue' if $ENV{TEST_VERBOSE};
my $shredder = $test->shredder_new();
$shredder->PutObjects( Objects => $queue );
$shredder->WipeoutAll;
+ $test->db_is_valid;
cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
}
@@ -39,6 +40,7 @@ diag 'queue with scrip' if $ENV{TEST_VERBOSE};
my $shredder = $test->shredder_new();
$shredder->PutObjects( Objects => $queue );
$shredder->WipeoutAll;
+ $test->db_is_valid;
cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
}
@@ -60,6 +62,7 @@ diag 'queue with template' if $ENV{TEST_VERBOSE};
my $shredder = $test->shredder_new();
$shredder->PutObjects( Objects => $queue );
$shredder->WipeoutAll;
+ $test->db_is_valid;
cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
}
@@ -83,6 +86,7 @@ diag 'queue with a right granted' if $ENV{TEST_VERBOSE};
my $shredder = $test->shredder_new();
$shredder->PutObjects( Objects => $queue );
$shredder->WipeoutAll;
+ $test->db_is_valid;
cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
}
@@ -108,6 +112,7 @@ diag 'queue with a watcher' if $ENV{TEST_VERBOSE};
my $shredder = $test->shredder_new();
$shredder->PutObjects( Objects => $queue );
$shredder->WipeoutAll;
+ $test->db_is_valid;
cmp_deeply( $test->dump_current_and_savepoint('bqcreate'), "current DB equal to savepoint");
# $shredder->PutObjects( Objects => $group );
diff --git a/t/shredder/02template.t b/t/shredder/02template.t
index 2f9b4ab..27c9bac 100644
--- a/t/shredder/02template.t
+++ b/t/shredder/02template.t
@@ -3,7 +3,7 @@ use strict;
use warnings;
use Test::Deep;
-use RT::Test::Shredder tests => 7;
+use RT::Test::Shredder tests => 10;
my $test = "RT::Test::Shredder";
diag 'global template' if $ENV{TEST_VERBOSE};
@@ -19,6 +19,7 @@ diag 'global template' if $ENV{TEST_VERBOSE};
my $shredder = $test->shredder_new();
$shredder->PutObjects( Objects => $template );
$shredder->WipeoutAll;
+ $test->db_is_valid;
cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
}
@@ -36,6 +37,7 @@ diag 'local template' if $ENV{TEST_VERBOSE};
my $shredder = $test->shredder_new();
$shredder->PutObjects( Objects => $template );
$shredder->WipeoutAll;
+ $test->db_is_valid;
cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
}
@@ -63,5 +65,6 @@ diag 'template used in scrip' if $ENV{TEST_VERBOSE};
my $shredder = $test->shredder_new();
$shredder->PutObjects( Objects => $template );
$shredder->WipeoutAll;
+ $test->db_is_valid;
cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
}
diff --git a/t/shredder/02user.t b/t/shredder/02user.t
index 776a26d..0aa80ee 100644
--- a/t/shredder/02user.t
+++ b/t/shredder/02user.t
@@ -3,7 +3,7 @@ use strict;
use warnings;
use Test::Deep;
-use RT::Test::Shredder tests => 8;
+use RT::Test::Shredder tests => 10;
my $test = "RT::Test::Shredder";
$test->create_savepoint('clean');
@@ -38,6 +38,7 @@ $test->create_savepoint('aucreate'); # after user create
my $shredder = $test->shredder_new();
$shredder->PutResolver( BaseClass => 'RT::User', Code => $resolver );
$shredder->Wipeout( Object => $user );
+ $test->db_is_valid;
cmp_deeply( $test->dump_current_and_savepoint('bucreate'), "current DB equal to savepoint");
}
@@ -49,5 +50,6 @@ $test->create_savepoint('aucreate'); # after user create
my $shredder = $test->shredder_new();
eval { $shredder->Wipeout( Object => $user ) };
ok($@, "wipeout throw exception if no resolvers");
+ $test->db_is_valid;
cmp_deeply( $test->dump_current_and_savepoint('aucreate'), "current DB equal to savepoint");
}
diff --git a/t/shredder/03plugin_tickets.t b/t/shredder/03plugin_tickets.t
index a909c89..dd2b120 100644
--- a/t/shredder/03plugin_tickets.t
+++ b/t/shredder/03plugin_tickets.t
@@ -3,7 +3,7 @@ use strict;
use warnings;
use Test::Deep;
-use RT::Test::Shredder tests => 45;
+use RT::Test::Shredder tests => 49;
my $test = "RT::Test::Shredder";
use_ok('RT::Shredder');
@@ -56,6 +56,7 @@ use_ok('RT::Tickets');
my $shredder = $test->shredder_new();
$shredder->PutObjects( Objects => \@objs );
$shredder->WipeoutAll;
+ $test->db_is_valid;
}
cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
@@ -100,6 +101,7 @@ cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to sav
my $shredder = $test->shredder_new();
$shredder->PutObjects( Objects => \@objs );
$shredder->WipeoutAll;
+ $test->db_is_valid;
}
cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
@@ -138,6 +140,7 @@ cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to sav
my $shredder = $test->shredder_new();
$shredder->PutObjects( Objects => \@objs );
$shredder->WipeoutAll;
+ $test->db_is_valid;
my $ticket = RT::Ticket->new( RT->SystemUser );
$ticket->Load( $cid1 );
@@ -145,5 +148,6 @@ cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to sav
$shredder->PutObjects( Objects => $ticket );
$shredder->WipeoutAll;
+ $test->db_is_valid;
}
cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
-----------------------------------------------------------------------
More information about the Rt-commit
mailing list