def test_no_equivalent_inline_asm_single_file(self): source_scanner = SourceScanner() report = Report('/root') source_scanner.initialize_report(report) io_object = io.StringIO('__asm__("mov r0, r1"') source_scanner.scan_file_object('test.c', io_object, report) source_scanner.finalize_report(report) self.assertEqual(len(report.issues), 2)
def test_no_equivalent_intrinsic_function_inline(self): source_scanner = SourceScanner() report = Report('/root') source_scanner.initialize_report(report) io_object = io.StringIO( 'void func() {\n#if defined(__otherarch__)\n_otherarch_intrinsic_xyz(123));\n#elif defined(__aarch64__)\nfoo\n#endif\n}' ) source_scanner.scan_file_object('test.c', io_object, report) source_scanner.finalize_report(report) self.assertEqual(len(report.issues), 1)
def test_equivalent_inline_asm_function_outline(self): source_scanner = SourceScanner() report = Report('/root') source_scanner.initialize_report(report) io_object = io.StringIO( '#if defined(__otherarch__)\nvoid func() {\n__asm__("mov r0, r1");\n}\n#elif defined(__aarch64__)\nvoid func() {\n__asm__("mov r0, r1");\n}\n#endif' ) source_scanner.scan_file_object('test.c', io_object, report) source_scanner.finalize_report(report) self.assertEqual(len(report.issues), 0)
def test_no_equivalent_intrinsic_file(self): source_scanner = SourceScanner() port_filter = PortFilter() report = Report('/root') port_filter.initialize_report(report) source_scanner.initialize_report(report) io_object = io.StringIO('_otherarch_intrinsic_xyz(123)') report.add_source_file('otherarch.c') source_scanner.scan_file_object('otherarch.c', io_object, report) io_object = io.StringIO('foo') report.add_source_file('aarch64.c') source_scanner.scan_file_object('aarch64.c', io_object, report) source_scanner.finalize_report(report) port_filter.finalize_report(report) self.assertEqual(len(report.issues), 1)
def test_equivalent_inline_asm_file(self): source_scanner = SourceScanner() port_filter = PortFilter() report = Report('/root') port_filter.initialize_report(report) source_scanner.initialize_report(report) io_object = io.StringIO('__asm__("mov r0, r1")') report.add_source_file('otherarch.c') source_scanner.scan_file_object('otherarch.c', io_object, report) io_object = io.StringIO('__asm__("mov r0, r1")') report.add_source_file('aarch64.c') source_scanner.scan_file_object('aarch64.c', io_object, report) source_scanner.finalize_report(report) port_filter.finalize_report(report) self.assertEqual(len(report.issues), 0) found_ported_remark = False for remark in report.remarks: if isinstance(remark, PortedInlineAsmRemark): found_ported_remark = True break self.assertTrue(found_ported_remark)