diff --git a/_test/tests/inc/common_saveWikiText.test.php b/_test/tests/inc/common_saveWikiText.test.php
index 2d4e855d0412dde5f1ae251f5d8c9298ea5444b1..ede0fdf291e49c701a594bf7579fc4094103f382 100644
--- a/_test/tests/inc/common_saveWikiText.test.php
+++ b/_test/tests/inc/common_saveWikiText.test.php
@@ -150,4 +150,254 @@ class common_saveWikiText_test extends DokuWikiTest {
         $this->assertEquals(0, $revinfo['sizechange']);
 
     }
+
+    /**
+     * Execute a whole bunch of saves on the same page and check the results
+     */
+    function test_savesequencedeleteexternalrevision() {
+        $page = 'page2';
+        $file = wikiFN($page);
+
+        // create the page
+        $this->assertFileNotExists($file);
+        saveWikiText($page, 'teststring', 'first save', false);
+        $this->assertFileExists($file);
+        $lastmod = filemtime($file);
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(1, count($revisions));
+        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
+        $this->assertEquals('first save', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_CREATE, $revinfo['type']);
+        $this->assertEquals(10, $revinfo['sizechange']);
+
+        sleep(1); // wait for new revision ID
+
+        // delete
+        saveWikiText($page, '', 'second save', false);
+        clearstatcache(false, $file);
+        $this->assertFileNotExists($file);
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(2, count($revisions));
+        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
+        $this->assertEquals('second save', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_DELETE, $revinfo['type']);
+        $this->assertEquals(-10, $revinfo['sizechange']);
+
+        sleep(1); // wait for new revision ID
+
+        // create external edit
+        file_put_contents($file, 'teststring5');
+
+        sleep(1); // wait for new revision ID
+
+        // save on top of external edit
+        saveWikiText($page, 'teststring6', 'third save', false);
+        clearstatcache(false, $file);
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(4, count($revisions)); // two more revisions now!
+        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
+        $this->assertEquals('third save', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
+        $this->assertEquals(0, $revinfo['sizechange']);
+
+        $revinfo = $pagelog->getRevisionInfo($revisions[1]);
+        $this->assertEquals('external edit', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
+        $this->assertEquals(11, $revinfo['sizechange']);
+
+    }
+
+    /**
+     * Execute a whole bunch of saves on the same page and check the results
+     */
+    function test_saveexternalasfirst() {
+        $page = 'page3';
+        $file = wikiFN($page);
+
+        // create the page
+        $this->assertFileNotExists($file);
+
+        // create external edit
+        file_put_contents($file, 'teststring');
+
+        sleep(1); // wait for new revision ID
+
+        // save on top of external edit
+        saveWikiText($page, 'teststring6', 'first save', false);
+        clearstatcache(false, $file);
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(2, count($revisions)); // two more revisions now!
+        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
+        $this->assertEquals('first save', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
+        $this->assertEquals(1, $revinfo['sizechange']);
+
+        $revinfo = $pagelog->getRevisionInfo($revisions[1]);
+        $this->assertEquals('external edit', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
+        $this->assertEquals(10, $revinfo['sizechange']);
+
+    }
+
+    /**
+     * Execute a whole bunch of saves on the same page and check the results
+     */
+    function test_savesequenceexternaldeleteedit() {
+        $page = 'page4';
+        $file = wikiFN($page);
+
+        // create the page
+        $this->assertFileNotExists($file);
+        saveWikiText($page, 'teststring', 'first save', false);
+        $this->assertFileExists($file);
+        $lastmod = filemtime($file);
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(1, count($revisions));
+        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
+        $this->assertEquals('first save', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_CREATE, $revinfo['type']);
+        $this->assertEquals(10, $revinfo['sizechange']);
+
+        sleep(1); // wait for new revision ID
+
+
+        // create external delete
+        unlink($file);
+        clearstatcache(false, $file);
+
+        sleep(1); // wait for new revision ID
+
+        // save on top of external delete. save is seen as creation
+        saveWikiText($page, 'teststring6', 'second save', false);
+        clearstatcache(false, $file);
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(2, count($revisions)); // one more revisions now!
+        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
+        $this->assertEquals('second save', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_CREATE, $revinfo['type']);
+        $this->assertEquals(11, $revinfo['sizechange']);
+
+        $revinfo = $pagelog->getRevisionInfo($revisions[1]);
+        $this->assertEquals('first save', $revinfo['sum']);
+
+    }
+
+    /**
+     * Execute a whole bunch of saves on the same page and check the results
+     */
+    function test_savesequencerevert() {
+        global $REV;
+
+        $page = 'page5';
+        $file = wikiFN($page);
+
+        // create the page
+        $this->assertFileNotExists($file);
+        saveWikiText($page, 'teststring', 'first save', false);
+        $this->assertFileExists($file);
+        $lastmod = filemtime($file);
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(1, count($revisions));
+        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
+        $this->assertEquals('first save', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_CREATE, $revinfo['type']);
+        $this->assertEquals(10, $revinfo['sizechange']);
+
+        sleep(1); // wait for new revision ID
+
+        // save with same content should be ignored
+        saveWikiText($page, 'teststring', 'second save', false);
+        clearstatcache(false, $file);
+        $this->assertEquals($lastmod, filemtime($file));
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(1, count($revisions));
+
+        // update the page with new text
+        saveWikiText($page, 'teststring2long', 'third save', false);
+        clearstatcache(false, $file);
+        $newmod = filemtime($file);
+        $this->assertNotEquals($lastmod, $newmod);
+        $lastmod = $newmod;
+        $revertrev = $newmod;
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(2, count($revisions));
+        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
+        $this->assertEquals('third save', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
+        $this->assertEquals(5, $revinfo['sizechange']);
+
+        sleep(1); // wait for new revision ID
+
+        // add a minor edit (unauthenticated)
+        saveWikiText($page, 'teststring3long', 'fourth save', true);
+        clearstatcache(false, $file);
+        $newmod = filemtime($file);
+        $this->assertNotEquals($lastmod, $newmod);
+        $lastmod = $newmod;
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(3, count($revisions));
+        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
+        $this->assertEquals('fourth save', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_EDIT, $revinfo['type']);
+        $this->assertEquals(0, $revinfo['sizechange']);
+
+        sleep(1); // wait for new revision ID
+
+        // add a minor edit (authenticated)
+        $_SERVER['REMOTE_USER'] = 'user';
+        saveWikiText($page, 'teststring4', 'fifth save', true);
+        clearstatcache(false, $file);
+        $newmod = filemtime($file);
+        $this->assertNotEquals($lastmod, $newmod);
+        $lastmod = $newmod;
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(4, count($revisions));
+        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
+        $this->assertEquals('fifth save', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_MINOR_EDIT, $revinfo['type']);
+        $this->assertEquals(-4, $revinfo['sizechange']);
+
+        sleep(1); // wait for new revision ID
+
+        // restore
+        $REV = $revertrev;
+        saveWikiText($page, 'teststring2long', 'sixth save', true);
+        clearstatcache(false, $file);
+        $this->assertFileExists($file);
+        $newmod = filemtime($file);
+        $this->assertNotEquals($lastmod, $newmod);
+
+        $pagelog = new PageChangeLog($page);
+        $revisions = $pagelog->getRevisions(-1, 200);
+        $this->assertEquals(5, count($revisions));
+        $revinfo = $pagelog->getRevisionInfo($revisions[0]);
+        $this->assertEquals('sixth save', $revinfo['sum']);
+        $this->assertEquals(DOKU_CHANGE_TYPE_REVERT, $revinfo['type']);
+        $this->assertEquals($REV, $revinfo['extra']);
+        $this->assertEquals(4, $revinfo['sizechange']);
+        $REV = '';
+    }
+
 }