| # Copyright 2019 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import unittest |
| |
| from android_chrome_version import GenerateVersionCodes |
| |
| |
| class _VersionTest(unittest.TestCase): |
| """Unittests for the android_chrome_version module. |
| """ |
| |
| EXAMPLE_VERSION_VALUES = { |
| 'MAJOR': '74', |
| 'MINOR': '0', |
| 'BUILD': '3720', |
| 'PATCH': '0', |
| } |
| |
| def testGenerateVersionCodesAndroidChrome(self): |
| """Assert it gives correct values for standard/example inputs""" |
| output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='arm', is_next_build=False) |
| |
| chrome_version_code = output['CHROME_VERSION_CODE'] |
| |
| self.assertEqual(chrome_version_code, '372000000') |
| |
| def testGenerateVersionCodesAndroidChromeModern(self): |
| """Assert it gives correct values for standard/example inputs""" |
| output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='arm', is_next_build=False) |
| |
| chrome_modern_version_code = output['CHROME_MODERN_VERSION_CODE'] |
| |
| self.assertEqual(chrome_modern_version_code, '372000010') |
| |
| def testGenerateVersionCodesAndroidMonochrome(self): |
| """Assert it gives correct values for standard/example inputs""" |
| output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='arm', is_next_build=False) |
| |
| monochrome_version_code = output['MONOCHROME_VERSION_CODE'] |
| |
| self.assertEqual(monochrome_version_code, '372000020') |
| |
| def testGenerateVersionCodesAndroidTrichrome(self): |
| """Assert it gives correct values for standard/example inputs""" |
| output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='arm', is_next_build=False) |
| |
| trichrome_version_code = output['TRICHROME_VERSION_CODE'] |
| |
| self.assertEqual(trichrome_version_code, '372000030') |
| |
| def testGenerateVersionCodesAndroidWebviewStable(self): |
| """Assert it gives correct values for standard/example inputs""" |
| output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='arm', is_next_build=False) |
| |
| webview_stable_version_code = output['WEBVIEW_STABLE_VERSION_CODE'] |
| |
| self.assertEqual(webview_stable_version_code, '372000000') |
| |
| def testGenerateVersionCodesAndroidWebviewBeta(self): |
| """Assert it gives correct values for standard/example inputs""" |
| output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='arm', is_next_build=False) |
| |
| webview_beta_version_code = output['WEBVIEW_BETA_VERSION_CODE'] |
| |
| self.assertEqual(webview_beta_version_code, '372000010') |
| |
| def testGenerateVersionCodesAndroidWebviewDev(self): |
| """Assert it gives correct values for standard/example inputs""" |
| output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='arm', is_next_build=False) |
| |
| webview_dev_version_code = output['WEBVIEW_DEV_VERSION_CODE'] |
| |
| self.assertEqual(webview_dev_version_code, '372000020') |
| |
| def testGenerateVersionCodesAndroidNextBuild(self): |
| """Assert it handles "next" builds correctly""" |
| output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='arm', is_next_build=True) |
| |
| # Get just a sample of values |
| chrome_version_code = output['CHROME_VERSION_CODE'] |
| monochrome_version_code = output['MONOCHROME_VERSION_CODE'] |
| webview_stable_version_code = output['WEBVIEW_STABLE_VERSION_CODE'] |
| webview_beta_version_code = output['WEBVIEW_BETA_VERSION_CODE'] |
| |
| self.assertEqual(chrome_version_code, '372000050') |
| self.assertEqual(monochrome_version_code, '372000070') |
| self.assertEqual(webview_stable_version_code, '372000050') |
| self.assertEqual(webview_beta_version_code, '372000060') |
| |
| def testGenerateVersionCodesAndroidArchArm(self): |
| """Assert it handles different architectures correctly. |
| |
| Version codes for different builds need to be distinct and maintain a |
| certain ordering. |
| See docs in android_chrome_version._ABIS_TO_BIT_MASK for |
| reasoning. |
| """ |
| output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='arm', is_next_build=False) |
| arch_chrome_version_code = output['CHROME_VERSION_CODE'] |
| |
| self.assertEqual(arch_chrome_version_code, '372000000') |
| |
| def testGenerateVersionCodesAndroidArchX86(self): |
| """Assert it handles different architectures correctly. |
| |
| Version codes for different builds need to be distinct and maintain a |
| certain ordering. |
| See docstring on android_chrome_version._ABIS_TO_BIT_MASK for |
| reasoning. |
| """ |
| output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='x86', is_next_build=False) |
| arch_chrome_version_code = output['CHROME_VERSION_CODE'] |
| |
| self.assertEqual(arch_chrome_version_code, '372000001') |
| |
| def testGenerateVersionCodesAndroidArchMips(self): |
| """Assert it handles different architectures correctly. |
| |
| Version codes for different builds need to be distinct and maintain a |
| certain ordering. |
| See docstring on android_chrome_version._ABIS_TO_BIT_MASK for |
| reasoning. |
| """ |
| output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='mipsel', is_next_build=False) |
| arch_chrome_version_code = output['CHROME_VERSION_CODE'] |
| |
| self.assertEqual(arch_chrome_version_code, '372000002') |
| |
| def testGenerateVersionCodesAndroidArchArm64(self): |
| """Assert it handles different architectures correctly. |
| |
| Version codes for different builds need to be distinct and maintain a |
| certain ordering. |
| See docstring on android_chrome_version._ABIS_TO_BIT_MASK for |
| reasoning. |
| """ |
| output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='arm64', is_next_build=False) |
| arch_chrome_version_code = output['CHROME_VERSION_CODE'] |
| |
| self.assertEqual(arch_chrome_version_code, '372000005') |
| |
| def testGenerateVersionCodesAndroidArchArm64Variants(self): |
| """Assert it handles 64-bit-specific additional version codes correctly. |
| |
| Some additional version codes are generated for 64-bit architectures. |
| See docstring on android_chrome_version.ARCH64_APK_VARIANTS for more info. |
| """ |
| output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='arm64', is_next_build=False) |
| arch_monochrome_version_code = output['MONOCHROME_VERSION_CODE'] |
| arch_monochrome_32_version_code = output['MONOCHROME_32_VERSION_CODE'] |
| arch_monochrome_32_64_version_code = output['MONOCHROME_32_64_VERSION_CODE'] |
| arch_monochrome_64_32_version_code = output['MONOCHROME_64_32_VERSION_CODE'] |
| arch_monochrome_64_version_code = output['MONOCHROME_64_VERSION_CODE'] |
| arch_trichrome_version_code = output['TRICHROME_VERSION_CODE'] |
| arch_trichrome_32_version_code = output['TRICHROME_32_VERSION_CODE'] |
| arch_trichrome_32_64_version_code = output['TRICHROME_32_64_VERSION_CODE'] |
| arch_trichrome_64_32_version_code = output['TRICHROME_64_32_VERSION_CODE'] |
| arch_trichrome_64_version_code = output['TRICHROME_64_VERSION_CODE'] |
| |
| self.assertEqual(arch_monochrome_32_version_code, '372000020') |
| self.assertEqual(arch_monochrome_32_64_version_code, '372000023') |
| self.assertEqual(arch_monochrome_version_code, '372000023') |
| self.assertEqual(arch_monochrome_64_32_version_code, '372000024') |
| self.assertEqual(arch_monochrome_64_version_code, '372000025') |
| self.assertEqual(arch_trichrome_32_version_code, '372000030') |
| self.assertEqual(arch_trichrome_32_64_version_code, '372000033') |
| self.assertEqual(arch_trichrome_version_code, '372000033') |
| self.assertEqual(arch_trichrome_64_32_version_code, '372000034') |
| self.assertEqual(arch_trichrome_64_version_code, '372000035') |
| |
| def testGenerateVersionCodesAndroidArchX64(self): |
| """Assert it handles different architectures correctly. |
| |
| Version codes for different builds need to be distinct and maintain a |
| certain ordering. |
| See docstring on android_chrome_version._ABIS_TO_BIT_MASK for |
| reasoning. |
| """ |
| output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='x64', is_next_build=False) |
| arch_chrome_version_code = output['CHROME_VERSION_CODE'] |
| |
| self.assertEqual(arch_chrome_version_code, '372000008') |
| |
| def testGenerateVersionCodesAndroidArchX64Variants(self): |
| """Assert it handles 64-bit-specific additional version codes correctly. |
| |
| Some additional version codes are generated for 64-bit architectures. |
| See docstring on android_chrome_version.ARCH64_APK_VARIANTS for more info. |
| """ |
| output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='x64', is_next_build=False) |
| arch_monochrome_32_version_code = output['MONOCHROME_32_VERSION_CODE'] |
| arch_monochrome_32_64_version_code = output['MONOCHROME_32_64_VERSION_CODE'] |
| arch_monochrome_version_code = output['MONOCHROME_VERSION_CODE'] |
| arch_monochrome_64_32_version_code = output['MONOCHROME_64_32_VERSION_CODE'] |
| arch_monochrome_64_version_code = output['MONOCHROME_64_VERSION_CODE'] |
| arch_trichrome_32_version_code = output['TRICHROME_32_VERSION_CODE'] |
| arch_trichrome_32_64_version_code = output['TRICHROME_32_64_VERSION_CODE'] |
| arch_trichrome_version_code = output['TRICHROME_VERSION_CODE'] |
| arch_trichrome_64_32_version_code = output['TRICHROME_64_32_VERSION_CODE'] |
| arch_trichrome_64_version_code = output['TRICHROME_64_VERSION_CODE'] |
| |
| self.assertEqual(arch_monochrome_32_version_code, '372000021') |
| self.assertEqual(arch_monochrome_32_64_version_code, '372000026') |
| self.assertEqual(arch_monochrome_version_code, '372000026') |
| self.assertEqual(arch_monochrome_64_32_version_code, '372000027') |
| self.assertEqual(arch_monochrome_64_version_code, '372000028') |
| self.assertEqual(arch_trichrome_32_version_code, '372000031') |
| self.assertEqual(arch_trichrome_32_64_version_code, '372000036') |
| self.assertEqual(arch_trichrome_version_code, '372000036') |
| self.assertEqual(arch_trichrome_64_32_version_code, '372000037') |
| self.assertEqual(arch_trichrome_64_version_code, '372000038') |
| |
| def testGenerateVersionCodesAndroidArchOrderArm(self): |
| """Assert it handles different architectures correctly. |
| |
| Version codes for different builds need to be distinct and maintain a |
| certain ordering. |
| See docstring on android_chrome_version._ABIS_TO_BIT_MASK for |
| reasoning. |
| |
| Test arm-related values. |
| """ |
| arm_output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='arm', is_next_build=False) |
| arm64_output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='arm64', is_next_build=False) |
| |
| arm_chrome_version_code = arm_output['CHROME_VERSION_CODE'] |
| arm64_chrome_version_code = arm64_output['CHROME_VERSION_CODE'] |
| |
| self.assertLess(arm_chrome_version_code, arm64_chrome_version_code) |
| |
| def testGenerateVersionCodesAndroidArchOrderX86(self): |
| """Assert it handles different architectures correctly. |
| |
| Version codes for different builds need to be distinct and maintain a |
| certain ordering. |
| See docstring on android_chrome_version._ABIS_TO_BIT_MASK for |
| reasoning. |
| |
| Test x86-related values. |
| """ |
| x86_output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='x86', is_next_build=False) |
| x64_output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='x64', is_next_build=False) |
| |
| x86_chrome_version_code = x86_output['CHROME_VERSION_CODE'] |
| x64_chrome_version_code = x64_output['CHROME_VERSION_CODE'] |
| |
| self.assertLess(x86_chrome_version_code, x64_chrome_version_code) |
| |
| def testGenerateVersionCodesAndroidWebviewChannelOrderBeta(self): |
| """Assert webview beta channel is higher than stable. |
| |
| The channel-specific version codes for standalone webview needs to follow |
| the order stable < beta < dev. |
| |
| This allows that if a user opts into beta track, they will always have the |
| beta apk, including any finch experiments targeted at beta users, even when |
| beta and stable channels are otherwise on the same version. |
| """ |
| output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='arm', is_next_build=False) |
| |
| webview_stable_version_code = output['WEBVIEW_STABLE_VERSION_CODE'] |
| webview_beta_version_code = output['WEBVIEW_BETA_VERSION_CODE'] |
| |
| self.assertGreater(webview_beta_version_code, webview_stable_version_code) |
| |
| def testGenerateVersionCodesAndroidWebviewChannelOrderDev(self): |
| """Assert webview dev channel is higher than beta. |
| |
| The channel-specific version codes for standalone webview needs to follow |
| the order stable < beta < dev. |
| |
| This allows that if a user opts into dev track, they will always have the |
| dev apk, including any finch experiments targeted at dev users, even when |
| dev and beta channels are otherwise on the same version. |
| """ |
| output = GenerateVersionCodes( |
| self.EXAMPLE_VERSION_VALUES, arch='arm', is_next_build=False) |
| |
| webview_beta_version_code = output['WEBVIEW_BETA_VERSION_CODE'] |
| webview_dev_version_code = output['WEBVIEW_DEV_VERSION_CODE'] |
| |
| self.assertGreater(webview_dev_version_code, webview_beta_version_code) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |