Fix tests so they pass in -R mode
diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py
index 844cee0..f3f9215 100644
--- a/Lib/test/test_decimal.py
+++ b/Lib/test/test_decimal.py
@@ -42,11 +42,13 @@
 
 # Tests are built around these assumed context defaults.
 # test_main() restores the original context.
-ORIGINAL_CONTEXT = getcontext().copy()
-DefaultContext.prec = 9
-DefaultContext.rounding = ROUND_HALF_EVEN
-DefaultContext.traps = dict.fromkeys(Signals, 0)
-setcontext(DefaultContext)
+def init():
+    global ORIGINAL_CONTEXT
+    ORIGINAL_CONTEXT = getcontext().copy()
+    DefaultContext.prec = 9
+    DefaultContext.rounding = ROUND_HALF_EVEN
+    DefaultContext.traps = dict.fromkeys(Signals, 0)
+    setcontext(DefaultContext)
 
 TESTDATADIR = 'decimaltestdata'
 if __name__ == '__main__':
@@ -1069,6 +1071,7 @@
     is enabled in regrtest.py
     """
 
+    init()
     global TEST_ALL
     TEST_ALL = arith or is_resource_enabled('decimal')
 
diff --git a/Lib/test/test_difflib.py b/Lib/test/test_difflib.py
index 52feef0..83fad15 100644
--- a/Lib/test/test_difflib.py
+++ b/Lib/test/test_difflib.py
@@ -152,6 +152,10 @@
         difflib.SequenceMatcher(None, old, new).get_opcodes()
 
 
-Doctests = doctest.DocTestSuite(difflib)
+def test_main():
+    difflib.HtmlDiff._default_prefix = 0
+    Doctests = doctest.DocTestSuite(difflib)
+    run_unittest(TestSFpatches, TestSFbugs, Doctests)
 
-run_unittest(TestSFpatches, TestSFbugs, Doctests)
+if __name__ == '__main__':
+    test_main()
diff --git a/Lib/test/test_warnings.py b/Lib/test/test_warnings.py
index b7061c1..5a3f521 100644
--- a/Lib/test/test_warnings.py
+++ b/Lib/test/test_warnings.py
@@ -84,5 +84,9 @@
 def test_main(verbose=None):
     test_support.run_unittest(TestModule)
 
+# Obscure hack so that this test passes after reloads (regrtest -R).
+if '__warningregistry__' in globals():
+    del globals()['__warningregistry__']
+
 if __name__ == "__main__":
     test_main(verbose=True)