def __init__(self, analyzer_binary, environ): self.__analyzer_binary = analyzer_binary self.environ = environ if self.__analyzer_binary is None: LOG.debug( 'Trying to detect CTU capability, but analyzer binary is not ' 'set!') return False analyzer_version = invoke_binary_checked(self.__analyzer_binary, ['--version'], self.environ) if analyzer_version is False: LOG.debug('Failed to invoke command to get Clang version!') return False version_parser = version.ClangVersionInfoParser() version_info = version_parser.parse(analyzer_version) if not version_info: LOG.debug('Failed to parse Clang version information!') return False self.__analyzer_version_info = version_info
def test_empty_version_string_is_rejected(self): """ Test that the empty stirng is not a valid version-string. """ parser = version.ClangVersionInfoParser() version_info = parser.parse('') self.assertFalse(version_info, False)
def test_built_from_gcc(self): """ Test if parsing a gcc version info returns False. """ with open('gcc_version') as version_output: version_string = version_output.read() parser = version.ClangVersionInfoParser() version_info = parser.parse(version_string) self.assertIs(version_info, False)
def test_built_from_gcc(self): """ Test if parsing a gcc version info returns False. """ with open('gcc_version', encoding="utf-8", errors="ignore") as version_output: version_string = version_output.read() parser = version.ClangVersionInfoParser() version_info = parser.parse(version_string) self.assertIs(version_info, None)
def test_binary_distribution_clang_7(self): """ Test that binary distribution of clang 7 version string is parsed correctly. """ with open('clang_7_bin_dist_version_output') as version_output: version_string = version_output.read() parser = version.ClangVersionInfoParser() version_info = parser.parse(version_string) self.assertIsNot(version_info, False) self.assertEqual(version_info.major_version, 7) self.assertEqual(version_info.minor_version, 0) self.assertEqual(version_info.patch_version, 0) self.assertEqual(version_info.installed_dir, '/path/to/clang/bin')
def test_built_from_source_clang_8(self): """ Test that source-built clang release_80 version string is parsed correctly. """ with open('clang_8_src_version_output') as version_output: version_string = version_output.read() parser = version.ClangVersionInfoParser() version_info = parser.parse(version_string) self.assertIsNot(version_info, False) self.assertEqual(version_info.major_version, 8) self.assertEqual(version_info.minor_version, 0) self.assertEqual(version_info.patch_version, 1) self.assertEqual(version_info.installed_dir, '/path/to/clang/bin')
def test_built_from_monorepo_source_clang_9(self): """ Test that monorepo source-built clang 9 master string is parsed correctly. """ with open('clang_9_monorepo_src_version_output', encoding="utf-8", errors="ignore") as version_output: version_string = version_output.read() parser = version.ClangVersionInfoParser() version_info = parser.parse(version_string) self.assertIsNot(version_info, False) self.assertEqual(version_info.major_version, 9) self.assertEqual(version_info.minor_version, 0) self.assertEqual(version_info.patch_version, 0) self.assertEqual(version_info.installed_dir, '/path/to/clang/bin')