Add an idempotence test for pruning.
[mailshears.git] / test / test_prune.rb
index 94b819622d69f4cb4aeb6b45f4c03b7a0f21b59f..a0e69417e0f633cf1eeba599ff4d31fd39ec5a36 100644 (file)
@@ -14,17 +14,11 @@ require 'prune/prune_runner'
 
 class TestPrune < MailshearsTest
 
-  def test_single_prune
+  def check_assertions(actual)
     cfg = configuration()
 
-    output_buffer = StringIO.new()
-
-    $stdout = output_buffer
-    PrunePlugin.run(cfg)
-    $stdout = STDOUT
-
-    actual = output_buffer.string()
-
+    # Both of our tests have the same expected output / results, so
+    # check them both using the same function.
     expected =
       "AgendavPrune - Removed user booger@example.com.\n" +
       "DavicalPrune - Removed user booger@example.com (Principal ID: 2).\n" +
@@ -86,4 +80,39 @@ class TestPrune < MailshearsTest
     assert(!maildir_exists('example.com/jeremy'))
   end
 
+
+  def test_single_prune()
+    # Run prune once and see what happens.
+    cfg = configuration()
+
+    output_buffer = StringIO.new()
+
+    $stdout = output_buffer
+    PrunePlugin.run(cfg)
+    $stdout = STDOUT
+
+    actual = output_buffer.string()
+
+    check_assertions(actual)
+  end
+
+
+  def test_double_prune
+    # Run prune twice. This should have the exact same output as
+    # running it once, since the second time around, there's nothing
+    # to prune.
+    cfg = configuration()
+
+    output_buffer = StringIO.new()
+
+    $stdout = output_buffer
+    PrunePlugin.run(cfg)
+    PrunePlugin.run(cfg)
+    $stdout = STDOUT
+
+    actual = output_buffer.string()
+
+    check_assertions(actual)
+  end
+
 end