From 5ded08048b3e0db0b8ab32c03b10520354ca0f6f Mon Sep 17 00:00:00 2001 From: linsui <2873532-linsui@users.noreply.gitlab.com> Date: Fri, 8 Aug 2025 23:14:12 +0800 Subject: [PATCH] scanner: remove asLibraryDependency from catalog accessor --- fdroidserver/scanner.py | 4 +- .../catalog.test/buildSrc/build.gradle.kts | 4 + .../catalog.test/gradle/libs.versions.toml | 4 +- tests/test_scanner.py | 128 +++++++++++------- 4 files changed, 88 insertions(+), 52 deletions(-) diff --git a/fdroidserver/scanner.py b/fdroidserver/scanner.py index 29c2ee18..f28e3803 100644 --- a/fdroidserver/scanner.py +++ b/fdroidserver/scanner.py @@ -189,7 +189,9 @@ class GradleVersionCatalog: def get_coordinate(self, accessor: str) -> list[str]: """Get the Gradle coordinate from the catalog with an accessor.""" if accessor.startswith("plugins."): - return [self.plugins.get(accessor[8:], "")] + return [ + self.plugins.get(accessor[8:].removesuffix(".asLibraryDependency"), "") + ] if accessor.startswith("bundles."): return self.bundles.get(accessor[8:], []) return [self.libraries.get(accessor, "")] diff --git a/tests/source-files/catalog.test/buildSrc/build.gradle.kts b/tests/source-files/catalog.test/buildSrc/build.gradle.kts index 5572706f..40eeaa54 100644 --- a/tests/source-files/catalog.test/buildSrc/build.gradle.kts +++ b/tests/source-files/catalog.test/buildSrc/build.gradle.kts @@ -3,3 +3,7 @@ plugins { alias(libs.plugins.firebase.crashlytics) alias(projectLibs.plugins.firebase.crashlytics) } + +dependencies { + implementation(libs.plugins.androidApplication.asLibraryDependency) +} diff --git a/tests/source-files/catalog.test/gradle/libs.versions.toml b/tests/source-files/catalog.test/gradle/libs.versions.toml index e5327907..9fb3707f 100644 --- a/tests/source-files/catalog.test/gradle/libs.versions.toml +++ b/tests/source-files/catalog.test/gradle/libs.versions.toml @@ -1,16 +1,18 @@ [versions] firebase = "1.1.1" gms = "1.2.1" +androidGradlePlugin = "8.12.0" [libraries] firebase-crash = { module = "com.google.firebase:firebase-crash", version.ref = "firebase" } firebase_core = { module = "com.google.firebase:firebase-core", version = "2.2.2" } -"play.service.ads" = { module = "com.google.android.gms:play-services-ads", version.ref = "gms"} +"play.service.ads" = { module = "com.google.android.gms:play-services-ads", version.ref = "gms" } jacoco = "org.jacoco:org.jacoco.core:0.8.7" [plugins] google-services = { id = "com.google.gms.google-services", version.ref = "gms" } firebase-crashlytics = { id = "com.google.firebase.crashlytics", version.ref = "firebase" } +androidApplication = { id = "com.android.application", version.ref = "androidGradlePlugin" } [bundles] firebase = ["firebase-crash", "firebase_core"] diff --git a/tests/test_scanner.py b/tests/test_scanner.py index 7d0f5b8e..8da5d5cb 100755 --- a/tests/test_scanner.py +++ b/tests/test_scanner.py @@ -165,6 +165,9 @@ class ScannerTest(unittest.TestCase): 'com.google.firebase:firebase-crash:1.1.1', 'com.google.firebase:firebase-core:2.2.2', ], + 'plugins.androidApplication.asLibraryDependency': [ + 'com.android.application:8.12.0' + ], } with open('source-files/catalog.test/gradle/libs.versions.toml', 'rb') as f: catalog = fdroidserver.scanner.GradleVersionCatalog(tomllib.load(f)) @@ -354,11 +357,15 @@ class ScannerTest(unittest.TestCase): with mock.patch('fdroidserver.common.replace_build_vars', wraps=make_fake_apk): with mock.patch('fdroidserver.common.get_native_code', return_value='x86'): - with mock.patch( - 'fdroidserver.common.get_apk_id', - return_value=(app.id, build.versionCode, build.versionName), - ), mock.patch( - 'fdroidserver.common.get_source_date_epoch', lambda f: '1234567890' + with ( + mock.patch( + 'fdroidserver.common.get_apk_id', + return_value=(app.id, build.versionCode, build.versionName), + ), + mock.patch( + 'fdroidserver.common.get_source_date_epoch', + lambda f: '1234567890', + ), ): with mock.patch( 'fdroidserver.common.is_debuggable_or_testOnly', @@ -672,15 +679,19 @@ class Test_SignatureDataController(unittest.TestCase): func_lfc = mock.Mock() func_vd = mock.Mock() func_clu = mock.Mock() - with mock.patch( - 'fdroidserver.scanner.SignatureDataController.load_from_cache', - func_lfc, - ), mock.patch( - 'fdroidserver.scanner.SignatureDataController.verify_data', - func_vd, - ), mock.patch( - 'fdroidserver.scanner.SignatureDataController.check_last_updated', - func_clu, + with ( + mock.patch( + 'fdroidserver.scanner.SignatureDataController.load_from_cache', + func_lfc, + ), + mock.patch( + 'fdroidserver.scanner.SignatureDataController.verify_data', + func_vd, + ), + mock.patch( + 'fdroidserver.scanner.SignatureDataController.check_last_updated', + func_clu, + ), ): sdc.load() func_lfc.assert_called_once_with() @@ -695,12 +706,15 @@ class Test_SignatureDataController(unittest.TestCase): side_effect=fdroidserver.scanner.SignatureDataCacheMissException ) func_lfd = mock.Mock() - with mock.patch( - 'fdroidserver.scanner.SignatureDataController.load_from_cache', - func_lfc, - ), mock.patch( - 'fdroidserver.scanner.SignatureDataController.load_from_defaults', - func_lfd, + with ( + mock.patch( + 'fdroidserver.scanner.SignatureDataController.load_from_cache', + func_lfc, + ), + mock.patch( + 'fdroidserver.scanner.SignatureDataController.load_from_defaults', + func_lfd, + ), ): sdc.load() func_lfc.assert_called_once_with() @@ -717,21 +731,27 @@ class Test_SignatureDataController(unittest.TestCase): ) func_fsfw = mock.Mock() func_wtc = mock.Mock() - with mock.patch( - 'fdroidserver.scanner.SignatureDataController.load_from_cache', - func_lfc, - ), mock.patch( - 'fdroidserver.scanner.SignatureDataController.verify_data', - func_vd, - ), mock.patch( - 'fdroidserver.scanner.SignatureDataController.check_last_updated', - func_clu, - ), mock.patch( - 'fdroidserver.scanner.SignatureDataController.fetch_signatures_from_web', - func_fsfw, - ), mock.patch( - 'fdroidserver.scanner.SignatureDataController.write_to_cache', - func_wtc, + with ( + mock.patch( + 'fdroidserver.scanner.SignatureDataController.load_from_cache', + func_lfc, + ), + mock.patch( + 'fdroidserver.scanner.SignatureDataController.verify_data', + func_vd, + ), + mock.patch( + 'fdroidserver.scanner.SignatureDataController.check_last_updated', + func_clu, + ), + mock.patch( + 'fdroidserver.scanner.SignatureDataController.fetch_signatures_from_web', + func_fsfw, + ), + mock.patch( + 'fdroidserver.scanner.SignatureDataController.write_to_cache', + func_wtc, + ), ): sdc.load() func_lfc.assert_called_once_with() @@ -752,18 +772,23 @@ class Test_SignatureDataController(unittest.TestCase): ) func_fsfw = mock.Mock() func_wtc = mock.Mock() - with mock.patch( - 'fdroidserver.scanner.SignatureDataController.load_from_cache', - func_lfc, - ), mock.patch( - 'fdroidserver.scanner.SignatureDataController.load_from_defaults', - func_lfd, - ), mock.patch( - 'fdroidserver.scanner.SignatureDataController.fetch_signatures_from_web', - func_fsfw, - ), mock.patch( - 'fdroidserver.scanner.SignatureDataController.write_to_cache', - func_wtc, + with ( + mock.patch( + 'fdroidserver.scanner.SignatureDataController.load_from_cache', + func_lfc, + ), + mock.patch( + 'fdroidserver.scanner.SignatureDataController.load_from_defaults', + func_lfd, + ), + mock.patch( + 'fdroidserver.scanner.SignatureDataController.fetch_signatures_from_web', + func_fsfw, + ), + mock.patch( + 'fdroidserver.scanner.SignatureDataController.write_to_cache', + func_wtc, + ), ): sdc.load() func_lfc.assert_called_once_with() @@ -782,9 +807,12 @@ class Test_SignatureDataController(unittest.TestCase): ) sdc.data = {"mocked": "data"} - with mock.patch("builtins.open", open_func), mock.patch( - "fdroidserver.scanner._scanner_cachedir", - return_value=pathlib.Path('.'), + with ( + mock.patch("builtins.open", open_func), + mock.patch( + "fdroidserver.scanner._scanner_cachedir", + return_value=pathlib.Path('.'), + ), ): sdc.write_to_cache()