summaryrefslogtreecommitdiff
path: root/lldb
diff options
context:
space:
mode:
authorJonas Devlieghere <jonas@devlieghere.com>2024-02-19 15:31:08 -0800
committerGitHub <noreply@github.com>2024-02-19 15:31:08 -0800
commit13dce35876acdd35269f7d64c187c1d831bbf980 (patch)
tree3f9d393b41206239e9192daa849a881b0d9fdd1f /lldb
parent513d9f2395ea017e72602ca6e747a2e061ab8c3f (diff)
[lldb] Migrate distutils.version.LooseVersion to packaging (#82066)
The distutils package has been deprecated and was removed from Python 3.12. The migration page [1] advises to use the packaging module instead. Since Python 3.6 that's vendored into pkg_resources. [1] https://peps.python.org/pep-0632/#migration-advice
Diffstat (limited to 'lldb')
-rw-r--r--lldb/packages/Python/lldbsuite/test/decorators.py12
-rw-r--r--lldb/packages/Python/lldbsuite/test/lldbplatformutil.py25
-rw-r--r--lldb/test/API/sanity/TestSettingSkipping.py31
-rw-r--r--lldb/test/API/tools/lldb-server/TestAppleSimulatorOSType.py4
-rwxr-xr-xlldb/test/Shell/helper/build.py4
5 files changed, 40 insertions, 36 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/decorators.py b/lldb/packages/Python/lldbsuite/test/decorators.py
index a5d7a7a25879..b691f82b9065 100644
--- a/lldb/packages/Python/lldbsuite/test/decorators.py
+++ b/lldb/packages/Python/lldbsuite/test/decorators.py
@@ -1,6 +1,6 @@
# System modules
-from distutils.version import LooseVersion
from functools import wraps
+from pkg_resources import packaging
import ctypes
import locale
import os
@@ -65,10 +65,10 @@ def _check_expected_version(comparison, expected, actual):
">=": fn_geq,
"<=": fn_leq,
}
- expected_str = ".".join([str(x) for x in expected])
- actual_str = ".".join([str(x) for x in actual])
- return op_lookup[comparison](LooseVersion(actual_str), LooseVersion(expected_str))
+ return op_lookup[comparison](
+ packaging.version.parse(actual), packaging.version.parse(expected)
+ )
def _match_decorator_property(expected, actual):
@@ -238,7 +238,9 @@ def _decorateTest(
)
)
skip_for_py_version = (py_version is None) or _check_expected_version(
- py_version[0], py_version[1], sys.version_info
+ py_version[0],
+ py_version[1],
+ "{}.{}".format(sys.version_info.major, sys.version_info.minor),
)
skip_for_macos_version = (macos_version is None) or (
(platform.mac_ver()[0] != "")
diff --git a/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py b/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py
index bd92d03e0e22..a118aa61a628 100644
--- a/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py
+++ b/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py
@@ -7,8 +7,8 @@ import re
import subprocess
import sys
import os
-from distutils.version import LooseVersion
from urllib.parse import urlparse
+from pkg_resources import packaging
# LLDB modules
import lldb
@@ -297,27 +297,30 @@ def expectedCompilerVersion(compiler_version):
if compiler_version is None:
return True
operator = str(compiler_version[0])
- version = compiler_version[1]
+ version_str = str(compiler_version[1])
- if version is None:
+ if not version_str:
return True
- test_compiler_version = getCompilerVersion()
- if test_compiler_version == "unknown":
+ test_compiler_version_str = getCompilerVersion()
+ if test_compiler_version_str == "unknown":
# Assume the compiler version is at or near the top of trunk.
return operator in [">", ">=", "!", "!=", "not"]
+ version = packaging.version.parse(version_str)
+ test_compiler_version = packaging.version.parse(test_compiler_version_str)
+
if operator == ">":
- return LooseVersion(test_compiler_version) > LooseVersion(version)
+ return test_compiler_version < version
if operator == ">=" or operator == "=>":
- return LooseVersion(test_compiler_version) >= LooseVersion(version)
+ return test_compiler_version >= version
if operator == "<":
- return LooseVersion(test_compiler_version) < LooseVersion(version)
+ return test_compiler_version < version
if operator == "<=" or operator == "=<":
- return LooseVersion(test_compiler_version) <= LooseVersion(version)
+ return test_compiler_version <= version
if operator == "!=" or operator == "!" or operator == "not":
- return str(version) not in str(test_compiler_version)
- return str(version) in str(test_compiler_version)
+ return version_str not in test_compiler_version_str
+ return version_str in test_compiler_version_str
def expectedCompiler(compilers):
diff --git a/lldb/test/API/sanity/TestSettingSkipping.py b/lldb/test/API/sanity/TestSettingSkipping.py
index 5f58ec263845..f0d4d266073e 100644
--- a/lldb/test/API/sanity/TestSettingSkipping.py
+++ b/lldb/test/API/sanity/TestSettingSkipping.py
@@ -1,8 +1,7 @@
"""
-This is a sanity check that verifies that test can be sklipped based on settings.
+This is a sanity check that verifies that test can be skipped based on settings.
"""
-
import lldb
from lldbsuite.test.lldbtest import *
from lldbsuite.test.decorators import *
@@ -10,24 +9,24 @@ from lldbsuite.test.decorators import *
class SettingSkipSanityTestCase(TestBase):
NO_DEBUG_INFO_TESTCASE = True
+ CURRENT_PYTHON_VERSION = "3.0"
- @skipIf(py_version=(">=", (3, 0)))
+ @skipIf(py_version=(">=", CURRENT_PYTHON_VERSION))
def testSkip(self):
- """This setting is on by default"""
- self.assertTrue(False, "This test should not run!")
-
- @skipIf(py_version=("<", (3, 0)))
- def testNoMatch(self):
- self.assertTrue(True, "This test should run!")
+ self.assertTrue(False, "This test should not run and fail (SKIPPED)")
- @skipIf(setting=("target.i-made-this-one-up", "true"))
- def testNotExisting(self):
- self.assertTrue(True, "This test should run!")
+ @skipIf(py_version=("<", CURRENT_PYTHON_VERSION))
+ def testNoSKip(self):
+ self.assertTrue(True, "This test should run and pass(PASS)")
- @expectedFailureAll(py_version=(">=", (3, 0)))
+ @expectedFailureAll(py_version=(">=", CURRENT_PYTHON_VERSION))
def testXFAIL(self):
- self.assertTrue(False, "This test should run and fail!")
+ self.assertTrue(False, "This test should expectedly fail (XFAIL)")
- @expectedFailureAll(py_version=("<", (3, 0)))
+ @expectedFailureAll(py_version=("<", CURRENT_PYTHON_VERSION))
def testNotXFAIL(self):
- self.assertTrue(True, "This test should run and succeed!")
+ self.assertTrue(True, "This test should pass (PASS)")
+
+ @skipIf(setting=("target.i-made-this-one-up", "true"))
+ def testNotExisting(self):
+ self.assertTrue(True, "This test should run!")
diff --git a/lldb/test/API/tools/lldb-server/TestAppleSimulatorOSType.py b/lldb/test/API/tools/lldb-server/TestAppleSimulatorOSType.py
index ffac8de6f596..d770447f0771 100644
--- a/lldb/test/API/tools/lldb-server/TestAppleSimulatorOSType.py
+++ b/lldb/test/API/tools/lldb-server/TestAppleSimulatorOSType.py
@@ -61,9 +61,9 @@ class TestAppleSimulatorOSType(gdbremote_testcase.GdbRemoteTestCaseBase):
# Older versions of watchOS (<7.0) only support i386
if platform_name == "watchos":
- from distutils.version import LooseVersion
+ from pkg_resources import packaging
- if LooseVersion(vers) < LooseVersion("7.0"):
+ if packaging.version.parse(vers) < packaging.version.parse("7.0"):
arch = "i386"
triple = "-".join([arch, "apple", platform_name + vers, "simulator"])
diff --git a/lldb/test/Shell/helper/build.py b/lldb/test/Shell/helper/build.py
index 073198a6df2d..d3c25bd944e9 100755
--- a/lldb/test/Shell/helper/build.py
+++ b/lldb/test/Shell/helper/build.py
@@ -519,9 +519,9 @@ class MsvcBuilder(Builder):
# Windows SDK version numbers consist of 4 dotted components, so we
# have to use LooseVersion, as StrictVersion supports 3 or fewer.
- from distutils.version import LooseVersion
+ from pkg_resources import packaging
- sdk_versions.sort(key=lambda x: LooseVersion(x), reverse=True)
+ sdk_versions.sort(key=lambda x: packaging.version.parse(x), reverse=True)
option_value_name = "OptionId.DesktopCPP" + self.msvc_arch_str
for v in sdk_versions:
try: