From de60aeb525d7201c634b185f137d5e4e591603d8 Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Wed, 16 Mar 2022 13:28:19 +0000 Subject: [PATCH] Improve testing of mainline_modules_sdks.py Adds a test for a com.google name module and makes the structure of the test snapshot created by FakeSnapshotBuilder.create_snapshot_file() match the names used in an actual sdk snapshot. Bug: 218685706 Test: atest --host mainline_modules_sdks_test pyformat -s 4 --force_quote_type double -i build/mainline_modules_sdks*.py /usr/bin/pylint --rcfile $ANDROID_BUILD_TOP/tools/repohooks/tools/pylintrc build/mainline_modules_sdks*.py Change-Id: Ia11cbb2da717218ba0b2da9a2238856dc8cebf8f --- build/mainline_modules_sdks.py | 12 +++++++++ build/mainline_modules_sdks_test.py | 38 ++++++++++++++++++++--------- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/build/mainline_modules_sdks.py b/build/mainline_modules_sdks.py index 912646f..0db4c78 100755 --- a/build/mainline_modules_sdks.py +++ b/build/mainline_modules_sdks.py @@ -736,6 +736,18 @@ def create_producer(): ) +def aosp_to_google(module): + """Transform an AOSP module into a Google module""" + new_apex = aosp_to_google_name(module.apex) + # Create a copy of the AOSP module with the internal specific APEX name. + return dataclasses.replace(module, apex=new_apex) + + +def aosp_to_google_name(name): + """Transform an AOSP module name into a Google module name""" + return name.replace("com.android.", "com.google.android.") + + def filter_modules(modules): target_build_apps = os.environ.get("TARGET_BUILD_APPS") if target_build_apps: diff --git a/build/mainline_modules_sdks_test.py b/build/mainline_modules_sdks_test.py index 740e0af..3560367 100644 --- a/build/mainline_modules_sdks_test.py +++ b/build/mainline_modules_sdks_test.py @@ -14,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. """Unit tests for mainline_modules_sdks.py.""" +import re from pathlib import Path import os import tempfile @@ -33,15 +34,19 @@ class FakeSnapshotBuilder(mm.SnapshotBuilder): modules. """ + @staticmethod + def create_sdk_library_files(z, name): + z.writestr(f"sdk_library/public/{name}-removed.txt", "") + z.writestr(f"sdk_library/public/{name}.srcjar", "") + z.writestr(f"sdk_library/public/{name}-stubs.jar", "") + z.writestr(f"sdk_library/public/{name}.txt", "") + def create_snapshot_file(self, name, version): zip_file = Path(self.get_sdk_path(name, version)) with zipfile.ZipFile(zip_file, "w") as z: z.writestr("Android.bp", "") if name.endswith("-sdk"): - z.writestr("sdk_library/public/removed.txt", "") - z.writestr("sdk_library/public/source.srcjar", "") - z.writestr("sdk_library/public/lib.jar", "") - z.writestr("sdk_library/public/api.txt", "") + self.create_sdk_library_files(z, re.sub(r"-.*$", "", name)) def build_snapshots(self, build_release, sdk_versions, modules): # Create input file structure. @@ -67,6 +72,8 @@ class TestProduceDist(unittest.TestCase): modules = [ MAINLINE_MODULES_BY_APEX["com.android.art"], MAINLINE_MODULES_BY_APEX["com.android.ipsec"], + # Create a google specific module. + mm.aosp_to_google(MAINLINE_MODULES_BY_APEX["com.android.wifi"]), ] subprocess_runner = mm.SubprocessRunner() @@ -105,24 +112,31 @@ class TestProduceDist(unittest.TestCase): "mainline-sdks/current/com.android.art/sdk/art-module-sdk-current.zip", "mainline-sdks/current/com.android.art/test-exports/art-module-test-exports-current.zip", "mainline-sdks/current/com.android.ipsec/sdk/ipsec-module-sdk-current.zip", + "mainline-sdks/current/com.google.android.wifi/sdk/wifi-module-sdk-current.zip", # Build specific snapshots. "mainline-sdks/for-S-build/current/com.android.art/host-exports/art-module-host-exports-current.zip", "mainline-sdks/for-S-build/current/com.android.art/sdk/art-module-sdk-current.zip", "mainline-sdks/for-S-build/current/com.android.art/test-exports/art-module-test-exports-current.zip", "mainline-sdks/for-S-build/current/com.android.ipsec/sdk/ipsec-module-sdk-current.zip", + "mainline-sdks/for-S-build/current/com.google.android.wifi/sdk/wifi-module-sdk-current.zip", "mainline-sdks/for-latest-build/current/com.android.art/host-exports/art-module-host-exports-current.zip", "mainline-sdks/for-latest-build/current/com.android.art/sdk/art-module-sdk-current.zip", "mainline-sdks/for-latest-build/current/com.android.art/test-exports/art-module-test-exports-current.zip", "mainline-sdks/for-latest-build/current/com.android.ipsec/sdk/ipsec-module-sdk-current.zip", + "mainline-sdks/for-latest-build/current/com.google.android.wifi/sdk/wifi-module-sdk-current.zip", # Legacy stubs directory containing unpacked java_sdk_library artifacts. - "stubs/com.android.art/sdk_library/public/api.txt", - "stubs/com.android.art/sdk_library/public/lib.jar", - "stubs/com.android.art/sdk_library/public/removed.txt", - "stubs/com.android.art/sdk_library/public/source.srcjar", - "stubs/com.android.ipsec/sdk_library/public/api.txt", - "stubs/com.android.ipsec/sdk_library/public/lib.jar", - "stubs/com.android.ipsec/sdk_library/public/removed.txt", - "stubs/com.android.ipsec/sdk_library/public/source.srcjar", + "stubs/com.android.art/sdk_library/public/art-removed.txt", + "stubs/com.android.art/sdk_library/public/art-stubs.jar", + "stubs/com.android.art/sdk_library/public/art.srcjar", + "stubs/com.android.art/sdk_library/public/art.txt", + "stubs/com.android.ipsec/sdk_library/public/ipsec-removed.txt", + "stubs/com.android.ipsec/sdk_library/public/ipsec-stubs.jar", + "stubs/com.android.ipsec/sdk_library/public/ipsec.srcjar", + "stubs/com.android.ipsec/sdk_library/public/ipsec.txt", + "stubs/com.google.android.wifi/sdk_library/public/wifi-removed.txt", + "stubs/com.google.android.wifi/sdk_library/public/wifi-stubs.jar", + "stubs/com.google.android.wifi/sdk_library/public/wifi.srcjar", + "stubs/com.google.android.wifi/sdk_library/public/wifi.txt", ], sorted(files))