Esempio n. 1
0
    def get_versions(cls, project):
        """ Method called to retrieve all the versions (that can be found)
        of the projects provided, project that relies on the backend of
        this plugin.

        :arg Project project: a :class:`anitya.db.models.Project` object whose backend
            corresponds to the current plugin.
        :return: a list of all the possible releases found
        :return type: list
        :raise AnityaPluginException: a
            :class:`anitya.lib.exceptions.AnityaPluginException` exception
            when the versions cannot be retrieved correctly

        """
        url = cls.get_version_url(project)

        try:
            req = cls.call_url(url, insecure=project.insecure)
        except Exception as err:
            raise AnityaPluginException(
                'Could not call : "%s" of "%s", with error: %s' %
                (url, project.name, str(err)))

        versions = None
        if not isinstance(req, six.string_types):
            req = req.text

        try:
            regex = REGEX % {"name": project.name.replace("+", r"\+")}
            versions = get_versions_by_regex_for_text(req, url, regex, project)
        except AnityaPluginException:
            versions = get_versions_by_regex_for_text(req, url, DEFAULT_REGEX,
                                                      project)

        return versions
Esempio n. 2
0
    def get_versions(cls, project):
        """ Method called to retrieve all the versions (that can be found)
        of the projects provided, project that relies on the backend of
        this plugin.

        :arg Project project: a :class:`model.Project` object whose backend
            corresponds to the current plugin.
        :return: a list of all the possible releases found
        :return type: list
        :raise AnityaPluginException: a
            :class:`anitya.lib.exceptions.AnityaPluginException` exception
            when the versions cannot be retrieved correctly

        """
        url = project.version_url

        try:
            req = cls.call_url(url)
        except Exception:
            raise AnityaPluginException('Could not call : "%s" of "%s"' % (url, project.name))

        versions = None
        if not isinstance(req, six.string_types):
            req = req.text

        try:
            regex = REGEX % {"name": project.name.replace("+", "\+")}
            versions = get_versions_by_regex_for_text(req, url, regex, project)
        except AnityaPluginException:
            versions = get_versions_by_regex_for_text(req, url, DEFAULT_REGEX, project)

        return versions
Esempio n. 3
0
    def get_versions(cls, project):
        """ Method called to retrieve all the versions (that can be found)
        of the projects provided, project that relies on the backend of
        this plugin.

        :arg Project project: a :class:`anitya.db.models.Project` object whose backend
            corresponds to the current plugin.
        :return: a list of all the possible releases found
        :return type: list
        :raise AnityaPluginException: a
            :class:`anitya.lib.exceptions.AnityaPluginException` exception
            when the versions cannot be retrieved correctly

        """
        url = cls.get_version_url(project)

        try:
            req = cls.call_url(url)
        except Exception:  # pragma: no cover
            raise AnityaPluginException('Could not call : "%s" of "%s"' %
                                        (url, project.name))

        versions = None
        try:
            regex = REGEX % {"name": project.name}
            versions = get_versions_by_regex_for_text(req.text, url, regex,
                                                      project)
        except AnityaPluginException:
            versions = get_versions_by_regex_for_text(req.text, url,
                                                      DEFAULT_REGEX, project)

        return versions
Esempio n. 4
0
    def get_versions(cls, project):
        ''' Method called to retrieve all the versions (that can be found)
        of the projects provided, project that relies on the backend of
        this plugin.

        :arg Project project: a :class:`model.Project` object whose backend
            corresponds to the current plugin.
        :return: a list of all the possible releases found
        :return type: list
        :raise AnityaPluginException: a
            :class:`anitya.lib.exceptions.AnityaPluginException` exception
            when the versions cannot be retrieved correctly

        '''
        url = project.version_url

        try:
            req = cls.call_url(url)
        except Exception:
            raise AnityaPluginException(
                'Could not call : "%s" of "%s"' % (url, project.name))

        versions = None
        if not isinstance(req, six.string_types):
            req = req.text

        try:
            regex = REGEX % {'name': project.name.replace('+', '\+')}
            versions = get_versions_by_regex_for_text(
                req, url, regex, project)
        except AnityaPluginException:
            versions = get_versions_by_regex_for_text(
                req, url, DEFAULT_REGEX, project)

        return versions
Esempio n. 5
0
    def get_versions(cls, project):
        """ Method called to retrieve all the versions (that can be found)
        of the projects provided, project that relies on the backend of
        this plugin.

        :arg Project project: a :class:`anitya.db.models.Project` object whose backend
            corresponds to the current plugin.
        :return: a list of all the possible releases found
        :return type: list
        :raise AnityaPluginException: a
            :class:`anitya.lib.exceptions.AnityaPluginException` exception
            when the versions cannot be retrieved correctly

        """
        url = cls.get_version_url(project)

        try:
            req = cls.call_url(url)
        except Exception:  # pragma: no cover
            raise AnityaPluginException(
                'Could not call : "%s" of "%s"' % (url, project.name)
            )

        versions = None
        try:
            regex = REGEX % {"name": project.name}
            versions = get_versions_by_regex_for_text(req.text, url, regex, project)
        except AnityaPluginException:
            versions = get_versions_by_regex_for_text(
                req.text, url, DEFAULT_REGEX, project
            )

        return versions
Esempio n. 6
0
 def test_get_versions_by_regex_for_text(self):
     """Assert finding versions with a simple regex in text works"""
     text = """
     some release: 0.0.1
     some other release: 0.0.2
     The best release: 1.0.0
     """
     regex = r"\d\.\d\.\d"
     mock_project = mock.Mock(version_prefix="", version_filter=None)
     versions = backends.get_versions_by_regex_for_text(
         text, "url", regex, mock_project)
     self.assertEqual(sorted(["0.0.1", "0.0.2", "1.0.0"]), sorted(versions))
Esempio n. 7
0
 def test_get_versions_by_regex_for_text(self):
     """Assert finding versions with a simple regex in text works"""
     text = """
     some release: 0.0.1
     some other release: 0.0.2
     The best release: 1.0.0
     """
     regex = r'\d\.\d\.\d'
     mock_project = mock.Mock(version_prefix='')
     versions = backends.get_versions_by_regex_for_text(
         text, 'url', regex, mock_project)
     self.assertEqual(sorted(['0.0.1', '0.0.2', '1.0.0']), sorted(versions))
Esempio n. 8
0
 def test_get_versions_by_regex_for_text_prefix(self):
     """Assert prefixes are stripped from regex matches"""
     text = """
     some release: v0.0.1
     some other release: v0.0.2
     The best release: v1.0.0
     """
     regex = r'v\d\.\d\.\d'
     mock_project = mock.Mock(version_prefix='v')
     versions = backends.get_versions_by_regex_for_text(
         text, 'url', regex, mock_project)
     self.assertEqual(sorted(['0.0.1', '0.0.2', '1.0.0']), sorted(versions))
Esempio n. 9
0
 def test_get_versions_by_regex_for_text(self):
     """Assert finding versions with a simple regex in text works"""
     text = """
     some release: 0.0.1
     some other release: 0.0.2
     The best release: 1.0.0
     """
     regex = r'\d\.\d\.\d'
     mock_project = mock.Mock(version_prefix='')
     versions = backends.get_versions_by_regex_for_text(
         text, 'url', regex, mock_project)
     self.assertEqual(sorted(['0.0.1', '0.0.2', '1.0.0']), sorted(versions))
Esempio n. 10
0
 def test_get_versions_by_regex_for_text_prefix(self):
     """Assert prefixes are stripped from regex matches"""
     text = """
     some release: v0.0.1
     some other release: v0.0.2
     The best release: v1.0.0
     """
     regex = r'v\d\.\d\.\d'
     mock_project = mock.Mock(version_prefix='v')
     versions = backends.get_versions_by_regex_for_text(
         text, 'url', regex, mock_project)
     self.assertEqual(sorted(['0.0.1', '0.0.2', '1.0.0']), sorted(versions))
Esempio n. 11
0
 def test_get_versions_by_regex_for_text_slice_prefix(self):
     """Assert prefixes are sliced rather than lstripped"""
     text = """
     some release: version-v0.0.1-dev
     some other release: version-v0.0.2-dev
     The best release: version-v1.0.0
     """
     regex = r'[\w]*-v\d\.\d\.\d-?[\w]*'
     mock_project = mock.Mock(version_prefix='version-')
     versions = backends.get_versions_by_regex_for_text(
         text, 'url', regex, mock_project)
     self.assertEqual(
         sorted(['v0.0.1-dev', 'v0.0.2-dev', 'v1.0.0']), sorted(versions))
Esempio n. 12
0
 def test_get_versions_by_regex_for_text_slice_prefix(self):
     """Assert prefixes are sliced rather than lstripped"""
     text = """
     some release: version-v0.0.1-dev
     some other release: version-v0.0.2-dev
     The best release: version-v1.0.0
     """
     regex = r'[\w]*-v\d\.\d\.\d-?[\w]*'
     mock_project = mock.Mock(version_prefix='version-')
     versions = backends.get_versions_by_regex_for_text(
         text, 'url', regex, mock_project)
     self.assertEqual(sorted(['v0.0.1-dev', 'v0.0.2-dev', 'v1.0.0']),
                      sorted(versions))
Esempio n. 13
0
    def test_debian_regex_without_orig(self):
        """Assert Debian tarballs without the ".orig" string work"""
        tarball_names = """
            Some Header
            libgnupg-interface-perl_0.45.tar.gz
            libgnupg-interface-perl_0.46.tar.gz

        """
        versions = get_versions_by_regex_for_text(
            tarball_names, 'http://example.com',
            backend.DEBIAN_REGEX % {'name': 'libgnupg-interface-perl'},
            models.Project.get(self.session, 3))
        self.assertEqual(sorted(['0.45', '0.46']), sorted(versions))
Esempio n. 14
0
 def test_get_versions_by_regex_for_text(self):
     """Assert finding versions with a simple regex in text works"""
     text = """
     some release: 0.0.1
     some other release: 0.0.2
     The best release: 1.0.0
     """
     regex = r"\d\.\d\.\d"
     mock_project = mock.Mock(version_prefix="")
     versions = backends.get_versions_by_regex_for_text(
         text, "url", regex, mock_project
     )
     self.assertEqual(sorted(["0.0.1", "0.0.2", "1.0.0"]), sorted(versions))
Esempio n. 15
0
 def test_get_versions_by_regex_for_text_tuples(self):
     """Assert regex that result in tuples are joined into a string"""
     text = """
     some release: 0.0.1
     some other release: 0.0.2
     The best release: 1.0.0
     """
     regex = r"(\d)\.(\d)\.(\d)"
     mock_project = mock.Mock(version_prefix="", version_filter=None)
     versions = backends.get_versions_by_regex_for_text(
         text, "url", regex, mock_project)
     self.assertEqual(sorted(["0.0.1", "0.0.2", "1.0.0"]), sorted(versions))
     # Demonstrate that the regex does result in an iterable
     self.assertEqual(3, len(re.findall(regex, "0.0.1")[0]))
Esempio n. 16
0
 def test_get_versions_by_regex_for_text_tuples(self):
     """Assert regex that result in tuples are joined into a string"""
     text = """
     some release: 0.0.1
     some other release: 0.0.2
     The best release: 1.0.0
     """
     regex = r'(\d)\.(\d)\.(\d)'
     mock_project = mock.Mock(version_prefix='')
     versions = backends.get_versions_by_regex_for_text(
         text, 'url', regex, mock_project)
     self.assertEqual(sorted(['0.0.1', '0.0.2', '1.0.0']), sorted(versions))
     # Demonstrate that the regex does result in an iterable
     self.assertEqual(3, len(re.findall(regex, '0.0.1')[0]))
Esempio n. 17
0
 def test_get_versions_by_regex_for_text_tuples(self):
     """Assert regex that result in tuples are joined into a string"""
     text = """
     some release: 0.0.1
     some other release: 0.0.2
     The best release: 1.0.0
     """
     regex = r'(\d)\.(\d)\.(\d)'
     mock_project = mock.Mock(version_prefix='')
     versions = backends.get_versions_by_regex_for_text(
         text, 'url', regex, mock_project)
     self.assertEqual(sorted(['0.0.1', '0.0.2', '1.0.0']), sorted(versions))
     # Demonstrate that the regex does result in an iterable
     self.assertEqual(3, len(re.findall(regex, '0.0.1')[0]))
Esempio n. 18
0
    def test_debian_regex_without_orig(self):
        """Assert Debian tarballs without the ".orig" string work"""
        tarball_names = """
            Some Header
            libgnupg-interface-perl_0.45.tar.gz
            libgnupg-interface-perl_0.46.tar.gz

        """
        versions = get_versions_by_regex_for_text(
            tarball_names,
            'http://example.com',
            backend.DEBIAN_REGEX % {'name': 'libgnupg-interface-perl'},
            model.Project.get(self.session, 3)
        )
        self.assertEqual(sorted(['0.45', '0.46']), sorted(versions))
Esempio n. 19
0
    def test_debian_regex_with_orig(self):
        """Assert Debian tarballs have the ".orig" string removed"""
        tarball_names = """
            Some Header
            libgnupg-interface-perl_0.45.orig.tar.gz
            libgnupg-interface-perl_0.46.orig.tar.gz

        """
        versions = get_versions_by_regex_for_text(
            tarball_names,
            "https://example.com",
            backend.DEBIAN_REGEX % {"name": "libgnupg-interface-perl"},
            models.Project.get(self.session, 3),
        )
        self.assertEqual(sorted(["0.45", "0.46"]), sorted(versions))
Esempio n. 20
0
    def test_debian_regex_without_orig(self):
        """Assert Debian tarballs without the ".orig" string work"""
        tarball_names = """
            Some Header
            libgnupg-interface-perl_0.45.tar.gz
            libgnupg-interface-perl_0.46.tar.gz

        """
        versions = get_versions_by_regex_for_text(
            tarball_names,
            "https://example.com",
            backend.DEBIAN_REGEX % {"name": "libgnupg-interface-perl"},
            models.Project.get(self.session, 3),
        )
        self.assertEqual(sorted(["0.45", "0.46"]), sorted(versions))