Ejemplo n.º 1
0
 def test_parse_real_crash(self):
     import libscanbuild.runner as sut2
     import re
     with fixtures.TempDir() as tmpdir:
         filename = os.path.join(tmpdir, 'test.c')
         with open(filename, 'w') as handle:
             handle.write('int main() { return 0')
         # produce failure report
         opts = {'directory': os.getcwd(),
                 'clang': 'clang',
                 'file': filename,
                 'report': ['-fsyntax-only', '-E', filename],
                 'language': 'c',
                 'output_dir': tmpdir,
                 'error_type': 'other_error',
                 'error_output': 'some output',
                 'exit_code': 13}
         sut2.report_failure(opts)
         # find the info file
         pp_file = None
         for root, _, files in os.walk(tmpdir):
             keys = [os.path.join(root, name) for name in files]
             for key in keys:
                 if re.match(r'^(.*/)+clang(.*)\.i$', key):
                     pp_file = key
         self.assertIsNot(pp_file, None)
         # read the failure report back
         result = sut.parse_crash(pp_file + '.info.txt')
         self.assertEqual(result['source'], filename)
         self.assertEqual(result['problem'], 'Other Error')
         self.assertEqual(result['file'], pp_file)
         self.assertEqual(result['info'], pp_file + '.info.txt')
         self.assertEqual(result['stderr'], pp_file + '.stderr.txt')
Ejemplo n.º 2
0
    def test_report_failure_create_files(self):
        with libear.TemporaryDirectory() as tmpdir:
            # create input file
            filename = os.path.join(tmpdir, 'test.c')
            with open(filename, 'w') as handle:
                handle.write('int main() { return 0')
            uname_msg = ' '.join(os.uname()) + os.linesep
            error_msg = 'this is my error output'
            # execute test
            opts = {
                'clang': 'clang',
                'directory': os.getcwd(),
                'flags': [],
                'file': filename,
                'output_dir': tmpdir,
                'language': 'c',
                'error_type': 'other_error',
                'error_output': error_msg,
                'exit_code': 13
            }
            sut.report_failure(opts)
            # verify the result
            result = dict()
            pp_file = None
            for root, _, files in os.walk(tmpdir):
                keys = [os.path.join(root, name) for name in files]
                for key in keys:
                    with open(key, 'r') as handle:
                        result[key] = handle.readlines()
                    if re.match(r'^(.*/)+clang(.*)\.i$', key):
                        pp_file = key

            # prepocessor file generated
            self.assertUnderFailures(pp_file)
            # info file generated and content dumped
            info_file = pp_file + '.info.txt'
            self.assertTrue(info_file in result)
            self.assertEqual('Other Error\n', result[info_file][1])
            self.assertEqual(uname_msg, result[info_file][3])
            # error file generated and content dumped
            error_file = pp_file + '.stderr.txt'
            self.assertTrue(error_file in result)
            self.assertEqual([error_msg], result[error_file])
Ejemplo n.º 3
0
    def test_report_failure_create_files(self):
        with libear.TemporaryDirectory() as tmpdir:
            # create input file
            filename = os.path.join(tmpdir, 'test.c')
            with open(filename, 'w') as handle:
                handle.write('int main() { return 0')
            uname_msg = ' '.join(os.uname()) + os.linesep
            error_msg = 'this is my error output'
            # execute test
            opts = {
                'clang': 'clang',
                'directory': os.getcwd(),
                'flags': [],
                'file': filename,
                'output_dir': tmpdir,
                'language': 'c',
                'error_type': 'other_error',
                'error_output': error_msg,
                'exit_code': 13
            }
            sut.report_failure(opts)
            # verify the result
            result = dict()
            pp_file = None
            for root, _, files in os.walk(tmpdir):
                keys = [os.path.join(root, name) for name in files]
                for key in keys:
                    with open(key, 'r') as handle:
                        result[key] = handle.readlines()
                    if re.match(r'^(.*/)+clang(.*)\.i$', key):
                        pp_file = key

            # prepocessor file generated
            self.assertUnderFailures(pp_file)
            # info file generated and content dumped
            info_file = pp_file + '.info.txt'
            self.assertTrue(info_file in result)
            self.assertEqual('Other Error\n', result[info_file][1])
            self.assertEqual(uname_msg, result[info_file][3])
            # error file generated and content dumped
            error_file = pp_file + '.stderr.txt'
            self.assertTrue(error_file in result)
            self.assertEqual([error_msg], result[error_file])