示例#1
0
    def test_prefer_final(self):
        # Can order the distributions using prefer_final
        fb10 = ReleaseInfo("FooBar", "1.0")  # final distribution
        fb11a = ReleaseInfo("FooBar", "1.1a1")  # alpha
        fb12a = ReleaseInfo("FooBar", "1.2a1")  # alpha
        fb12b = ReleaseInfo("FooBar", "1.2b1")  # beta
        dists = ReleasesList("FooBar", [fb10, fb11a, fb12a, fb12b])

        dists.sort_releases(prefer_final=True)
        self.assertEqual(fb10, dists[0])

        dists.sort_releases(prefer_final=False)
        self.assertEqual(fb12b, dists[0])
示例#2
0
 def test_filter(self):
     # Test we filter the distributions the right way, using version
     # predicate match method
     releases = ReleasesList('FooBar', (
         ReleaseInfo("FooBar", "1.1"),
         ReleaseInfo("FooBar", "1.1.1"),
         ReleaseInfo("FooBar", "1.2"),
         ReleaseInfo("FooBar", "1.2.1"),
     ))
     filtered = releases.filter(VersionPredicate("FooBar (<1.2)"))
     self.assertNotIn(releases[2], filtered)
     self.assertNotIn(releases[3], filtered)
     self.assertIn(releases[0], filtered)
     self.assertIn(releases[1], filtered)
    def test_append(self):
        # When adding a new item to the list, the behavior is to test if
        # a release with the same name and version number already exists,
        # and if so, to add a new distribution for it. If the distribution type
        # is already defined too, add url informations to the existing DistInfo
        # object.

        releases = ReleasesList("FooBar", [
            ReleaseInfo("FooBar", "1.1", url="external_url",
                        dist_type="sdist"),
        ])
        self.assertEqual(1, len(releases))
        releases.add_release(release=ReleaseInfo("FooBar",
                                                 "1.1",
                                                 url="internal_url",
                                                 is_external=False,
                                                 dist_type="sdist"))
        self.assertEqual(1, len(releases))
        self.assertEqual(2, len(releases[0]['sdist'].urls))

        releases.add_release(
            release=ReleaseInfo("FooBar", "1.1.1", dist_type="sdist"))
        self.assertEqual(2, len(releases))

        # when adding a distribution whith a different type, a new distribution
        # has to be added.
        releases.add_release(
            release=ReleaseInfo("FooBar", "1.1.1", dist_type="bdist"))
        self.assertEqual(2, len(releases))
        self.assertEqual(2, len(releases[1].dists))
 def test_filter(self):
     # Test we filter the distributions the right way, using version
     # predicate match method
     releases = ReleasesList('FooBar', (
         ReleaseInfo("FooBar", "1.1"),
         ReleaseInfo("FooBar", "1.1.1"),
         ReleaseInfo("FooBar", "1.2"),
         ReleaseInfo("FooBar", "1.2.1"),
     ))
     filtered = releases.filter(VersionPredicate("FooBar (<1.2)"))
     self.assertNotIn(releases[2], filtered)
     self.assertNotIn(releases[3], filtered)
     self.assertIn(releases[0], filtered)
     self.assertIn(releases[1], filtered)
示例#5
0
    def _register_release(self, release=None, release_info={}):
        """Register a new release.

        Both a release or a dict of release_info can be provided, the preferred
        way (eg. the quicker) is the dict one.

        Return the list of existing releases for the given project.
        """
        # Check if the project already has a list of releases (refering to
        # the project name). If not, create a new release list.
        # Then, add the release to the list.
        if release:
            name = release.name
        else:
            name = release_info['name']
        if name.lower() not in self._projects:
            self._projects[name.lower()] = ReleasesList(name, index=self._index)

        if release:
            self._projects[name.lower()].add_release(release=release)
        else:
            name = release_info.pop('name')
            version = release_info.pop('version')
            dist_type = release_info.pop('dist_type')
            self._projects[name.lower()].add_release(version, dist_type,
                                                     **release_info)
        return self._projects[name.lower()]
    def test_prefer_source(self):
        # Ordering supports prefer_source
        fb_source = Dist("FooBar", "1.0", type="source")
        fb_binary = Dist("FooBar", "1.0", type="binary")
        fb2_binary = Dist("FooBar", "2.0", type="binary")
        dists = ReleasesList([fb_binary, fb_source])

        dists.sort_distributions(prefer_source=True)
        self.assertEqual(fb_source, dists[0])

        dists.sort_distributions(prefer_source=False)
        self.assertEqual(fb_binary, dists[0])

        dists.append(fb2_binary)
        dists.sort_distributions(prefer_source=True)
        self.assertEqual(fb2_binary, dists[0])
示例#7
0
    def test_append(self):
        # When adding a new item to the list, the behavior is to test if
        # a release with the same name and version number already exists,
        # and if so, to add a new distribution for it. If the distribution type
        # is already defined too, add url informations to the existing DistInfo
        # object.

        releases = ReleasesList("FooBar", [
            ReleaseInfo("FooBar", "1.1", url="external_url",
                        dist_type="sdist"),
        ])
        self.assertEqual(1, len(releases))
        releases.add_release(release=ReleaseInfo("FooBar", "1.1",
                                                 url="internal_url",
                                                 is_external=False,
                                                 dist_type="sdist"))
        self.assertEqual(1, len(releases))
        self.assertEqual(2, len(releases[0]['sdist'].urls))

        releases.add_release(release=ReleaseInfo("FooBar", "1.1.1",
                                                 dist_type="sdist"))
        self.assertEqual(2, len(releases))

        # when adding a distribution whith a different type, a new distribution
        # has to be added.
        releases.add_release(release=ReleaseInfo("FooBar", "1.1.1",
                                                 dist_type="bdist"))
        self.assertEqual(2, len(releases))
        self.assertEqual(2, len(releases[1].dists))
示例#8
0
    def test_prefer_source(self):
        # Ordering supports prefer_source
        fb_source = Dist("FooBar", "1.0", type="source")
        fb_binary = Dist("FooBar", "1.0", type="binary")
        fb2_binary = Dist("FooBar", "2.0", type="binary")
        dists = ReleasesList([fb_binary, fb_source])

        dists.sort_distributions(prefer_source=True)
        self.assertEqual(fb_source, dists[0])

        dists.sort_distributions(prefer_source=False)
        self.assertEqual(fb_binary, dists[0])

        dists.append(fb2_binary)
        dists.sort_distributions(prefer_source=True)
        self.assertEqual(fb2_binary, dists[0])
    def test_prefer_final(self):
        # Can order the distributions using prefer_final
        fb10 = ReleaseInfo("FooBar", "1.0")  # final distribution
        fb11a = ReleaseInfo("FooBar", "1.1a1")  # alpha
        fb12a = ReleaseInfo("FooBar", "1.2a1")  # alpha
        fb12b = ReleaseInfo("FooBar", "1.2b1")  # beta
        dists = ReleasesList("FooBar", [fb10, fb11a, fb12a, fb12b])

        dists.sort_releases(prefer_final=True)
        self.assertEqual(fb10, dists[0])

        dists.sort_releases(prefer_final=False)
        self.assertEqual(fb12b, dists[0])
示例#10
0
 def test_get_last(self):
     dists = ReleasesList('Foo')
     self.assertEqual(dists.get_last('Foo 1.0'), None)
示例#11
0
 def test_get_last(self):
     dists = ReleasesList('Foo')
     self.assertEqual(dists.get_last('Foo 1.0'), None)
示例#12
0
 def _get_project(self, project_name):
     """Return an project instance, create it if necessary"""
     return self._projects.setdefault(
         project_name.lower(), ReleasesList(project_name,
                                            index=self._index))