示例#1
0
 def test_basic_pool(self):
     pool = CFDPool()
     sample_class = object
     pool.register(sample_class)
     with self.assertRaises(AlreadyRegisteredException):
         pool.register(sample_class)

class AptGetPackageManager(CFDPackageManager):
    def version(self, package):
        return False

    def install(self, package, version=None):
        subprocess.check_call(['apt-get', '-q', '-y', 'install', package], stdout=subprocess.PIPE)

    def uninstall(self, package):
        subprocess.check_call(['apt-get', '-q', '-y', 'remove', package], stdout=subprocess.PIPE)

    def remove(self, package):
        subprocess.check_call(['apt-get', '-q', '-y', 'purge', package], stdout=subprocess.PIPE)

package_manager_registry.register(AptGetPackageManager, 'apt-get')


class PipPackageManager(CFDPackageManager):

    def list_installed_packages(self):
        packages = subprocess.check_output(['pip', 'freeze'])
        return [pkg.split("==")[0] for pkg in packages.split("\n")]

    def version(self, package):
        packages = subprocess.check_output(['pip', 'freeze'])
        return ([pkg.split("==")[1] for pkg in packages.split("\n") if pkg.split("==")[0] == package] or [None])[0]

    def install(self, package, version=None):
        if version:
            subprocess.check_call(['pip', 'install', '-q', '%s==%s' % (package, version)], stdout=subprocess.PIPE)