Issue #23027: test_warnings now passes all tests when run it with -Werror.
diff --git a/Lib/test/test_warnings.py b/Lib/test/test_warnings.py
index 9ac2139..303ca71 100644
--- a/Lib/test/test_warnings.py
+++ b/Lib/test/test_warnings.py
@@ -456,17 +456,20 @@
         self.assertIn('category must be a Warning subclass, not ',
                       str(cm.exception))
 
-        with self.assertWarns(MyWarningClass) as cm:
-            self.module.warn('good warning category', MyWarningClass)
-        self.assertEqual('good warning category', str(cm.warning))
+        with original_warnings.catch_warnings(module=self.module):
+            self.module.resetwarnings()
+            self.module.filterwarnings('default')
+            with self.assertWarns(MyWarningClass) as cm:
+                self.module.warn('good warning category', MyWarningClass)
+            self.assertEqual('good warning category', str(cm.warning))
 
-        with self.assertWarns(UserWarning) as cm:
-            self.module.warn('good warning category', None)
-        self.assertEqual('good warning category', str(cm.warning))
+            with self.assertWarns(UserWarning) as cm:
+                self.module.warn('good warning category', None)
+            self.assertEqual('good warning category', str(cm.warning))
 
-        with self.assertWarns(MyWarningClass) as cm:
-            self.module.warn('good warning category', MyWarningClass)
-        self.assertIsInstance(cm.warning, Warning)
+            with self.assertWarns(MyWarningClass) as cm:
+                self.module.warn('good warning category', MyWarningClass)
+            self.assertIsInstance(cm.warning, Warning)
 
 class CWarnTests(WarnTests, unittest.TestCase):
     module = c_warnings