relesetools: Enable releasetools_test in presubmit.
About half of the testcases rely on external tools (i.e. the ones in `otatools.zip`, which are external to releasetools module, but still built by Android). It's WAI as releasetools scripts are mostly for gluing purpose. However, the current support in Soong doesn't allow packing the helper modules as part of the built releasetools_test. This CL adds a decorator that allows declaring external dependencies in testcases, which will be skipped while running in presubmit. It doesn't affect local invocation of `atest releasetools_test`. Fixes: 112080715 Test: `atest releasetools_test` Test: TreeHugger; check that releasetools_test is invoked (and test passes). Change-Id: I8fdeb6549023cf5ddeb79d610c7c37cf9f13d3cc
This commit is contained in:
@@ -24,7 +24,8 @@ import random
|
||||
import common
|
||||
import sparse_img
|
||||
from rangelib import RangeSet
|
||||
from test_utils import get_testdata_dir, ReleaseToolsTestCase
|
||||
from test_utils import (
|
||||
get_testdata_dir, ReleaseToolsTestCase, SkipIfExternalToolsUnavailable)
|
||||
from verity_utils import (
|
||||
CreateHashtreeInfoGenerator, CreateVerityImageBuilder, HashtreeInfo,
|
||||
VerifiedBootVersion1HashtreeInfoGenerator)
|
||||
@@ -89,6 +90,7 @@ class VerifiedBootVersion1HashtreeInfoGeneratorTest(ReleaseToolsTestCase):
|
||||
|
||||
return output_file
|
||||
|
||||
@SkipIfExternalToolsUnavailable()
|
||||
def test_CreateHashtreeInfoGenerator(self):
|
||||
image_file = sparse_img.SparseImage(self._generate_image())
|
||||
|
||||
@@ -99,6 +101,7 @@ class VerifiedBootVersion1HashtreeInfoGeneratorTest(ReleaseToolsTestCase):
|
||||
self.assertEqual(self.partition_size, generator.partition_size)
|
||||
self.assertTrue(generator.fec_supported)
|
||||
|
||||
@SkipIfExternalToolsUnavailable()
|
||||
def test_DecomposeSparseImage(self):
|
||||
image_file = sparse_img.SparseImage(self._generate_image())
|
||||
|
||||
@@ -109,6 +112,7 @@ class VerifiedBootVersion1HashtreeInfoGeneratorTest(ReleaseToolsTestCase):
|
||||
self.assertEqual(12288, generator.hashtree_size)
|
||||
self.assertEqual(32768, generator.metadata_size)
|
||||
|
||||
@SkipIfExternalToolsUnavailable()
|
||||
def test_ParseHashtreeMetadata(self):
|
||||
image_file = sparse_img.SparseImage(self._generate_image())
|
||||
generator = VerifiedBootVersion1HashtreeInfoGenerator(
|
||||
@@ -123,6 +127,7 @@ class VerifiedBootVersion1HashtreeInfoGeneratorTest(ReleaseToolsTestCase):
|
||||
self.assertEqual(self.fixed_salt, generator.hashtree_info.salt)
|
||||
self.assertEqual(self.expected_root_hash, generator.hashtree_info.root_hash)
|
||||
|
||||
@SkipIfExternalToolsUnavailable()
|
||||
def test_ValidateHashtree_smoke(self):
|
||||
generator = VerifiedBootVersion1HashtreeInfoGenerator(
|
||||
self.partition_size, 4096, True)
|
||||
@@ -138,6 +143,7 @@ class VerifiedBootVersion1HashtreeInfoGeneratorTest(ReleaseToolsTestCase):
|
||||
|
||||
self.assertTrue(generator.ValidateHashtree())
|
||||
|
||||
@SkipIfExternalToolsUnavailable()
|
||||
def test_ValidateHashtree_failure(self):
|
||||
generator = VerifiedBootVersion1HashtreeInfoGenerator(
|
||||
self.partition_size, 4096, True)
|
||||
@@ -153,6 +159,7 @@ class VerifiedBootVersion1HashtreeInfoGeneratorTest(ReleaseToolsTestCase):
|
||||
|
||||
self.assertFalse(generator.ValidateHashtree())
|
||||
|
||||
@SkipIfExternalToolsUnavailable()
|
||||
def test_Generate(self):
|
||||
image_file = sparse_img.SparseImage(self._generate_image())
|
||||
generator = CreateHashtreeInfoGenerator('system', 4096, self.prop_dict)
|
||||
@@ -193,6 +200,7 @@ class VerifiedBootVersion1VerityImageBuilderTest(ReleaseToolsTestCase):
|
||||
del prop_dict['verity_block_device']
|
||||
self.assertIsNone(CreateVerityImageBuilder(prop_dict))
|
||||
|
||||
@SkipIfExternalToolsUnavailable()
|
||||
def test_CalculateMaxImageSize(self):
|
||||
verity_image_builder = CreateVerityImageBuilder(self.DEFAULT_PROP_DICT)
|
||||
size = verity_image_builder.CalculateMaxImageSize()
|
||||
@@ -221,11 +229,13 @@ class VerifiedBootVersion1VerityImageBuilderTest(ReleaseToolsTestCase):
|
||||
cmd = ['verity_verifier', image, '-mincrypt', verify_key]
|
||||
common.RunAndCheckOutput(cmd)
|
||||
|
||||
@SkipIfExternalToolsUnavailable()
|
||||
def test_Build(self):
|
||||
self._BuildAndVerify(
|
||||
self.DEFAULT_PROP_DICT,
|
||||
os.path.join(get_testdata_dir(), 'testkey_mincrypt'))
|
||||
|
||||
@SkipIfExternalToolsUnavailable()
|
||||
def test_Build_SanityCheck(self):
|
||||
# A sanity check for the test itself: the image shouldn't be verifiable
|
||||
# with wrong key.
|
||||
@@ -235,6 +245,7 @@ class VerifiedBootVersion1VerityImageBuilderTest(ReleaseToolsTestCase):
|
||||
self.DEFAULT_PROP_DICT,
|
||||
os.path.join(get_testdata_dir(), 'verity_mincrypt'))
|
||||
|
||||
@SkipIfExternalToolsUnavailable()
|
||||
def test_Build_FecDisabled(self):
|
||||
prop_dict = copy.deepcopy(self.DEFAULT_PROP_DICT)
|
||||
del prop_dict['verity_fec']
|
||||
@@ -242,6 +253,7 @@ class VerifiedBootVersion1VerityImageBuilderTest(ReleaseToolsTestCase):
|
||||
prop_dict,
|
||||
os.path.join(get_testdata_dir(), 'testkey_mincrypt'))
|
||||
|
||||
@SkipIfExternalToolsUnavailable()
|
||||
def test_Build_SquashFs(self):
|
||||
verity_image_builder = CreateVerityImageBuilder(self.DEFAULT_PROP_DICT)
|
||||
verity_image_builder.CalculateMaxImageSize()
|
||||
@@ -282,6 +294,7 @@ class VerifiedBootVersion2VerityImageBuilderTest(ReleaseToolsTestCase):
|
||||
verity_image_builder = CreateVerityImageBuilder(prop_dict)
|
||||
self.assertIsNone(verity_image_builder)
|
||||
|
||||
@SkipIfExternalToolsUnavailable()
|
||||
def test_Build(self):
|
||||
prop_dict = copy.deepcopy(self.DEFAULT_PROP_DICT)
|
||||
verity_image_builder = CreateVerityImageBuilder(prop_dict)
|
||||
|
Reference in New Issue
Block a user