diff --git a/modules/comment/comment.module b/modules/comment/comment.module
index 16996f6ddc1868090bafcb5c24bf743f6959fd43..89c5c45573c251595c0b9aac24dad308ffa69ffd 100644
--- a/modules/comment/comment.module
+++ b/modules/comment/comment.module
@@ -329,18 +329,15 @@ function comment_get_recent($number = 10) {
     // Step 2: From among the comments on the nodes selected in the first query,
     //         find the $number of most recent comments.
     // Using Query Builder here for the IN-Statement.
-    $result = db_select('comment', 'c')
-      ->fields('c', array('nid', 'subject', 'cid', 'timestamp') )
-      ->innerJoin('node', 'n', 'n.nid = c.nid')
-      ->condition('c.nid', $nids, 'IN')
-      ->condition('c.status', COMMENT_PUBLISHED)
-      ->condition('n.status', 1)
-      ->orderBy('c.cid', 'DESC')
-      ->range(0, $number)
-      ->execute();
-    foreach ($result as $comment) {
-     $comments[] = $comment;
-    }
+    $query = db_select('comment', 'c');
+    $query->fields('c', array('nid', 'subject', 'cid', 'timestamp'));
+    $query->innerJoin('node', 'n', 'n.nid = c.nid');
+    $query->condition('c.nid', $nids, 'IN');
+    $query->condition('c.status', COMMENT_PUBLISHED);
+    $query->condition('n.status', 1);
+    $query->orderBy('c.cid', 'DESC');
+    $query->range(0, $number);
+    $comments = $query->execute()->fetchAll();
   }
 
   return $comments;
diff --git a/modules/comment/comment.test b/modules/comment/comment.test
index afd04d1f88343e81e95af14d1c0e92b6c664bb38..57a62823e2ebff011b1e959efd59f678b4251737 100644
--- a/modules/comment/comment.test
+++ b/modules/comment/comment.test
@@ -9,7 +9,7 @@ class CommentHelperCase extends DrupalWebTestCase {
   function setUp() {
     parent::setUp('comment');
     // Create users.
-    $this->admin_user = $this->drupalCreateUser(array('administer content types', 'administer comments', 'administer permissions'));
+    $this->admin_user = $this->drupalCreateUser(array('administer content types', 'administer comments', 'administer permissions', 'administer blocks'));
     $this->web_user = $this->drupalCreateUser(array('access comments', 'post comments', 'create article content'));
 
     $this->drupalLogin($this->web_user);
@@ -17,17 +17,6 @@ class CommentHelperCase extends DrupalWebTestCase {
     $this->drupalLogout();
   }
 
-  /**
-   * Test comments as part of RSS feed.
-   */
-  function testCommentRSS() {
-    $this->drupalLogin($this->web_user);
-    $comment = $this->postComment($this->node, $this->randomName(), $this->randomName());
-    $this->drupalGet('rss.xml');
-    $raw = '<comments>' . url('node/' . $this->node->nid, array('fragment' => 'comments', 'absolute' => TRUE)) . '</comments>';
-    $this->assertRaw($raw, t('Comments as part of RSS feed.'));
-  }
-
   /**
    * Post comment.
    *
@@ -61,7 +50,9 @@ class CommentHelperCase extends DrupalWebTestCase {
 
     // Get comment.
     if ($contact !== TRUE) { // If true then attempting to find error message.
-      $this->assertText($subject, 'Comment subject posted.');
+      if ($subject) {
+        $this->assertText($subject, 'Comment subject posted.');
+      }
       $this->assertText($comment, 'Comment body posted.');
       $this->assertTrue((!empty($match) && !empty($match[1])), t('Comment id found.'));
     }
@@ -281,11 +272,11 @@ class CommentInterfaceTest extends CommentHelperCase {
     $this->assertText($subject_text, t('Individual comment subject found.'));
     $this->assertText($comment_text, t('Individual comment body found.'));
 
-    // Reply to comment.
+    // Reply to comment without a subject.
     $this->drupalGet('comment/reply/' . $this->node->nid . '/' . $comment->id);
     $this->assertText($subject_text, t('Individual comment-reply subject found.'));
     $this->assertText($comment_text, t('Individual comment-reply body found.'));
-    $reply = $this->postComment(NULL, $this->randomName(), $this->randomName());
+    $reply = $this->postComment(NULL, '', $this->randomName());
     $reply_loaded = comment_load($reply->id);
     $this->assertTrue($this->commentExists($reply, TRUE), t('Reply found.'));
     $this->assertEqual($comment->id, $reply_loaded->pid, t('Pid of a reply to a comment is set correctly.'));
@@ -348,22 +339,7 @@ class CommentInterfaceTest extends CommentHelperCase {
     $this->drupalGet('node/' . $this->node->nid);
     $this->assertFalse($this->commentExists($comment), t('Comment not found.'));
     $this->assertFalse($this->commentExists($reply, TRUE), t('Reply not found.'));
-  }
-}
 
-class CommentNodePage extends CommentHelperCase {
-  function getInfo() {
-    return array(
-      'name' => t('Comment on a node page'),
-      'description' => t('Test comment form on a node page.'),
-      'group' => t('Comment'),
-    );
-  }
-
-  /**
-   * Test comment form on node page.
-   */
-  function testFormOnPage() {
     // Enabled comment form on node page.
     $this->drupalLogin($this->admin_user);
     $this->setCommentForm(TRUE);
@@ -380,7 +356,6 @@ class CommentNodePage extends CommentHelperCase {
     $this->drupalLogin($this->admin_user);
     $this->setCommentForm(FALSE);
   }
-
 }
 
 class CommentAnonymous extends CommentHelperCase {
@@ -558,32 +533,81 @@ class CommentApprovalTest extends CommentHelperCase {
   }
 }
 
-class CommentBlockTestCase extends DrupalWebTestCase {
+/**
+ * Functional tests for the comment module blocks.
+ */
+class CommentBlockFunctionalTest extends CommentHelperCase {
   function getInfo() {
     return array(
-      'name' => t('Block availability'),
-      'description' => t('Check if the recent comments block is available.'),
+      'name' => t('Comment blocks'),
+      'description' => t('Test comment block functionality.'),
       'group' => t('Comment'),
     );
   }
 
-  function setUp() {
-    parent::setUp('comment');
+  /**
+   * Test the recent comments block.
+   */
+  function testRecentCommentBlock() {
+    $this->drupalLogin($this->admin_user);
+
+    // Set the block to a region to confirm block is available.
+    $edit = array(
+      'comment_recent[region]' => 'left',
+    );
+    $this->drupalPost('admin/build/block', $edit, t('Save blocks'));
+    $this->assertText(t('The block settings have been updated.'), t('Block saved to left region.'));
+
+    // Set block title and variables.
+    $block = array(
+      'title' => $this->randomName(),
+      'comment_block_count' => 2,
+    );
+    $this->drupalPost('admin/build/block/configure/comment/recent', $block, t('Save block'));
+    $this->assertText(t('The block configuration has been saved.'), t('Block saved.'));
+
+    // Add some test comments, one without a subject.
+    $comment1 = $this->postComment($this->node, $this->randomName(), $this->randomName());
+    $comment2 = $this->postComment($this->node, $this->randomName(), $this->randomName());
+    $comment3 = $this->postComment($this->node, '', $this->randomName());
 
-    // Create and login user
-    $admin_user = $this->drupalCreateUser(array('administer blocks'));
-    $this->drupalLogin($admin_user);
+    // Test that a user without the 'access comments' permission can not see the block.
+    $this->drupalLogout();
+    $this->drupalGet('');
+    $this->assertNoText($block['title'], t('Block was not found.'));
+
+    $this->drupalLogin($this->web_user);
+    $this->drupalGet('');
+    $this->assertText($block['title'], t('Block was found.'));
+
+    // Test the only the 2 latest comments are shown and in the proper order.
+    $this->assertNoText($comment1->subject, t('Comment not found in block.'));
+    $this->assertText($comment2->subject, t('Comment found in block.'));
+    $this->assertText($comment3->comment, t('Comment found in block.'));
+    $this->assertTrue(strpos($this->drupalGetContent(), $comment3->comment) < strpos($this->drupalGetContent(), $comment2->subject), t('Comments were ordered correctly in block.'));
   }
+}
 
-  function testRecentCommentBlock() {
-    // Set block title to confirm that the interface is availble.
-    $this->drupalPost('admin/build/block/configure/comment/recent', array('title' => $this->randomName(8)), t('Save block'));
-    $this->assertText(t('The block configuration has been saved.'), t('Block configuration set.'));
+/**
+ * Unit tests for comment module integration with RSS feeds.
+ */
+class CommentRSSUnitTest extends CommentHelperCase {
+  function getInfo() {
+    return array(
+      'name' => t('Comment RSS'),
+      'description' => t('Test comments as part of an RSS feed.'),
+      'group' => t('Comment'),
+    );
+  }
 
-    // Set the block to a region to confirm block is availble.
-    $edit = array();
-    $edit['comment_recent[region]'] = 'footer';
-    $this->drupalPost('admin/build/block', $edit, t('Save blocks'));
-    $this->assertText(t('The block settings have been updated.'), t('Block successfully move to footer region.'));
+  /**
+   * Test comments as part of an RSS feed.
+   */
+  function testCommentRSS() {
+    $this->drupalLogin($this->web_user);
+    $comment = $this->postComment($this->node, $this->randomName(), $this->randomName());
+    $this->drupalGet('rss.xml');
+    $raw = '<comments>' . url('node/' . $this->node->nid, array('fragment' => 'comments', 'absolute' => TRUE)) . '</comments>';
+    $this->assertRaw($raw, t('Comments as part of RSS feed.'));
   }
 }