takashi kadono / Mbed OS Nucleo_446

Dependencies:   ssd1331

Committer:
kadonotakashi
Date:
Wed Oct 10 00:33:53 2018 +0000
Revision:
0:8fdf9a60065b
how to make mbed librry

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kadonotakashi 0:8fdf9a60065b 1 """
kadonotakashi 0:8fdf9a60065b 2 mbed SDK
kadonotakashi 0:8fdf9a60065b 3 Copyright (c) 2017 ARM Limited
kadonotakashi 0:8fdf9a60065b 4
kadonotakashi 0:8fdf9a60065b 5 Licensed under the Apache License, Version 2.0 (the "License");
kadonotakashi 0:8fdf9a60065b 6 you may not use this file except in compliance with the License.
kadonotakashi 0:8fdf9a60065b 7 You may obtain a copy of the License at
kadonotakashi 0:8fdf9a60065b 8
kadonotakashi 0:8fdf9a60065b 9 http://www.apache.org/licenses/LICENSE-2.0
kadonotakashi 0:8fdf9a60065b 10
kadonotakashi 0:8fdf9a60065b 11 Unless required by applicable law or agreed to in writing, software
kadonotakashi 0:8fdf9a60065b 12 distributed under the License is distributed on an "AS IS" BASIS,
kadonotakashi 0:8fdf9a60065b 13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kadonotakashi 0:8fdf9a60065b 14 See the License for the specific language governing permissions and
kadonotakashi 0:8fdf9a60065b 15 limitations under the License.
kadonotakashi 0:8fdf9a60065b 16 """
kadonotakashi 0:8fdf9a60065b 17 import sys
kadonotakashi 0:8fdf9a60065b 18 from os.path import isfile, join
kadonotakashi 0:8fdf9a60065b 19 import json
kadonotakashi 0:8fdf9a60065b 20
kadonotakashi 0:8fdf9a60065b 21 import pytest
kadonotakashi 0:8fdf9a60065b 22
kadonotakashi 0:8fdf9a60065b 23 import tools.memap
kadonotakashi 0:8fdf9a60065b 24 from tools.memap import MemapParser
kadonotakashi 0:8fdf9a60065b 25 from copy import deepcopy
kadonotakashi 0:8fdf9a60065b 26
kadonotakashi 0:8fdf9a60065b 27 """
kadonotakashi 0:8fdf9a60065b 28 Tests for test_api.py
kadonotakashi 0:8fdf9a60065b 29 """
kadonotakashi 0:8fdf9a60065b 30
kadonotakashi 0:8fdf9a60065b 31 @pytest.fixture
kadonotakashi 0:8fdf9a60065b 32 def memap_parser():
kadonotakashi 0:8fdf9a60065b 33 """
kadonotakashi 0:8fdf9a60065b 34 Called before each test case
kadonotakashi 0:8fdf9a60065b 35
kadonotakashi 0:8fdf9a60065b 36 :return:
kadonotakashi 0:8fdf9a60065b 37 """
kadonotakashi 0:8fdf9a60065b 38 memap_parser = MemapParser()
kadonotakashi 0:8fdf9a60065b 39
kadonotakashi 0:8fdf9a60065b 40 memap_parser.modules = {
kadonotakashi 0:8fdf9a60065b 41 "mbed-os/targets/TARGET/TARGET_MCUS/api/pinmap.o": {
kadonotakashi 0:8fdf9a60065b 42 ".text": 1,
kadonotakashi 0:8fdf9a60065b 43 ".data": 2,
kadonotakashi 0:8fdf9a60065b 44 ".bss": 3,
kadonotakashi 0:8fdf9a60065b 45 ".heap": 0,
kadonotakashi 0:8fdf9a60065b 46 ".stack": 0,
kadonotakashi 0:8fdf9a60065b 47 ".interrupts_ram":0,
kadonotakashi 0:8fdf9a60065b 48 ".init":0,
kadonotakashi 0:8fdf9a60065b 49 ".ARM.extab":0,
kadonotakashi 0:8fdf9a60065b 50 ".ARM.exidx":0,
kadonotakashi 0:8fdf9a60065b 51 ".ARM.attributes":0,
kadonotakashi 0:8fdf9a60065b 52 ".eh_frame":0,
kadonotakashi 0:8fdf9a60065b 53 ".init_array":0,
kadonotakashi 0:8fdf9a60065b 54 ".fini_array":0,
kadonotakashi 0:8fdf9a60065b 55 ".jcr":0,
kadonotakashi 0:8fdf9a60065b 56 ".stab":0,
kadonotakashi 0:8fdf9a60065b 57 ".stabstr":0,
kadonotakashi 0:8fdf9a60065b 58 ".ARM.exidx":0,
kadonotakashi 0:8fdf9a60065b 59 ".ARM":0,
kadonotakashi 0:8fdf9a60065b 60 ".interrupts":0,
kadonotakashi 0:8fdf9a60065b 61 ".flash_config":0,
kadonotakashi 0:8fdf9a60065b 62 "unknown":0,
kadonotakashi 0:8fdf9a60065b 63 "OUTPUT":0,
kadonotakashi 0:8fdf9a60065b 64 },
kadonotakashi 0:8fdf9a60065b 65 "[lib]/libc.a/lib_a-printf.o": {
kadonotakashi 0:8fdf9a60065b 66 ".text": 4,
kadonotakashi 0:8fdf9a60065b 67 ".data": 5,
kadonotakashi 0:8fdf9a60065b 68 ".bss": 6,
kadonotakashi 0:8fdf9a60065b 69 ".heap": 0,
kadonotakashi 0:8fdf9a60065b 70 ".stack": 0,
kadonotakashi 0:8fdf9a60065b 71 ".interrupts_ram":0,
kadonotakashi 0:8fdf9a60065b 72 ".init":0,
kadonotakashi 0:8fdf9a60065b 73 ".ARM.extab":0,
kadonotakashi 0:8fdf9a60065b 74 ".ARM.exidx":0,
kadonotakashi 0:8fdf9a60065b 75 ".ARM.attributes":0,
kadonotakashi 0:8fdf9a60065b 76 ".eh_frame":0,
kadonotakashi 0:8fdf9a60065b 77 ".init_array":0,
kadonotakashi 0:8fdf9a60065b 78 ".fini_array":0,
kadonotakashi 0:8fdf9a60065b 79 ".jcr":0,
kadonotakashi 0:8fdf9a60065b 80 ".stab":0,
kadonotakashi 0:8fdf9a60065b 81 ".stabstr":0,
kadonotakashi 0:8fdf9a60065b 82 ".ARM.exidx":0,
kadonotakashi 0:8fdf9a60065b 83 ".ARM":0,
kadonotakashi 0:8fdf9a60065b 84 ".interrupts":0,
kadonotakashi 0:8fdf9a60065b 85 ".flash_config":0,
kadonotakashi 0:8fdf9a60065b 86 "unknown":0,
kadonotakashi 0:8fdf9a60065b 87 "OUTPUT":0,
kadonotakashi 0:8fdf9a60065b 88 },
kadonotakashi 0:8fdf9a60065b 89 "main.o": {
kadonotakashi 0:8fdf9a60065b 90 ".text": 7,
kadonotakashi 0:8fdf9a60065b 91 ".data": 8,
kadonotakashi 0:8fdf9a60065b 92 ".bss": 0,
kadonotakashi 0:8fdf9a60065b 93 ".heap": 0,
kadonotakashi 0:8fdf9a60065b 94 ".stack": 0,
kadonotakashi 0:8fdf9a60065b 95 ".interrupts_ram":0,
kadonotakashi 0:8fdf9a60065b 96 ".init":0,
kadonotakashi 0:8fdf9a60065b 97 ".ARM.extab":0,
kadonotakashi 0:8fdf9a60065b 98 ".ARM.exidx":0,
kadonotakashi 0:8fdf9a60065b 99 ".ARM.attributes":0,
kadonotakashi 0:8fdf9a60065b 100 ".eh_frame":0,
kadonotakashi 0:8fdf9a60065b 101 ".init_array":0,
kadonotakashi 0:8fdf9a60065b 102 ".fini_array":0,
kadonotakashi 0:8fdf9a60065b 103 ".jcr":0,
kadonotakashi 0:8fdf9a60065b 104 ".stab":0,
kadonotakashi 0:8fdf9a60065b 105 ".stabstr":0,
kadonotakashi 0:8fdf9a60065b 106 ".ARM.exidx":0,
kadonotakashi 0:8fdf9a60065b 107 ".ARM":0,
kadonotakashi 0:8fdf9a60065b 108 ".interrupts":0,
kadonotakashi 0:8fdf9a60065b 109 ".flash_config":0,
kadonotakashi 0:8fdf9a60065b 110 "unknown":0,
kadonotakashi 0:8fdf9a60065b 111 "OUTPUT":0,
kadonotakashi 0:8fdf9a60065b 112 },
kadonotakashi 0:8fdf9a60065b 113 "test.o": {
kadonotakashi 0:8fdf9a60065b 114 ".text": 0,
kadonotakashi 0:8fdf9a60065b 115 ".data": 0,
kadonotakashi 0:8fdf9a60065b 116 ".bss": 0,
kadonotakashi 0:8fdf9a60065b 117 ".heap": 0,
kadonotakashi 0:8fdf9a60065b 118 ".stack": 0,
kadonotakashi 0:8fdf9a60065b 119 ".interrupts_ram":0,
kadonotakashi 0:8fdf9a60065b 120 ".init":0,
kadonotakashi 0:8fdf9a60065b 121 ".ARM.extab":0,
kadonotakashi 0:8fdf9a60065b 122 ".ARM.exidx":0,
kadonotakashi 0:8fdf9a60065b 123 ".ARM.attributes":0,
kadonotakashi 0:8fdf9a60065b 124 ".eh_frame":0,
kadonotakashi 0:8fdf9a60065b 125 ".init_array":0,
kadonotakashi 0:8fdf9a60065b 126 ".fini_array":0,
kadonotakashi 0:8fdf9a60065b 127 ".jcr":0,
kadonotakashi 0:8fdf9a60065b 128 ".stab":0,
kadonotakashi 0:8fdf9a60065b 129 ".stabstr":0,
kadonotakashi 0:8fdf9a60065b 130 ".ARM.exidx":0,
kadonotakashi 0:8fdf9a60065b 131 ".ARM":0,
kadonotakashi 0:8fdf9a60065b 132 ".interrupts":0,
kadonotakashi 0:8fdf9a60065b 133 ".flash_config":0,
kadonotakashi 0:8fdf9a60065b 134 "unknown":0,
kadonotakashi 0:8fdf9a60065b 135 "OUTPUT":0,
kadonotakashi 0:8fdf9a60065b 136 },
kadonotakashi 0:8fdf9a60065b 137 }
kadonotakashi 0:8fdf9a60065b 138 return memap_parser
kadonotakashi 0:8fdf9a60065b 139
kadonotakashi 0:8fdf9a60065b 140
kadonotakashi 0:8fdf9a60065b 141 def generate_test_helper(memap_parser, format, depth, sep, file_output=None):
kadonotakashi 0:8fdf9a60065b 142 """
kadonotakashi 0:8fdf9a60065b 143 Helper that tests that the member variables "modules" is
kadonotakashi 0:8fdf9a60065b 144 unchanged after calling "generate_output"
kadonotakashi 0:8fdf9a60065b 145
kadonotakashi 0:8fdf9a60065b 146 :param memap_parser: the parser object
kadonotakashi 0:8fdf9a60065b 147 :param depth: how much detail to put in the report
kadonotakashi 0:8fdf9a60065b 148 :param format: the file type to output
kadonotakashi 0:8fdf9a60065b 149 :param file_output: the file to output to
kadonotakashi 0:8fdf9a60065b 150 """
kadonotakashi 0:8fdf9a60065b 151 old_modules = deepcopy(memap_parser.modules)
kadonotakashi 0:8fdf9a60065b 152
kadonotakashi 0:8fdf9a60065b 153 tools.memap.sep = sep
kadonotakashi 0:8fdf9a60065b 154 memap_parser.generate_output(format, depth, file_output=file_output)
kadonotakashi 0:8fdf9a60065b 155
kadonotakashi 0:8fdf9a60065b 156 assert memap_parser.modules == old_modules,\
kadonotakashi 0:8fdf9a60065b 157 "generate_output modified the 'modules' property"
kadonotakashi 0:8fdf9a60065b 158
kadonotakashi 0:8fdf9a60065b 159 for file_name in memap_parser.short_modules:
kadonotakashi 0:8fdf9a60065b 160 assert(len(file_name.split(tools.memap.sep)) <= depth)
kadonotakashi 0:8fdf9a60065b 161
kadonotakashi 0:8fdf9a60065b 162
kadonotakashi 0:8fdf9a60065b 163 @pytest.mark.parametrize("depth", [1, 2, 20])
kadonotakashi 0:8fdf9a60065b 164 @pytest.mark.parametrize("sep", ["\\", "/"])
kadonotakashi 0:8fdf9a60065b 165 def test_report_computed(memap_parser, depth, sep):
kadonotakashi 0:8fdf9a60065b 166 """
kadonotakashi 0:8fdf9a60065b 167 Test that a report and summary are computed
kadonotakashi 0:8fdf9a60065b 168
kadonotakashi 0:8fdf9a60065b 169 :param memap_parser: Mocked parser
kadonotakashi 0:8fdf9a60065b 170 :param depth: the detail of the output
kadonotakashi 0:8fdf9a60065b 171 """
kadonotakashi 0:8fdf9a60065b 172
kadonotakashi 0:8fdf9a60065b 173 memap_parser.generate_output('table', depth, sep)
kadonotakashi 0:8fdf9a60065b 174
kadonotakashi 0:8fdf9a60065b 175 # Report is created after generating output
kadonotakashi 0:8fdf9a60065b 176 assert memap_parser.mem_summary
kadonotakashi 0:8fdf9a60065b 177 assert memap_parser.mem_report
kadonotakashi 0:8fdf9a60065b 178
kadonotakashi 0:8fdf9a60065b 179
kadonotakashi 0:8fdf9a60065b 180 @pytest.mark.parametrize("depth", [1, 2, 20])
kadonotakashi 0:8fdf9a60065b 181 @pytest.mark.parametrize("sep", ["\\", "/"])
kadonotakashi 0:8fdf9a60065b 182 def test_generate_output_table(memap_parser, depth, sep):
kadonotakashi 0:8fdf9a60065b 183 """
kadonotakashi 0:8fdf9a60065b 184 Test that an output of type "table" can be generated correctly
kadonotakashi 0:8fdf9a60065b 185 :param memap_parser: Mocked parser
kadonotakashi 0:8fdf9a60065b 186 :param depth: the detail of the output
kadonotakashi 0:8fdf9a60065b 187 """
kadonotakashi 0:8fdf9a60065b 188 generate_test_helper(memap_parser, 'table', depth, sep)
kadonotakashi 0:8fdf9a60065b 189
kadonotakashi 0:8fdf9a60065b 190
kadonotakashi 0:8fdf9a60065b 191 @pytest.mark.parametrize("depth", [1, 2, 20])
kadonotakashi 0:8fdf9a60065b 192 @pytest.mark.parametrize("sep", ["\\", "/"])
kadonotakashi 0:8fdf9a60065b 193 def test_generate_output_json(memap_parser, tmpdir, depth, sep):
kadonotakashi 0:8fdf9a60065b 194 """
kadonotakashi 0:8fdf9a60065b 195 Test that an output of type "json" can be generated correctly
kadonotakashi 0:8fdf9a60065b 196 :param memap_parser: Mocked parser
kadonotakashi 0:8fdf9a60065b 197 :param tmpdir: a unique location to place an output file
kadonotakashi 0:8fdf9a60065b 198 :param depth: the detail of the output
kadonotakashi 0:8fdf9a60065b 199 """
kadonotakashi 0:8fdf9a60065b 200 file_name = str(tmpdir.join('output.json').realpath())
kadonotakashi 0:8fdf9a60065b 201 generate_test_helper(memap_parser, 'json', depth, sep, file_name)
kadonotakashi 0:8fdf9a60065b 202 assert isfile(file_name), "Failed to create json file"
kadonotakashi 0:8fdf9a60065b 203 json.load(open(file_name))
kadonotakashi 0:8fdf9a60065b 204
kadonotakashi 0:8fdf9a60065b 205
kadonotakashi 0:8fdf9a60065b 206 @pytest.mark.parametrize("depth", [1, 2, 20])
kadonotakashi 0:8fdf9a60065b 207 @pytest.mark.parametrize("sep", ["\\", "/"])
kadonotakashi 0:8fdf9a60065b 208 def test_generate_output_csv_ci(memap_parser, tmpdir, depth, sep):
kadonotakashi 0:8fdf9a60065b 209 """
kadonotakashi 0:8fdf9a60065b 210 Test ensures that an output of type "csv-ci" can be generated correctly
kadonotakashi 0:8fdf9a60065b 211
kadonotakashi 0:8fdf9a60065b 212 :param memap_parser: Mocked parser
kadonotakashi 0:8fdf9a60065b 213 :param tmpdir: a unique location to place an output file
kadonotakashi 0:8fdf9a60065b 214 :param depth: the detail of the output
kadonotakashi 0:8fdf9a60065b 215 """
kadonotakashi 0:8fdf9a60065b 216 file_name = str(tmpdir.join('output.csv').realpath())
kadonotakashi 0:8fdf9a60065b 217 generate_test_helper(memap_parser, 'csv-ci', depth, sep, file_name)
kadonotakashi 0:8fdf9a60065b 218 assert isfile(file_name), "Failed to create csv-ci file"