| # This Source Code Form is subject to the terms of the Mozilla Public |
| # License, v. 2.0. If a copy of the MPL was not distributed with this |
| # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
| |
| from mozunit import main |
| import unittest |
| |
| from mozbuild.android_version_code import ( |
| android_version_code_v0, |
| android_version_code_v1, |
| ) |
| |
| class TestAndroidVersionCode(unittest.TestCase): |
| def test_android_version_code_v0(self): |
| # From https://treeherder.mozilla.org/#/jobs?repo=mozilla-central&revision=e25de9972a77. |
| buildid = '20150708104620' |
| arm_api9 = 2015070819 |
| arm_api11 = 2015070821 |
| x86_api9 = 2015070822 |
| self.assertEqual(android_version_code_v0(buildid, cpu_arch='armeabi', min_sdk=9, max_sdk=None), arm_api9) |
| self.assertEqual(android_version_code_v0(buildid, cpu_arch='armeabi-v7a', min_sdk=11, max_sdk=None), arm_api11) |
| self.assertEqual(android_version_code_v0(buildid, cpu_arch='x86', min_sdk=9, max_sdk=None), x86_api9) |
| |
| def test_android_version_code_v1(self): |
| buildid = '20150825141628' |
| arm_api9 = 0b01111000001000000001001001110000 |
| arm_api11 = 0b01111000001000000001001001110001 |
| arm_api14 = 0b01111000001000000001001001110001 |
| x86_api9 = 0b01111000001000000001001001110100 |
| self.assertEqual(android_version_code_v1(buildid, cpu_arch='armeabi', min_sdk=9, max_sdk=None), arm_api9) |
| self.assertEqual(android_version_code_v1(buildid, cpu_arch='armeabi-v7a', min_sdk=11, max_sdk=None), arm_api11) |
| self.assertEqual(android_version_code_v1(buildid, cpu_arch='armeabi-v7a', min_sdk=14, max_sdk=None), arm_api14) |
| self.assertEqual(android_version_code_v1(buildid, cpu_arch='x86', min_sdk=9, max_sdk=None), x86_api9) |
| |
| def test_android_version_code_v1_underflow(self): |
| '''Verify that it is an error to ask for v1 codes predating the cutoff.''' |
| buildid = '201508010000' # Earliest possible. |
| arm_api9 = 0b01111000001000000000000000000000 |
| self.assertEqual(android_version_code_v1(buildid, cpu_arch='armeabi', min_sdk=9, max_sdk=None), arm_api9) |
| with self.assertRaises(ValueError) as cm: |
| underflow = '201507310000' # Latest possible (valid) underflowing date. |
| android_version_code_v1(underflow, cpu_arch='armeabi', min_sdk=9, max_sdk=None) |
| self.assertTrue('underflow' in cm.exception.message) |
| |
| def test_android_version_code_v1_running_low(self): |
| '''Verify there is an informative message if one asks for v1 codes that are close to overflow.''' |
| with self.assertRaises(ValueError) as cm: |
| overflow = '20290801000000' |
| android_version_code_v1(overflow, cpu_arch='armeabi', min_sdk=9, max_sdk=None) |
| self.assertTrue('Running out of low order bits' in cm.exception.message) |
| |
| def test_android_version_code_v1_overflow(self): |
| '''Verify that it is an error to ask for v1 codes that actually does overflow.''' |
| with self.assertRaises(ValueError) as cm: |
| overflow = '20310801000000' |
| android_version_code_v1(overflow, cpu_arch='armeabi', min_sdk=9, max_sdk=None) |
| self.assertTrue('overflow' in cm.exception.message) |
| |
| def test_android_version_code_v0_relative_v1(self): |
| '''Verify that the first v1 code is greater than the equivalent v0 code.''' |
| buildid = '20150801000000' |
| self.assertGreater(android_version_code_v1(buildid, cpu_arch='armeabi', min_sdk=9, max_sdk=None), |
| android_version_code_v0(buildid, cpu_arch='armeabi', min_sdk=9, max_sdk=None)) |
| |
| |
| if __name__ == '__main__': |
| main() |