예제 #1
0
    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)
예제 #4
0
    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')