diff --git modules/field/modules/text/text.test modules/field/modules/text/text.test
index ee71414..c60d367 100644
--- modules/field/modules/text/text.test
+++ modules/field/modules/text/text.test
@@ -510,4 +510,185 @@ class TextTranslationTestCase extends DrupalWebTestCase {
     $this->assertNoText($body[0], t('The body field with delta @delta is hidden.', array('@delta' => 0)));
     $this->assertText($body[1], t('The body field with delta @delta is shown.', array('@delta' => 1)));
   }
+
+}
+
+/**
+ * Tests the teaser &lt;!--break--&gt; tag handling.
+ */
+class TeaserBreakTagTest extends DrupalWebTestCase {
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Teaser break tag',
+      'description' => 'Test the teaser &lt;!--break--&gt; delimiter.',
+      'group' => 'Field types',
+    );
+  }
+
+  function setUp() {
+    parent::setUp();
+
+    $web_user = $this->drupalCreateUser(array(
+      'create article content',
+      'create page content',
+      'administer filters',
+      filter_permission_name(filter_format_load('filtered_html')),
+      filter_permission_name(filter_format_load('full_html')),
+      'administer content types',
+      'access administration pages',
+      'bypass node access',
+      'administer nodes',
+    ));
+    $this->drupalLogin($web_user);
+  }
+
+  /**
+   * Tests the teaser &lt;!--break--&gt; tag handling for a node and the
+   * front page.
+   */
+  function testTeaserBreakTag() {
+    $langcode = LANGUAGE_NONE;
+    // Text field display formats that could be trimmed with the break tag.
+    $display_formats = array('text_summary_or_trimmed', 'text_trimmed');
+    foreach($display_formats as $display_format) {
+      foreach(filter_formats() as $filter_object) {
+        $filter = $filter_object->format;
+        $teaser = 'teaser_' . $this->randomName(32);
+        $body = 'body_' . $this->randomName(32);
+        $title = 'title_' . $this->randomName(8);
+
+        // Create node.
+        $edit = array();
+        $edit['title'] = $title;
+        $edit["body[$langcode][0][value]"] = "$teaser <!--break--> $body";
+        $edit["body[$langcode][0][format]"] = $filter;
+        $edit['promote'] = 1;
+        $this->drupalPost('node/add/article', $edit, t('Save'));
+        $node = $this->drupalGetNodeByTitle($edit['title']);
+
+        // Set display format for teasers.
+        $edit2 = array('fields[body][type]' => $display_format);
+        $this->drupalPost('admin/structure/types/manage/article/display/teaser', $edit2, t('Save'));
+
+        // Test front page.
+        $this->drupalGet('node');
+        $this->assertText($node->title, t("Node title appears on the front page"
+          . " for teaser display format '$display_format' and filter  '$filter'."));
+        $this->assertText($teaser, t("The teaser text appears on the front page"
+          . " for teaser display format '$display_format' and filter  '$filter'."));
+        $this->assertNoText('<!--break-->', t("The break tag does not appear on the front page"
+          . " for teaser display format '$display_format' and filter  '$filter'."));
+        $this->assertNoRaw('<!--break-->', t("The break tag does not appear on the front page"
+          . " for teaser display format '$display_format' and filter  '$filter'."));
+        $this->assertNoText($body, t("The body text does not appear on the front page"
+          . " for teaser display format '$display_format' and filter  '$filter'."));
+
+        // Test full node view.
+        $this->drupalGet('node/' . $node->nid);
+        $this->assertText($node->title, t("Node title appears in full node view"
+          . " for teaser display format '$display_format' and filter  '$filter'."));
+        $this->assertText($teaser, t("The teaser text appears in full node view"
+          . " for teaser display format '$display_format' and filter  '$filter'."));
+        if ($filter == 'plain_text') {
+          $this->assertRaw('&lt;!--break--&gt;', t("The break tag appears encoded"
+          . " in full node view for teaser display format '$display_format'"
+          . " and filter  '$filter'."));
+        }
+        else if ($filter == 'filtered_html') {
+          $this->assertNoText('<!--break-->', t("The break tag does not appear"
+          . " in full node view for teaser display format '$display_format'"
+          . " and filter  '$filter'."));
+          $this->assertNoRaw('<!--break-->', t("The break tag does not appear"
+          . " as comment in full node view for teaser display format '$display_format'"
+          . " and filter  '$filter'."));
+        }
+        else {
+          $this->assertNoText('<!--break-->', t("The break tag does not appear"
+          . " in full node view for teaser display format '$display_format'"
+          . " and filter  '$filter'."));
+          $this->assertRaw('<!--break-->', t("The break appears as comment"
+          . " in full node view for teaser display format '$display_format'"
+          . " and filter  '$filter'."));
+        }
+        $this->assertText($body, t("The body appears in full node view"
+          . " for teaser display format '$display_format' and filter  '$filter'."));
+      }
+    }
+  }
+
+  /**
+   * Test the break tag survial in _text_sanitize.
+   */
+  function testSanitizeBreakTag() {
+    $langcode = LANGUAGE_NONE;
+    $item = array(
+      'value' => 'Teaser<!--break-->Body',
+      'format' => 'filtered_html',
+    );
+
+    // Use the pseudo column 'value_for_trimming' for sanitizing.
+    $instance['settings']['text_processing'] = FALSE;
+    $result = _text_sanitize($instance, $langcode, $item, 'value_for_trimming');
+    $expected = 'Teaser<!--break-->Body';
+    $success = $this->assertEqual($result, $expected, 'Break tag survives HTML escaping.');
+    if (!$success) {
+      $this->verbose("\nResult:\n'" . $result . "'\n<hr />\nExpected:\n'"
+        . $expected . "'");
+    }
+
+    $instance['settings']['text_processing'] = TRUE;
+    $expected = "<p>Teaser</p>\n<!--break--><p>Body</p>\n";
+    $result = _text_sanitize($instance, $langcode, $item, 'value_for_trimming');
+    $success = $this->assertEqual($result, $expected, 'Break tag survives filters.');
+    if (!$success) {
+      $this->verbose("\nResult:\n'" . $result . "'\n<hr />\nExpected:\n'"
+        . $expected . "'");
+    }
+
+
+    // Repeat the tests without a break tag, i.e. a simple text.
+    $item['value'] = 'No teaser';
+
+    $instance['settings']['text_processing'] = FALSE;
+    $result = _text_sanitize($instance, $langcode, $item, 'value_for_trimming');
+    $expected = 'No teaser';
+    $success = $this->assertEqual($result, $expected, 'A simple text without filters is unchanged.');
+    if (!$success) {
+      $this->verbose("\nResult:\n'" . $result . "'\n<hr />\nExpected:\n'"
+        . $expected . "'");
+    }
+
+    $instance['settings']['text_processing'] = TRUE;
+    $expected = "<p>No teaser</p>\n";
+    $result = _text_sanitize($instance, $langcode, $item, 'value_for_trimming');
+    $success = $this->assertEqual($result, $expected, 'A normal text is normally filtered.');
+    if (!$success) {
+      $this->verbose("\nResult:\n'" . $result . "'\n<hr />\nExpected:\n'"
+        . $expected . "'");
+    }
+
+
+    // Test with normal 'value' column, i.e. no saving of break tag.
+    $item['value'] = 'Teaser<!--break-->Body';
+
+    $instance['settings']['text_processing'] = FALSE;
+    $result = _text_sanitize($instance, $langcode, $item, 'value');
+    $expected = 'Teaser&lt;!--break--&gt;Body';
+    $success = $this->assertEqual($result, $expected, 'No saving of break tag, thus break tag is encoded as HTML comment.');
+    if (!$success) {
+      $this->verbose("\nResult:\n'" . $result . "'\n<hr />\nExpected:\n'"
+        . $expected . "'");
+    }
+
+    $instance['settings']['text_processing'] = TRUE;
+    $result = _text_sanitize($instance, $langcode, $item, 'value');
+    $expected = "<p>TeaserBody</p>\n";
+    $success = $this->assertEqual($result, $expected, 'No saving of break tag, thus break tag is filtered out.');
+    if (!$success) {
+      $this->verbose("\nResult:\n'" . $result . "'\n<hr />\nExpected:\n'"
+        . $expected . "'");
+    }
+  }
+
 }
