diff options
Diffstat (limited to 'llvm_tools/clean_up_old_llvm_patches_test.py')
-rwxr-xr-x | llvm_tools/clean_up_old_llvm_patches_test.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/llvm_tools/clean_up_old_llvm_patches_test.py b/llvm_tools/clean_up_old_llvm_patches_test.py new file mode 100755 index 00000000..02100c8f --- /dev/null +++ b/llvm_tools/clean_up_old_llvm_patches_test.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python3 +# Copyright 2024 The ChromiumOS Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Tests for clean_up_old_llvm_patches""" + +from pathlib import Path +import shutil +import tempfile +import unittest + +import clean_up_old_llvm_patches + + +ANDROID_VERSION_PY_EXAMPLE = """ +def get_svn_revision(): + return "r654321" +""" + + +class Test(unittest.TestCase): + """Tests for clean_up_old_llvm_patches""" + + def make_tempdir(self) -> Path: + tmpdir = Path(tempfile.mkdtemp(prefix="patch_utils_unittest")) + self.addCleanup(shutil.rmtree, tmpdir) + return tmpdir + + def test_android_version_autodetection(self): + android_root = self.make_tempdir() + android_version_py = ( + android_root / "toolchain" / "llvm_android" / "android_version.py" + ) + android_version_py.parent.mkdir(parents=True) + android_version_py.write_text( + ANDROID_VERSION_PY_EXAMPLE, encoding="utf-8" + ) + + self.assertEqual( + clean_up_old_llvm_patches.find_android_llvm_version(android_root), + 654321, + ) + + def test_chromeos_version_autodetection(self): + chromiumos_overlay = self.make_tempdir() + llvm = chromiumos_overlay / "sys-devel" / "llvm" + llvm.mkdir(parents=True) + + file_names = ( + "Manifest", + "llvm-12.0-r1.ebuild", + "llvm-18.0_pre123456-r90.ebuild", + "llvm-9999.ebuild", + ) + for f in file_names: + (llvm / f).touch() + + self.assertEqual( + clean_up_old_llvm_patches.find_chromeos_llvm_version( + chromiumos_overlay + ), + 123456, + ) + + +if __name__ == "__main__": + unittest.main() |