def test_coverage_pack_hex_payload(self): # This function takesstring as input r = mbed_coverage_api.coverage_pack_hex_payload('') self.assertEqual(bytearray(b''), r) r = mbed_coverage_api.coverage_pack_hex_payload('6164636772') self.assertEqual(bytearray(b'adcgr'), r) r = mbed_coverage_api.coverage_pack_hex_payload('.') # '.' -> 0x00 self.assertEqual(bytearray(b'\x00'), r) r = mbed_coverage_api.coverage_pack_hex_payload('...') # '.' -> 0x00 self.assertEqual(bytearray(b'\x00\x00\x00'), r) r = mbed_coverage_api.coverage_pack_hex_payload('.6164636772.') # '.' -> 0x00 self.assertEqual(bytearray(b'\x00adcgr\x00'), r)
def get_coverage_data(build_path, output): # Example GCOV output # [1456840876.73][CONN][RXD] {{__coverage_start;c:\Work\core-util/source/PoolAllocator.cpp.gcda;6164636772393034c2733f32...a33e...b9}} gt_logger.gt_log("checking for GCOV data...") re_gcov = re.compile(r"^\[(\d+\.\d+)\][^\{]+\{\{(__coverage_start);([^;]+);([^}]+)\}\}$") for line in output.splitlines(): m = re_gcov.search(line) if m: _, _, gcov_path, gcov_payload = m.groups() try: bin_gcov_payload = coverage_pack_hex_payload(gcov_payload) coverage_dump_file(build_path, gcov_path, bin_gcov_payload) except Exception as e: gt_logger.gt_log_err("error while handling GCOV data: " + str(e)) gt_logger.gt_log_tab("storing %d bytes in '%s'"% (len(bin_gcov_payload), gcov_path))