Enable virtual versions >= 4
In some cases we may need to have virtual versions >= 4, such as if
there is a board which inherits another board overlay. This adjusts
the pre-upload script to allow for these.
BUG=None
TEST=Try uploading a CL with a virtual that is version 4.
Change-Id: I289b2c85430cf134050dfea6d0ca4f2f190600d2
Reviewed-on: https://chromium-review.googlesource.com/321724
Commit-Ready: Bernie Thompson <bhthompson@chromium.org>
Tested-by: Bernie Thompson <bhthompson@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
diff --git a/pre-upload.py b/pre-upload.py
index 0fe499d..a98b16c 100755
--- a/pre-upload.py
+++ b/pre-upload.py
@@ -819,7 +819,11 @@
pv = m.group(3).split('-', 1)[0]
- if is_private(overlay):
+ # Virtual versions >= 4 are special cases used above the standard
+ # versioning structure, e.g. if one has a board inheriting a board.
+ if float(pv) >= 4:
+ want_pv = pv
+ elif is_private(overlay):
want_pv = '3.5' if is_variant(overlay) else '3'
elif is_board(overlay):
want_pv = '2.5' if is_variant(overlay) else '2'
diff --git a/pre-upload_unittest.py b/pre-upload_unittest.py
index d4f458d..36ec973 100755
--- a/pre-upload_unittest.py
+++ b/pre-upload_unittest.py
@@ -453,10 +453,16 @@
ret = pre_upload._check_ebuild_virtual_pv(self.PRIVATE_VARIANT_OVERLAY, 'H')
self.assertEqual(ret, None)
+ def testSpecialVirtuals(self):
+ """Some cases require deeper versioning and can be >= 4."""
+ template = 'virtual/foo/foo-%s.ebuild'
self.file_mock.return_value = [template % '4']
ret = pre_upload._check_ebuild_virtual_pv(self.PRIVATE_VARIANT_OVERLAY, 'H')
- self.assertTrue(isinstance(ret, errors.HookFailure))
+ self.assertEqual(ret, None)
+ self.file_mock.return_value = [template % '4.5']
+ ret = pre_upload._check_ebuild_virtual_pv(self.PRIVATE_VARIANT_OVERLAY, 'H')
+ self.assertEqual(ret, None)
class CheckCrosLicenseCopyrightHeader(cros_test_lib.MockTestCase):
"""Tests for _check_cros_license."""