[Lldb-commits] [lldb] [lldb][test] Remove `reason` from `unittest2.expectedFailure` usage (PR #73028)

Jordan Rupprecht via lldb-commits lldb-commits at lists.llvm.org
Mon Nov 27 22:38:48 PST 2023


https://github.com/rupprecht updated https://github.com/llvm/llvm-project/pull/73028

>From a0805cfc2b2b1c84d58c0551ccf1acfaf2326a4a Mon Sep 17 00:00:00 2001
From: Jordan Rupprecht <rupprecht at google.com>
Date: Tue, 21 Nov 2023 11:38:43 -0800
Subject: [PATCH 1/3] [lldb][test] Remove `reason` from
 `unittest2.expectedFailure` usage

When switching to the standard `unittest` library, various unittests fail because we provide a "bugnumber" (a github issue/rdar link), but there is no longer a way to provide an xfail reason. See: https://docs.python.org/3/library/unittest.html?highlight=unittest#unittest.expectedFailure
---
 .../API/functionalities/jitloader_gdb/TestJITLoaderGDB.py | 2 +-
 .../API/functionalities/thread/state/TestThreadStates.py  | 4 ++--
 lldb/test/API/lang/c/shared_lib/TestSharedLib.py          | 2 +-
 .../TestSharedLibStrippedSymbols.py                       | 2 +-
 lldb/test/API/lang/cpp/namespace/TestNamespaceLookup.py   | 8 ++++----
 .../TestCppReferenceToOuterClass.py                       | 2 +-
 lldb/test/API/lang/objc/hidden-ivars/TestHiddenIvars.py   | 2 +-
 7 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/lldb/test/API/functionalities/jitloader_gdb/TestJITLoaderGDB.py b/lldb/test/API/functionalities/jitloader_gdb/TestJITLoaderGDB.py
index e93f566ea7ea63c..409dcf8e19d383b 100644
--- a/lldb/test/API/functionalities/jitloader_gdb/TestJITLoaderGDB.py
+++ b/lldb/test/API/functionalities/jitloader_gdb/TestJITLoaderGDB.py
@@ -13,7 +13,7 @@ class JITLoaderGDBTestCase(TestBase):
         lambda: "Skipped because the test crashes the test runner",
         bugnumber="llvm.org/pr24702",
     )
-    @expectedFailure("llvm.org/pr24702")
+    @expectedFailure  # llvm.org/pr24702
     def test_bogus_values(self):
         """Test that we handle inferior misusing the GDB JIT interface"""
         self.build()
diff --git a/lldb/test/API/functionalities/thread/state/TestThreadStates.py b/lldb/test/API/functionalities/thread/state/TestThreadStates.py
index ad1edff6ae3f354..8e937d6c22a6758 100644
--- a/lldb/test/API/functionalities/thread/state/TestThreadStates.py
+++ b/lldb/test/API/functionalities/thread/state/TestThreadStates.py
@@ -40,14 +40,14 @@ def test_state_after_continue(self):
     @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24660")
     @expectedFailureNetBSD
     # thread states not properly maintained
-    @expectedFailure("llvm.org/pr16712")
+    @expectedFailure  # llvm.org/pr16712
     def test_state_after_expression(self):
         """Test thread state after expression."""
         self.build()
         self.thread_state_after_expression_test()
 
     # thread states not properly maintained
-    @expectedFailure("llvm.org/pr15824 and <rdar://problem/28557237>")
+    @expectedFailure  # llvm.org/pr15824 and <rdar://problem/28557237>
     @expectedFailureAll(
         oslist=["windows"],
         bugnumber="llvm.org/pr24668: Breakpoints not resolved correctly",
diff --git a/lldb/test/API/lang/c/shared_lib/TestSharedLib.py b/lldb/test/API/lang/c/shared_lib/TestSharedLib.py
index b375aa6a86e14fb..39f5a144703763e 100644
--- a/lldb/test/API/lang/c/shared_lib/TestSharedLib.py
+++ b/lldb/test/API/lang/c/shared_lib/TestSharedLib.py
@@ -34,7 +34,7 @@ def test_expr_no_preload(self):
         """Test that types work when defined in a shared library and forward-declared in the main executable, but with preloading disabled"""
         self.common_test_expr(False)
 
-    @expectedFailure("llvm.org/PR36712")
+    @expectedFailure  # llvm.org/PR36712
     def test_frame_variable(self):
         """Test that types work when defined in a shared library and forward-declared in the main executable"""
         self.build()
diff --git a/lldb/test/API/lang/c/shared_lib_stripped_symbols/TestSharedLibStrippedSymbols.py b/lldb/test/API/lang/c/shared_lib_stripped_symbols/TestSharedLibStrippedSymbols.py
index f7035edddaf09b8..5fd6cc1a3172f48 100644
--- a/lldb/test/API/lang/c/shared_lib_stripped_symbols/TestSharedLibStrippedSymbols.py
+++ b/lldb/test/API/lang/c/shared_lib_stripped_symbols/TestSharedLibStrippedSymbols.py
@@ -27,7 +27,7 @@ def test_expr(self):
         )
 
     @expectedFailureAll(oslist=["windows"])
-    @expectedFailure("llvm.org/PR36712")
+    @expectedFailure  # llvm.org/PR36712
     def test_frame_variable(self):
         """Test that types work when defined in a shared library and forward-declared in the main executable"""
         self.build()
diff --git a/lldb/test/API/lang/cpp/namespace/TestNamespaceLookup.py b/lldb/test/API/lang/cpp/namespace/TestNamespaceLookup.py
index f88667b9dfa2ae9..1803fdcd4d87956 100644
--- a/lldb/test/API/lang/cpp/namespace/TestNamespaceLookup.py
+++ b/lldb/test/API/lang/cpp/namespace/TestNamespaceLookup.py
@@ -40,7 +40,7 @@ def runToBkpt(self, command):
         )
 
     @skipIfWindows  # This is flakey on Windows: llvm.org/pr38373
-    @expectedFailure("CU-local objects incorrectly scoped")
+    @expectedFailure  # CU-local objects incorrectly scoped
     def test_scope_lookup_with_run_command_globals(self):
         """Test scope lookup of functions in lldb."""
         self.build()
@@ -210,7 +210,7 @@ def test_scope_lookup_with_run_command(self):
         # Evaluate B::func() - should call B::func()
         self.expect_expr("B::func()", result_type="int", result_value="4")
 
-    @expectedFailure("lldb scope lookup of functions bugs")
+    @expectedFailure  # lldb scope lookup of functions bugs
     def test_function_scope_lookup_with_run_command(self):
         """Test scope lookup of functions in lldb."""
         self.build()
@@ -271,7 +271,7 @@ def test_scope_after_using_directive_lookup_with_run_command(self):
         # Evaluate func2() - should call A::func2()
         self.expect_expr("func2()", result_type="int", result_value="3")
 
-    @expectedFailure("lldb scope lookup after using declaration bugs")
+    @expectedFailure  # lldb scope lookup after using declaration bugs
     # NOTE: this test may fail on older systems that don't emit import
     # emtries in DWARF - may need to add checks for compiler versions here.
     def test_scope_after_using_declaration_lookup_with_run_command(self):
@@ -293,7 +293,7 @@ def test_scope_after_using_declaration_lookup_with_run_command(self):
         # Evaluate func() - should call A::func()
         self.expect_expr("func()", result_type="int", result_value="3")
 
-    @expectedFailure("lldb scope lookup ambiguity after using bugs")
+    @expectedFailure  # lldb scope lookup ambiguity after using bugs
     def test_scope_ambiguity_after_using_lookup_with_run_command(self):
         """Test scope lookup ambiguity after using in lldb."""
         self.build()
diff --git a/lldb/test/API/lang/cpp/reference-to-outer-type/TestCppReferenceToOuterClass.py b/lldb/test/API/lang/cpp/reference-to-outer-type/TestCppReferenceToOuterClass.py
index a7b02baeb13c58d..cbabce41b58f973 100644
--- a/lldb/test/API/lang/cpp/reference-to-outer-type/TestCppReferenceToOuterClass.py
+++ b/lldb/test/API/lang/cpp/reference-to-outer-type/TestCppReferenceToOuterClass.py
@@ -5,7 +5,7 @@
 
 
 class TestCase(TestBase):
-    @expectedFailure("The fix for this was reverted due to llvm.org/PR52257")
+    @expectedFailure  # The fix for this was reverted due to llvm.org/PR52257
     def test(self):
         self.build()
         self.dbg.CreateTarget(self.getBuildArtifact("a.out"))
diff --git a/lldb/test/API/lang/objc/hidden-ivars/TestHiddenIvars.py b/lldb/test/API/lang/objc/hidden-ivars/TestHiddenIvars.py
index 8153376b4c6feea..ead4d00c46c767b 100644
--- a/lldb/test/API/lang/objc/hidden-ivars/TestHiddenIvars.py
+++ b/lldb/test/API/lang/objc/hidden-ivars/TestHiddenIvars.py
@@ -57,7 +57,7 @@ def test_frame_variable(self):
             self.build()
             self.frame_var(False)
 
-    @expectedFailure("rdar://18683637")
+    @expectedFailure  # rdar://18683637
     def test_frame_variable_across_modules(self):
         if self.getArchitecture() == "i386":
             self.skipTest("requires modern objc runtime")

>From 938b47401f52ec2ca7244fb8992d6303b1fac6df Mon Sep 17 00:00:00 2001
From: Jordan Rupprecht <rupprecht at google.com>
Date: Tue, 21 Nov 2023 17:59:41 -0800
Subject: [PATCH 2/3] Add TestExprs usage

---
 lldb/test/API/commands/expression/test/TestExprs.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lldb/test/API/commands/expression/test/TestExprs.py b/lldb/test/API/commands/expression/test/TestExprs.py
index 76a5e9efebb1866..03c2c01a77abdde 100644
--- a/lldb/test/API/commands/expression/test/TestExprs.py
+++ b/lldb/test/API/commands/expression/test/TestExprs.py
@@ -43,9 +43,9 @@ def build_and_run(self):
 
         self.runCmd("run", RUN_SUCCEEDED)
 
-    @expectedFailure(
-        "llvm.org/pr17135 <rdar://problem/14874559> APFloat::toString does not identify the correct (i.e. least) precision."
-    )
+    # llvm.org/pr17135 <rdar://problem/14874559>
+    # APFloat::toString does not identify the correct (i.e. least) precision.
+    @expectedFailure
     def test_floating_point_expr_commands(self):
         self.build_and_run()
 

>From 6fb34e45666173beb99a12aa149c08adb19dd234 Mon Sep 17 00:00:00 2001
From: Jordan Rupprecht <rupprecht at google.com>
Date: Mon, 27 Nov 2023 22:38:37 -0800
Subject: [PATCH 3/3] Remove trivial expectedFailure wrapper from decorators

---
 lldb/packages/Python/lldbsuite/test/decorators.py        | 4 ----
 lldb/test/API/commands/expression/test/TestExprs.py      | 3 ++-
 .../functionalities/jitloader_gdb/TestJITLoaderGDB.py    | 3 ++-
 .../API/functionalities/thread/state/TestThreadStates.py | 5 +++--
 lldb/test/API/lang/c/shared_lib/TestSharedLib.py         | 3 ++-
 .../TestSharedLibStrippedSymbols.py                      | 3 ++-
 lldb/test/API/lang/cpp/namespace/TestNamespaceLookup.py  | 9 +++++----
 .../TestCppReferenceToOuterClass.py                      | 3 ++-
 lldb/test/API/lang/objc/hidden-ivars/TestHiddenIvars.py  | 3 ++-
 9 files changed, 20 insertions(+), 16 deletions(-)

diff --git a/lldb/packages/Python/lldbsuite/test/decorators.py b/lldb/packages/Python/lldbsuite/test/decorators.py
index bb06a5ee20f2532..a4cee1f5761625a 100644
--- a/lldb/packages/Python/lldbsuite/test/decorators.py
+++ b/lldb/packages/Python/lldbsuite/test/decorators.py
@@ -113,10 +113,6 @@ def _compiler_supports(
     return True
 
 
-def expectedFailure(func):
-    return unittest2.expectedFailure(func)
-
-
 def expectedFailureIfFn(expected_fn, bugnumber=None):
     def expectedFailure_impl(func):
         if isinstance(func, type) and issubclass(func, unittest2.TestCase):
diff --git a/lldb/test/API/commands/expression/test/TestExprs.py b/lldb/test/API/commands/expression/test/TestExprs.py
index 03c2c01a77abdde..e95c76b7104c2a9 100644
--- a/lldb/test/API/commands/expression/test/TestExprs.py
+++ b/lldb/test/API/commands/expression/test/TestExprs.py
@@ -12,6 +12,7 @@
 """
 
 
+import unittest2
 import lldb
 from lldbsuite.test.decorators import *
 from lldbsuite.test.lldbtest import *
@@ -45,7 +46,7 @@ def build_and_run(self):
 
     # llvm.org/pr17135 <rdar://problem/14874559>
     # APFloat::toString does not identify the correct (i.e. least) precision.
-    @expectedFailure
+    @unittest2.expectedFailure
     def test_floating_point_expr_commands(self):
         self.build_and_run()
 
diff --git a/lldb/test/API/functionalities/jitloader_gdb/TestJITLoaderGDB.py b/lldb/test/API/functionalities/jitloader_gdb/TestJITLoaderGDB.py
index 409dcf8e19d383b..a07421524478744 100644
--- a/lldb/test/API/functionalities/jitloader_gdb/TestJITLoaderGDB.py
+++ b/lldb/test/API/functionalities/jitloader_gdb/TestJITLoaderGDB.py
@@ -1,6 +1,7 @@
 """Test for the JITLoaderGDB interface"""
 
 
+import unittest2
 import os
 import lldb
 from lldbsuite.test import lldbutil
@@ -13,7 +14,7 @@ class JITLoaderGDBTestCase(TestBase):
         lambda: "Skipped because the test crashes the test runner",
         bugnumber="llvm.org/pr24702",
     )
-    @expectedFailure  # llvm.org/pr24702
+    @unittest2.expectedFailure  # llvm.org/pr24702
     def test_bogus_values(self):
         """Test that we handle inferior misusing the GDB JIT interface"""
         self.build()
diff --git a/lldb/test/API/functionalities/thread/state/TestThreadStates.py b/lldb/test/API/functionalities/thread/state/TestThreadStates.py
index 8e937d6c22a6758..e128ca84977b411 100644
--- a/lldb/test/API/functionalities/thread/state/TestThreadStates.py
+++ b/lldb/test/API/functionalities/thread/state/TestThreadStates.py
@@ -3,6 +3,7 @@
 """
 
 
+import unittest2
 import lldb
 from lldbsuite.test.decorators import *
 from lldbsuite.test.lldbtest import *
@@ -40,14 +41,14 @@ def test_state_after_continue(self):
     @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24660")
     @expectedFailureNetBSD
     # thread states not properly maintained
-    @expectedFailure  # llvm.org/pr16712
+    @unittest2.expectedFailure  # llvm.org/pr16712
     def test_state_after_expression(self):
         """Test thread state after expression."""
         self.build()
         self.thread_state_after_expression_test()
 
     # thread states not properly maintained
-    @expectedFailure  # llvm.org/pr15824 and <rdar://problem/28557237>
+    @unittest2.expectedFailure  # llvm.org/pr15824 and <rdar://problem/28557237>
     @expectedFailureAll(
         oslist=["windows"],
         bugnumber="llvm.org/pr24668: Breakpoints not resolved correctly",
diff --git a/lldb/test/API/lang/c/shared_lib/TestSharedLib.py b/lldb/test/API/lang/c/shared_lib/TestSharedLib.py
index 39f5a144703763e..235b9b4ce3442df 100644
--- a/lldb/test/API/lang/c/shared_lib/TestSharedLib.py
+++ b/lldb/test/API/lang/c/shared_lib/TestSharedLib.py
@@ -1,6 +1,7 @@
 """Test that types defined in shared libraries work correctly."""
 
 
+import unittest2
 import lldb
 from lldbsuite.test.decorators import *
 from lldbsuite.test.lldbtest import *
@@ -34,7 +35,7 @@ def test_expr_no_preload(self):
         """Test that types work when defined in a shared library and forward-declared in the main executable, but with preloading disabled"""
         self.common_test_expr(False)
 
-    @expectedFailure  # llvm.org/PR36712
+    @unittest2.expectedFailure  # llvm.org/PR36712
     def test_frame_variable(self):
         """Test that types work when defined in a shared library and forward-declared in the main executable"""
         self.build()
diff --git a/lldb/test/API/lang/c/shared_lib_stripped_symbols/TestSharedLibStrippedSymbols.py b/lldb/test/API/lang/c/shared_lib_stripped_symbols/TestSharedLibStrippedSymbols.py
index 5fd6cc1a3172f48..070bd88d8db942c 100644
--- a/lldb/test/API/lang/c/shared_lib_stripped_symbols/TestSharedLibStrippedSymbols.py
+++ b/lldb/test/API/lang/c/shared_lib_stripped_symbols/TestSharedLibStrippedSymbols.py
@@ -1,6 +1,7 @@
 """Test that types defined in shared libraries with stripped symbols work correctly."""
 
 
+import unittest2
 import lldb
 from lldbsuite.test.decorators import *
 from lldbsuite.test.lldbtest import *
@@ -27,7 +28,7 @@ def test_expr(self):
         )
 
     @expectedFailureAll(oslist=["windows"])
-    @expectedFailure  # llvm.org/PR36712
+    @unittest2.expectedFailure  # llvm.org/PR36712
     def test_frame_variable(self):
         """Test that types work when defined in a shared library and forward-declared in the main executable"""
         self.build()
diff --git a/lldb/test/API/lang/cpp/namespace/TestNamespaceLookup.py b/lldb/test/API/lang/cpp/namespace/TestNamespaceLookup.py
index 1803fdcd4d87956..44cfbd2df5f346e 100644
--- a/lldb/test/API/lang/cpp/namespace/TestNamespaceLookup.py
+++ b/lldb/test/API/lang/cpp/namespace/TestNamespaceLookup.py
@@ -3,6 +3,7 @@
 """
 
 
+import unittest2
 import lldb
 from lldbsuite.test.decorators import *
 from lldbsuite.test.lldbtest import *
@@ -40,7 +41,7 @@ def runToBkpt(self, command):
         )
 
     @skipIfWindows  # This is flakey on Windows: llvm.org/pr38373
-    @expectedFailure  # CU-local objects incorrectly scoped
+    @unittest2.expectedFailure  # CU-local objects incorrectly scoped
     def test_scope_lookup_with_run_command_globals(self):
         """Test scope lookup of functions in lldb."""
         self.build()
@@ -210,7 +211,7 @@ def test_scope_lookup_with_run_command(self):
         # Evaluate B::func() - should call B::func()
         self.expect_expr("B::func()", result_type="int", result_value="4")
 
-    @expectedFailure  # lldb scope lookup of functions bugs
+    @unittest2.expectedFailure  # lldb scope lookup of functions bugs
     def test_function_scope_lookup_with_run_command(self):
         """Test scope lookup of functions in lldb."""
         self.build()
@@ -271,7 +272,7 @@ def test_scope_after_using_directive_lookup_with_run_command(self):
         # Evaluate func2() - should call A::func2()
         self.expect_expr("func2()", result_type="int", result_value="3")
 
-    @expectedFailure  # lldb scope lookup after using declaration bugs
+    @unittest2.expectedFailure  # lldb scope lookup after using declaration bugs
     # NOTE: this test may fail on older systems that don't emit import
     # emtries in DWARF - may need to add checks for compiler versions here.
     def test_scope_after_using_declaration_lookup_with_run_command(self):
@@ -293,7 +294,7 @@ def test_scope_after_using_declaration_lookup_with_run_command(self):
         # Evaluate func() - should call A::func()
         self.expect_expr("func()", result_type="int", result_value="3")
 
-    @expectedFailure  # lldb scope lookup ambiguity after using bugs
+    @unittest2.expectedFailure  # lldb scope lookup ambiguity after using bugs
     def test_scope_ambiguity_after_using_lookup_with_run_command(self):
         """Test scope lookup ambiguity after using in lldb."""
         self.build()
diff --git a/lldb/test/API/lang/cpp/reference-to-outer-type/TestCppReferenceToOuterClass.py b/lldb/test/API/lang/cpp/reference-to-outer-type/TestCppReferenceToOuterClass.py
index cbabce41b58f973..3172b5f2fe384ff 100644
--- a/lldb/test/API/lang/cpp/reference-to-outer-type/TestCppReferenceToOuterClass.py
+++ b/lldb/test/API/lang/cpp/reference-to-outer-type/TestCppReferenceToOuterClass.py
@@ -1,3 +1,4 @@
+import unittest2
 import lldb
 from lldbsuite.test.decorators import *
 from lldbsuite.test.lldbtest import *
@@ -5,7 +6,7 @@
 
 
 class TestCase(TestBase):
-    @expectedFailure  # The fix for this was reverted due to llvm.org/PR52257
+    @unittest2.expectedFailure  # The fix for this was reverted due to llvm.org/PR52257
     def test(self):
         self.build()
         self.dbg.CreateTarget(self.getBuildArtifact("a.out"))
diff --git a/lldb/test/API/lang/objc/hidden-ivars/TestHiddenIvars.py b/lldb/test/API/lang/objc/hidden-ivars/TestHiddenIvars.py
index ead4d00c46c767b..479f4379a530238 100644
--- a/lldb/test/API/lang/objc/hidden-ivars/TestHiddenIvars.py
+++ b/lldb/test/API/lang/objc/hidden-ivars/TestHiddenIvars.py
@@ -3,6 +3,7 @@
 
 import subprocess
 
+import unittest2
 import lldb
 from lldbsuite.test.decorators import *
 from lldbsuite.test.lldbtest import *
@@ -57,7 +58,7 @@ def test_frame_variable(self):
             self.build()
             self.frame_var(False)
 
-    @expectedFailure  # rdar://18683637
+    @unittest2.expectedFailure  # rdar://18683637
     def test_frame_variable_across_modules(self):
         if self.getArchitecture() == "i386":
             self.skipTest("requires modern objc runtime")



More information about the lldb-commits mailing list