diff --git a/tools/test/build_api/build_api_test.py b/tools/test/build_api/build_api_test.py index 2fcfc947b8..cc397df839 100644 --- a/tools/test/build_api/build_api_test.py +++ b/tools/test/build_api/build_api_test.py @@ -18,11 +18,14 @@ limitations under the License. import unittest from collections import namedtuple from mock import patch, MagicMock -from tools.build_api import prepare_toolchain, build_project, build_library +from tools.build_api import prepare_toolchain, build_project, build_library, merge_region_list from tools.resources import Resources from tools.toolchains import TOOLCHAINS from tools.notifier.mock import MockNotifier - +from tools.config import Region +from tools.utils import ToolException +from intelhex import IntelHex +import intelhex """ Tests for build_api.py """ @@ -240,5 +243,36 @@ class BuildApiTests(unittest.TestCase): self.assertEqual(args[1]['app_config'], None, "prepare_toolchain was called with an incorrect app_config") + @patch('tools.build_api.intelhex_offset') + @patch('tools.config') + def test_merge_region_no_fit(self, mock_config, mock_intelhex_offset): + """ + Test that merge region fails as expected when part size overflows region size. + """ + max_addr = 87444 + # create a dummy hex file with above max_addr + mock_intelhex_offset.return_value = IntelHex({0:2, max_addr:0}) + + # create application and post-application regions and merge. + region_application = Region("application", 10000, 86000, True, "random.hex") + region_post_application = Region("postapplication", 100000, 90000, False, None) + + notify = MockNotifier() + region_list = [region_application, region_post_application] + # path to store the result in, should not get used as we expect exception. + res = "./" + mock_config.target.restrict_size = 90000 + toolexception = False + + try: + merge_region_list(region_list, res, notify, mock_config) + except ToolException: + toolexception = True + except Exception as e: + print("%s %s" % (e.message, e.args)) + + self.assertTrue(toolexception, "Expected ToolException not raised") + + if __name__ == '__main__': unittest.main()