コード例 #1
0
    def test_properOrphaning(self):
        """
        If two installed items both depend on a third, it should be
        removed as soon as both installed items are removed, but no
        sooner.
        """

        foo = Kitchen(store=self.store)
        e = Toaster(store=self.store)
        dependency.installOn(e, foo)
        ps = self.store.findUnique(PowerStrip)
        bb = self.store.findUnique(Breadbox)
        f = Blender(store=self.store)
        dependency.installOn(f, foo)

        self.assertEquals(list(self.store.query(PowerStrip)), [ps])
        #XXX does ordering matter?
        self.assertEquals(set(dependency.installedDependents(ps, foo)),
                          set([e, f]))
        self.assertEquals(set(dependency.installedRequirements(e, foo)),
                          set([bb, ps]))
        self.assertEquals(list(dependency.installedRequirements(f, foo)), [ps])

        dependency.uninstallFrom(e, foo)
        self.assertEquals(dependency.installedOn(ps), foo)

        dependency.uninstallFrom(f, foo)
        self.assertEquals(dependency.installedOn(ps), None)
コード例 #2
0
ファイル: test_dependency.py プロジェクト: bne/squeal
    def test_properOrphaning(self):
        """
        If two installed items both depend on a third, it should be
        removed as soon as both installed items are removed, but no
        sooner.
        """

        foo = Kitchen(store=self.store)
        e = Toaster(store=self.store)
        dependency.installOn(e, foo)
        ps = self.store.findUnique(PowerStrip)
        bb = self.store.findUnique(Breadbox)
        f = Blender(store=self.store)
        dependency.installOn(f, foo)

        self.assertEquals(list(self.store.query(PowerStrip)), [ps])
        #XXX does ordering matter?
        self.assertEquals(set(dependency.installedDependents(ps, foo)),
                          set([e, f]))
        self.assertEquals(set(dependency.installedRequirements(e, foo)),
                          set([bb, ps]))
        self.assertEquals(list(dependency.installedRequirements(f, foo)),
                          [ps])

        dependency.uninstallFrom(e, foo)
        self.assertEquals(dependency.installedOn(ps), foo)

        dependency.uninstallFrom(f, foo)
        self.assertEquals(dependency.installedOn(ps), None)
コード例 #3
0
    def test_recursiveInstall(self):
        """
        Installing an item should install all of its dependencies, and
        all of its dependencies, and so forth.
        """
        foo = Kitchen(store=self.store)
        ic = IceCrusher(store=self.store)
        dependency.installOn(ic, foo)
        blender = self.store.findUnique(Blender)
        ps = self.store.findUnique(PowerStrip)

        self.assertEquals(dependency.installedOn(blender), foo)
        self.assertEquals(dependency.installedOn(ps), foo)
        self.assertEquals(list(dependency.installedRequirements(ic, foo)),
                          [blender])
コード例 #4
0
ファイル: test_dependency.py プロジェクト: bne/squeal
    def test_recursiveInstall(self):
        """
        Installing an item should install all of its dependencies, and
        all of its dependencies, and so forth.
        """
        foo = Kitchen(store=self.store)
        ic = IceCrusher(store=self.store)
        dependency.installOn(ic, foo)
        blender = self.store.findUnique(Blender)
        ps = self.store.findUnique(PowerStrip)

        self.assertEquals(dependency.installedOn(blender), foo)
        self.assertEquals(dependency.installedOn(ps), foo)
        self.assertEquals(list(dependency.installedRequirements(ic, foo)),
                          [blender])
コード例 #5
0
 def test_basicInstall(self):
     """
     If a Toaster gets installed in a Kitchen, make sure that the
     required dependencies get instantiated and installed too.
     """
     foo = Kitchen(store=self.store)
     e = Toaster(store=self.store)
     self.assertEquals(e.powerStrip, None)
     dependency.installOn(e, foo)
     e.toast()
     ps = self.store.findUnique(PowerStrip, default=None)
     bb = self.store.findUnique(Breadbox, default=None)
     self.failIfIdentical(ps, None)
     self.failIfIdentical(bb, None)
     self.assertEquals(e.powerStrip, ps)
     self.assertEquals(ps.voltage, 110)
     self.assertEquals(e.breadFactory, bb)
     self.assertEquals(set(dependency.installedRequirements(e, foo)),
                       set([ps, bb]))
     self.assertEquals(list(dependency.installedDependents(ps, foo)), [e])
コード例 #6
0
ファイル: test_dependency.py プロジェクト: bne/squeal
 def test_basicInstall(self):
     """
     If a Toaster gets installed in a Kitchen, make sure that the
     required dependencies get instantiated and installed too.
     """
     foo = Kitchen(store=self.store)
     e = Toaster(store=self.store)
     self.assertEquals(e.powerStrip, None)
     dependency.installOn(e, foo)
     e.toast()
     ps = self.store.findUnique(PowerStrip, default=None)
     bb = self.store.findUnique(Breadbox, default=None)
     self.failIfIdentical(ps, None)
     self.failIfIdentical(bb, None)
     self.assertEquals(e.powerStrip, ps)
     self.assertEquals(ps.voltage, 110)
     self.assertEquals(e.breadFactory, bb)
     self.assertEquals(set(dependency.installedRequirements(e, foo)),
                       set([ps, bb]))
     self.assertEquals(list(dependency.installedDependents(ps, foo)), [e])
コード例 #7
0
ファイル: product.py プロジェクト: jonathanj/mantissa
 def allPowerups(self):
     return set(chain(self.items, *[installedRequirements(self.store, i) for
                                    i in self.items]))