Index: branches/release-35/t/lib/MT/Test.pm
===================================================================
--- branches/release-35/t/lib/MT/Test.pm (revision 1652)
+++ branches/release-35/t/lib/MT/Test.pm (revision 1927)
@@ -6,4 +6,6 @@
 use File::Spec;
 use MT;
+
+use Test::More;
 
 BEGIN {
@@ -34,7 +36,15 @@
     my $pkg = shift;
     foreach my $opt (@_) {
-        $pkg->init_db() if $opt eq ':db';
-        $pkg->init_test_db() if $opt eq ':testdb';
-        $pkg->sample_data() if $opt eq ':data';
+        if ($opt eq ':db') {
+            diag "Initializing database";
+            $pkg->init_db();
+        }
+        elsif ($opt eq ':testdb') {
+            $pkg->init_test_db();
+        }
+        elsif ($opt eq ':data') {
+            diag "Initializing sample data";
+            $pkg->sample_data();
+        }
     }
 }
@@ -74,11 +84,16 @@
 
     my $types = MT->registry('object_types');
-    my @classes = map { $types->{$_} } grep { $_ !~ /\./ } keys %$types;
+    $types->{$_} = MT->model($_) for
+        grep { MT->model($_) }
+        map  { $_ . ':meta' }
+        grep { MT->model($_)->meta_pkg }
+        sort keys %$types;
+    my @classes = map { $types->{$_} } grep { $_ !~ /\./ } sort keys %$types;
     foreach my $class (@classes) {
         if (ref($class) eq 'ARRAY') {
             next; #TODO for now - it won't hurt when we do driver-tests.
         }
-        else {
-            eval 'require '.$class or die $@;
+        elsif (!defined *{ $class . '::__properties' }) {
+            eval '# line ' . __LINE__ . ' ' . __FILE__ . "\n" . 'require '.$class or die $@;
         }
     }
@@ -109,4 +124,5 @@
     );
     eval {
+        # line __LINE__ __FILE__
         MT::Entry->remove;
         MT::Comment->remove;
@@ -151,4 +167,5 @@
     $blog->commenter_authenticators('enabled_TypeKey');
     $blog->save() or die "Couldn't save blog 1: ". $blog->errstr;
+    diag "Saved blog";
 
     require MT::Entry;
@@ -169,4 +186,5 @@
     $chuckd->save()
         or die "Couldn't save author record 2: " . $chuckd->errstr;
+    diag "Saved user Chuck D";
 
     my $bobd = MT::Author->new();
@@ -181,4 +199,5 @@
     $bobd->id(3);
     $bobd->save() or die "Couldn't save author record 3: " . $bobd->errstr;
+    diag "Saved user Bob D";
 
     my $johnd = MT::Author->new();
@@ -193,4 +212,5 @@
     $johnd->id(4);
     $johnd->save() or die "Couldn't save author record 4: " . $johnd->errstr;
+    diag "Saved user John Doe";
 
     my $hiro = MT::Author->new();
@@ -206,4 +226,9 @@
     $hiro->status(2);
     $hiro->save() or die "Couldn't save author record 5: " . $hiro->errstr;
+    diag "Saved user Hiro";
+
+    require MT::Role;
+    my ($admin_role, $author_role) = map { MT::Role->load({ name => $_ }) }
+        ('Blog Administrator', 'Author');
 
     require MT::Association;
@@ -211,5 +236,5 @@
     $assoc->author_id($chuckd->id);
     $assoc->blog_id(1);
-    $assoc->role_id(3);
+    $assoc->role_id($admin_role->id);
     $assoc->type(1);
     $assoc->save();
@@ -218,5 +243,5 @@
     $assoc->author_id($bobd->id);
     $assoc->blog_id(1);
-    $assoc->role_id(4);
+    $assoc->role_id($author_role->id);
     $assoc->type(1);
     $assoc->save();
@@ -225,5 +250,5 @@
     $assoc->author_id($hiro->id);
     $assoc->blog_id(1);
-    $assoc->role_id(3);
+    $assoc->role_id($admin_role->id);
     $assoc->type(1);
     $assoc->save();
@@ -255,4 +280,5 @@
         $entry->tags('rain', 'grandpa', 'strolling');
         $entry->save() or die "Couldn't save entry record 1: ".$entry->errstr;
+        diag "Saved entry #1";
     }
 
@@ -275,4 +301,5 @@
         $entry->id(2);
         $entry->save() or die "Couldn't save entry record 2: ".$entry->errstr;
+        diag "Saved entry #2";
     }
 
@@ -297,4 +324,5 @@
         $entry->tags('anemones');
         $entry->save() or die "Couldn't save entry record 3: ".$entry->errstr;
+        diag "Saved entry #3";
     }
 
@@ -327,4 +355,5 @@
         $ping->visible(1);
         $ping->save or die "Couldn't save TBPing record 1: " . $ping->errstr;
+        diag "Saved a trackback ping";
     }
 
@@ -355,4 +384,5 @@
         $cat->id(1);
         $cat->save or die "Couldn't save category record 1: ". $cat->errstr;
+        diag "Saved category foo";
     }
 
@@ -367,4 +397,5 @@
         $cat->id(2);
         $cat->save or die "Couldn't save category record 2: ". $cat->errstr;
+        diag "Saved category bar";
     }
 
@@ -379,4 +410,5 @@
         $tb->id(2);
         $tb->save or die "Couldn't save Trackback record 2: " . $tb->errstr;;
+        diag "Saved category bar's trackback target";
     }
 
@@ -391,4 +423,5 @@
         $cat->id(3);
         $cat->save or die "Couldn't save category record 3: ". $cat->errstr;
+        diag "Saved subcategory subfoo";
     }
 
@@ -427,4 +460,5 @@
                 $place->save
                     or die "Couldn't save placement record: ".$place->errstr;
+                diag "Placed entry Verse 3 in category foo";
             }
             if ($i == 4) {
@@ -436,4 +470,5 @@
                 $place->save
                     or die "Couldn't save placement record: ".$place->errstr;
+                diag "Placed entry Verse 4 in category subfoo";
             }
         }
@@ -458,4 +493,5 @@
         $cmt->id(1);
         $cmt->save() or die "Couldn't save comment record 1: ".$cmt->errstr;
+        diag "Saved comment #1";
 
         $cmt->id(11);
@@ -465,4 +501,5 @@
         $cmt->parent_id(1);
         $cmt->save() or die "Couldn't save comment record 11: ".$cmt->errstr;
+        diag "Saved child comment #11";
 
         $cmt->id(12);
@@ -472,4 +509,5 @@
         $cmt->parent_id(11);
         $cmt->save() or die "Couldn't save comment record 12: ".$cmt->errstr;
+        diag "Saved child comment #12";
     }
     # entry id 5 - 1 comment, commenting is off (closed)
@@ -587,4 +625,5 @@
     $tmpl->type('custom');
     $tmpl->save or die "Couldn't save template record 1: ".$tmpl->errstr;
+    diag "Saved blog-name template";
 
     ### Asset
@@ -600,4 +639,5 @@
     $asset->file_ext('jpg');
     $asset->image_width(640);
+    diag "Set image asset's width metadata field";
     $asset->image_height(480);
     $asset->mime_type('image/jpeg');
@@ -606,5 +646,7 @@
     $asset->created_by(1);
     $asset->tags('alpha', 'beta', 'gamma');
-    $asset->save;
+    diag "Tagged image asset";
+    $asset->save or die "Couldn't save asset record 1: " . $asset->errstr;
+    diag "Saved image asset";
 
     $asset->set_score('unit test', $bobd, 5, 1);
@@ -624,5 +666,6 @@
     $asset->created_on('19780131074500');
     $asset->tags('beta');
-    $asset->save;
+    $asset->save or die "Couldn't save file asset record: " . $asset->errstr;
+    diag "Saved file asset";
 
     $asset->set_score('unit test', $chuckd, 2, 1);
@@ -642,4 +685,5 @@
     $e4->set_score('unit test', $chuckd, 2, 1);
     $e4->set_score('unit test', $johnd, 3, 1);
+    diag "Saved scores for entry #4";
 
     ## Page
@@ -672,4 +716,5 @@
     $folder->id(20);
     $folder->save or die "Could'n sae folder record 20:" . $folder->errstr;
+    diag "Saved folder #20";
 
     $folder = MT::Folder->new();
