summaryrefslogtreecommitdiffstats
path: root/python/mozbuild/mozbuild/test/test_android_version_code.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/mozbuild/mozbuild/test/test_android_version_code.py')
-rw-r--r--python/mozbuild/mozbuild/test/test_android_version_code.py111
1 files changed, 111 insertions, 0 deletions
diff --git a/python/mozbuild/mozbuild/test/test_android_version_code.py b/python/mozbuild/mozbuild/test/test_android_version_code.py
new file mode 100644
index 0000000000..7600ebe0d8
--- /dev/null
+++ b/python/mozbuild/mozbuild/test/test_android_version_code.py
@@ -0,0 +1,111 @@
+# 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/.
+
+import unittest
+
+from mozunit import main
+
+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_api16 = 0b01111000001000000001001001110001
+ arm64_api21 = 0b01111000001000000001001001110100
+ x86_api9 = 0b01111000001000000001001001110100
+ self.assertEqual(
+ android_version_code_v1(
+ buildid, cpu_arch="armeabi-v7a", min_sdk=16, max_sdk=None
+ ),
+ arm_api16,
+ )
+ self.assertEqual(
+ android_version_code_v1(
+ buildid, cpu_arch="arm64-v8a", min_sdk=21, max_sdk=None
+ ),
+ arm64_api21,
+ )
+ 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()