the other jimmy / mbed-sdk-tools

Fork of mbed-sdk-tools by mbed official

Committer:
The Other Jimmy
Date:
Wed Jan 04 11:58:24 2017 -0600
Revision:
32:8ea194f6145b
Update tools to follow mbed-os tools release 5.3.1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
The Other Jimmy 32:8ea194f6145b 1 """
The Other Jimmy 32:8ea194f6145b 2 mbed SDK
The Other Jimmy 32:8ea194f6145b 3 Copyright (c) 2016 ARM Limited
The Other Jimmy 32:8ea194f6145b 4
The Other Jimmy 32:8ea194f6145b 5 Licensed under the Apache License, Version 2.0 (the "License");
The Other Jimmy 32:8ea194f6145b 6 you may not use this file except in compliance with the License.
The Other Jimmy 32:8ea194f6145b 7 You may obtain a copy of the License at
The Other Jimmy 32:8ea194f6145b 8
The Other Jimmy 32:8ea194f6145b 9 http://www.apache.org/licenses/LICENSE-2.0
The Other Jimmy 32:8ea194f6145b 10
The Other Jimmy 32:8ea194f6145b 11 Unless required by applicable law or agreed to in writing, software
The Other Jimmy 32:8ea194f6145b 12 distributed under the License is distributed on an "AS IS" BASIS,
The Other Jimmy 32:8ea194f6145b 13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
The Other Jimmy 32:8ea194f6145b 14 See the License for the specific language governing permissions and
The Other Jimmy 32:8ea194f6145b 15 limitations under the License.
The Other Jimmy 32:8ea194f6145b 16 """
The Other Jimmy 32:8ea194f6145b 17 import sys
The Other Jimmy 32:8ea194f6145b 18 import os
The Other Jimmy 32:8ea194f6145b 19
The Other Jimmy 32:8ea194f6145b 20 ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", ".."))
The Other Jimmy 32:8ea194f6145b 21 sys.path.insert(0, ROOT)
The Other Jimmy 32:8ea194f6145b 22
The Other Jimmy 32:8ea194f6145b 23 import unittest
The Other Jimmy 32:8ea194f6145b 24 from tools.memap import MemapParser
The Other Jimmy 32:8ea194f6145b 25 from copy import deepcopy
The Other Jimmy 32:8ea194f6145b 26
The Other Jimmy 32:8ea194f6145b 27 """
The Other Jimmy 32:8ea194f6145b 28 Tests for test_api.py
The Other Jimmy 32:8ea194f6145b 29 """
The Other Jimmy 32:8ea194f6145b 30
The Other Jimmy 32:8ea194f6145b 31 class MemapParserTests(unittest.TestCase):
The Other Jimmy 32:8ea194f6145b 32 """
The Other Jimmy 32:8ea194f6145b 33 Test cases for Test Api
The Other Jimmy 32:8ea194f6145b 34 """
The Other Jimmy 32:8ea194f6145b 35
The Other Jimmy 32:8ea194f6145b 36 def setUp(self):
The Other Jimmy 32:8ea194f6145b 37 """
The Other Jimmy 32:8ea194f6145b 38 Called before each test case
The Other Jimmy 32:8ea194f6145b 39
The Other Jimmy 32:8ea194f6145b 40 :return:
The Other Jimmy 32:8ea194f6145b 41 """
The Other Jimmy 32:8ea194f6145b 42 self.memap_parser = MemapParser()
The Other Jimmy 32:8ea194f6145b 43
The Other Jimmy 32:8ea194f6145b 44 self.memap_parser.modules = {
The Other Jimmy 32:8ea194f6145b 45 "Misc": {
The Other Jimmy 32:8ea194f6145b 46 "unknown": 0,
The Other Jimmy 32:8ea194f6145b 47 ".ARM": 8,
The Other Jimmy 32:8ea194f6145b 48 ".ARM.extab": 0,
The Other Jimmy 32:8ea194f6145b 49 ".init": 12,
The Other Jimmy 32:8ea194f6145b 50 "OUTPUT": 0,
The Other Jimmy 32:8ea194f6145b 51 ".stack": 0,
The Other Jimmy 32:8ea194f6145b 52 ".eh_frame": 0,
The Other Jimmy 32:8ea194f6145b 53 ".fini_array": 4,
The Other Jimmy 32:8ea194f6145b 54 ".heap": 0,
The Other Jimmy 32:8ea194f6145b 55 ".stabstr": 0,
The Other Jimmy 32:8ea194f6145b 56 ".interrupts_ram": 0,
The Other Jimmy 32:8ea194f6145b 57 ".init_array": 0,
The Other Jimmy 32:8ea194f6145b 58 ".stab": 0,
The Other Jimmy 32:8ea194f6145b 59 ".ARM.attributes": 7347,
The Other Jimmy 32:8ea194f6145b 60 ".bss": 8517,
The Other Jimmy 32:8ea194f6145b 61 ".flash_config": 16,
The Other Jimmy 32:8ea194f6145b 62 ".interrupts": 1024,
The Other Jimmy 32:8ea194f6145b 63 ".data": 2325,
The Other Jimmy 32:8ea194f6145b 64 ".ARM.exidx": 0,
The Other Jimmy 32:8ea194f6145b 65 ".text": 59906,
The Other Jimmy 32:8ea194f6145b 66 ".jcr": 0
The Other Jimmy 32:8ea194f6145b 67 },
The Other Jimmy 32:8ea194f6145b 68 "Fill": {
The Other Jimmy 32:8ea194f6145b 69 "unknown": 12,
The Other Jimmy 32:8ea194f6145b 70 ".ARM": 0,
The Other Jimmy 32:8ea194f6145b 71 ".ARM.extab": 0,
The Other Jimmy 32:8ea194f6145b 72 ".init": 0,
The Other Jimmy 32:8ea194f6145b 73 "OUTPUT": 0,
The Other Jimmy 32:8ea194f6145b 74 ".stack": 0,
The Other Jimmy 32:8ea194f6145b 75 ".eh_frame": 0,
The Other Jimmy 32:8ea194f6145b 76 ".fini_array": 0,
The Other Jimmy 32:8ea194f6145b 77 ".heap": 65536,
The Other Jimmy 32:8ea194f6145b 78 ".stabstr": 0,
The Other Jimmy 32:8ea194f6145b 79 ".interrupts_ram": 1024,
The Other Jimmy 32:8ea194f6145b 80 ".init_array": 0,
The Other Jimmy 32:8ea194f6145b 81 ".stab": 0,
The Other Jimmy 32:8ea194f6145b 82 ".ARM.attributes": 0,
The Other Jimmy 32:8ea194f6145b 83 ".bss": 2235,
The Other Jimmy 32:8ea194f6145b 84 ".flash_config": 0,
The Other Jimmy 32:8ea194f6145b 85 ".interrupts": 0,
The Other Jimmy 32:8ea194f6145b 86 ".data": 3,
The Other Jimmy 32:8ea194f6145b 87 ".ARM.exidx": 0,
The Other Jimmy 32:8ea194f6145b 88 ".text": 136,
The Other Jimmy 32:8ea194f6145b 89 ".jcr": 0
The Other Jimmy 32:8ea194f6145b 90 }
The Other Jimmy 32:8ea194f6145b 91 }
The Other Jimmy 32:8ea194f6145b 92
The Other Jimmy 32:8ea194f6145b 93 self.memap_parser.compute_report()
The Other Jimmy 32:8ea194f6145b 94
The Other Jimmy 32:8ea194f6145b 95 def tearDown(self):
The Other Jimmy 32:8ea194f6145b 96 """
The Other Jimmy 32:8ea194f6145b 97 Called after each test case
The Other Jimmy 32:8ea194f6145b 98
The Other Jimmy 32:8ea194f6145b 99 :return:
The Other Jimmy 32:8ea194f6145b 100 """
The Other Jimmy 32:8ea194f6145b 101 pass
The Other Jimmy 32:8ea194f6145b 102
The Other Jimmy 32:8ea194f6145b 103 def generate_test_helper(self, output_type, file_output=None):
The Other Jimmy 32:8ea194f6145b 104 """
The Other Jimmy 32:8ea194f6145b 105 Helper that ensures that the member variables "modules", "mem_report",
The Other Jimmy 32:8ea194f6145b 106 and "mem_summary" are unchanged after calling "generate_output"
The Other Jimmy 32:8ea194f6145b 107
The Other Jimmy 32:8ea194f6145b 108 :param output_type: type string that is passed to "generate_output"
The Other Jimmy 32:8ea194f6145b 109 :param file_output: path to output file that is passed to "generate_output"
The Other Jimmy 32:8ea194f6145b 110 :return:
The Other Jimmy 32:8ea194f6145b 111 """
The Other Jimmy 32:8ea194f6145b 112
The Other Jimmy 32:8ea194f6145b 113 old_modules = deepcopy(self.memap_parser.modules)
The Other Jimmy 32:8ea194f6145b 114 old_report = deepcopy(self.memap_parser.mem_report)
The Other Jimmy 32:8ea194f6145b 115 old_summary = deepcopy(self.memap_parser.mem_summary)
The Other Jimmy 32:8ea194f6145b 116 self.memap_parser.generate_output(output_type, file_output)
The Other Jimmy 32:8ea194f6145b 117 self.assertEqual(self.memap_parser.modules, old_modules,
The Other Jimmy 32:8ea194f6145b 118 "generate_output modified the 'modules' property")
The Other Jimmy 32:8ea194f6145b 119 self.assertEqual(self.memap_parser.mem_report, old_report,
The Other Jimmy 32:8ea194f6145b 120 "generate_output modified the 'mem_report' property")
The Other Jimmy 32:8ea194f6145b 121 self.assertEqual(self.memap_parser.mem_summary, old_summary,
The Other Jimmy 32:8ea194f6145b 122 "generate_output modified the 'mem_summary' property")
The Other Jimmy 32:8ea194f6145b 123
The Other Jimmy 32:8ea194f6145b 124 def test_report_computed(self):
The Other Jimmy 32:8ea194f6145b 125 """
The Other Jimmy 32:8ea194f6145b 126 Test ensures the report and summary are computed
The Other Jimmy 32:8ea194f6145b 127
The Other Jimmy 32:8ea194f6145b 128 :return:
The Other Jimmy 32:8ea194f6145b 129 """
The Other Jimmy 32:8ea194f6145b 130 self.assertTrue(self.memap_parser.mem_report)
The Other Jimmy 32:8ea194f6145b 131 self.assertTrue(self.memap_parser.mem_summary)
The Other Jimmy 32:8ea194f6145b 132 self.assertEqual(self.memap_parser.mem_report[-1]['summary'],
The Other Jimmy 32:8ea194f6145b 133 self.memap_parser.mem_summary,
The Other Jimmy 32:8ea194f6145b 134 "mem_report did not contain a correct copy of mem_summary")
The Other Jimmy 32:8ea194f6145b 135
The Other Jimmy 32:8ea194f6145b 136 def test_generate_output_table(self):
The Other Jimmy 32:8ea194f6145b 137 """
The Other Jimmy 32:8ea194f6145b 138 Test ensures that an output of type "table" can be generated correctly
The Other Jimmy 32:8ea194f6145b 139
The Other Jimmy 32:8ea194f6145b 140 :return:
The Other Jimmy 32:8ea194f6145b 141 """
The Other Jimmy 32:8ea194f6145b 142 self.generate_test_helper('table')
The Other Jimmy 32:8ea194f6145b 143
The Other Jimmy 32:8ea194f6145b 144 def test_generate_output_json(self):
The Other Jimmy 32:8ea194f6145b 145 """
The Other Jimmy 32:8ea194f6145b 146 Test ensures that an output of type "json" can be generated correctly
The Other Jimmy 32:8ea194f6145b 147
The Other Jimmy 32:8ea194f6145b 148 :return:
The Other Jimmy 32:8ea194f6145b 149 """
The Other Jimmy 32:8ea194f6145b 150 file_name = '.json_test_output.json'
The Other Jimmy 32:8ea194f6145b 151 self.generate_test_helper('json', file_output=file_name)
The Other Jimmy 32:8ea194f6145b 152 self.assertTrue(os.path.exists(file_name), "Failed to create json file")
The Other Jimmy 32:8ea194f6145b 153 os.remove(file_name)
The Other Jimmy 32:8ea194f6145b 154
The Other Jimmy 32:8ea194f6145b 155 def test_generate_output_csv_ci(self):
The Other Jimmy 32:8ea194f6145b 156 """
The Other Jimmy 32:8ea194f6145b 157 Test ensures that an output of type "csv-ci" can be generated correctly
The Other Jimmy 32:8ea194f6145b 158
The Other Jimmy 32:8ea194f6145b 159 :return:
The Other Jimmy 32:8ea194f6145b 160 """
The Other Jimmy 32:8ea194f6145b 161 file_name = '.csv_ci_test_output.csv'
The Other Jimmy 32:8ea194f6145b 162 self.generate_test_helper('csv-ci', file_output=file_name)
The Other Jimmy 32:8ea194f6145b 163 self.assertTrue(os.path.exists(file_name), "Failed to create csv-ci file")
The Other Jimmy 32:8ea194f6145b 164 os.remove(file_name)
The Other Jimmy 32:8ea194f6145b 165
The Other Jimmy 32:8ea194f6145b 166
The Other Jimmy 32:8ea194f6145b 167 if __name__ == '__main__':
The Other Jimmy 32:8ea194f6145b 168 unittest.main()