@@ -230,6 +230,51 @@ def test_no_lib_dir_is_not_an_error(self):
230230 self .assertEqual (path_cleaner .delete_unused_static_libs (self .base_dir ), 0 )
231231
232232
233+ class TestDeleteLlvmCmakePackages (unittest .TestCase ):
234+ """Verifies that the orphaned LLVM, Clang, and LLD CMake packages are removed and nothing else is."""
235+
236+ def setUp (self ):
237+ self .base_dir = tempfile .mkdtemp (prefix = "libpack_test_" )
238+ self .cmake_dir = os .path .join (self .base_dir , "lib" , "cmake" )
239+ os .makedirs (self .cmake_dir )
240+
241+ def tearDown (self ):
242+ shutil .rmtree (self .base_dir , ignore_errors = True )
243+
244+ def _make_package (self , name : str ) -> str :
245+ path = os .path .join (self .cmake_dir , name )
246+ os .makedirs (path )
247+ with open (os .path .join (path , f"{ name } Config.cmake" ), "w" , encoding = "utf-8" ) as f :
248+ f .write ("x" )
249+ return path
250+
251+ def test_removes_llvm_clang_lld_packages (self ):
252+ """The llvm, clang, and lld CMake package directories should be removed."""
253+ targets = [self ._make_package (n ) for n in ("llvm" , "clang" , "lld" )]
254+
255+ removed = path_cleaner .delete_llvm_cmake_packages (self .base_dir )
256+
257+ self .assertEqual (removed , len (targets ))
258+ for path in targets :
259+ self .assertFalse (os .path .exists (path ), f"Expected { path } to be removed" )
260+
261+ def test_preserves_other_packages (self ):
262+ """Unrelated CMake packages must not be touched."""
263+ keepers = [self ._make_package (n ) for n in ("Qt6Core" , "Shiboken6" , "zstd" )]
264+
265+ removed = path_cleaner .delete_llvm_cmake_packages (self .base_dir )
266+
267+ self .assertEqual (removed , 0 )
268+ for path in keepers :
269+ self .assertTrue (os .path .exists (path ), f"Expected { path } to be preserved" )
270+
271+ def test_no_cmake_dir_is_not_an_error (self ):
272+ """If the LibPack has no lib/cmake/ directory the function should be a no-op."""
273+ shutil .rmtree (self .cmake_dir )
274+
275+ self .assertEqual (path_cleaner .delete_llvm_cmake_packages (self .base_dir ), 0 )
276+
277+
233278class TestDeleteDocumentation (unittest .TestCase ):
234279 """Verifies that share/doc and the top-level Qt qdoc input directory are both removed."""
235280
0 commit comments