コード例 #1
0
def test_install_packages(isolated_pio_home, tmpdir):
    packages = [
        dict(id=1, name="name_1", version="shasum"),
        dict(id=1, name="name_1", version="2.0.0"),
        dict(id=1, name="name_1", version="2.1.0"),
        dict(id=1, name="name_1", version="1.2"),
        dict(id=1, name="name_1", version="1.0.0"),
        dict(name="name_2", version="1.0.0"),
        dict(name="name_2", version="2.0.0",
             __src_url="git+https://github.com"),
        dict(name="name_2", version="3.0.0",
             __src_url="git+https://github2.com"),
        dict(name="name_2", version="4.0.0",
             __src_url="git+https://github2.com")
    ]

    pm = PackageManager(join(util.get_home_dir(), "packages"))
    for package in packages:
        tmp_dir = tmpdir.mkdir("tmp-package")
        tmp_dir.join("package.json").write(json.dumps(package))
        pm._install_from_url(package['name'], "file://%s" % str(tmp_dir))
        tmp_dir.remove(rec=1)

    assert len(pm.get_installed()) == len(packages) - 1

    pkg_dirnames = [
        'name_1_ID1', '[email protected]', '[email protected]',
        '[email protected]', 'name_1_ID1@shasum', 'name_2',
        'name_2@src-177cbce1f0705580d17790fda1cc2ef5',
        'name_2@src-f863b537ab00f4c7b5011fc44b120e1f'
    ]
    assert set([p.basename for p in isolated_pio_home.join(
        "packages").listdir()]) == set(pkg_dirnames)
コード例 #2
0
def test_install_packages(isolated_pio_home, tmpdir):
    packages = [
        dict(id=1, name="name_1", version="shasum"),
        dict(id=1, name="name_1", version="2.0.0"),
        dict(id=1, name="name_1", version="2.1.0"),
        dict(id=1, name="name_1", version="1.2.0"),
        dict(id=1, name="name_1", version="1.0.0"),
        dict(name="name_2", version="1.0.0"),
        dict(name="name_2", version="2.0.0",
             __src_url="git+https://github.com"),
        dict(name="name_2", version="3.0.0",
             __src_url="git+https://github2.com"),
        dict(name="name_2", version="4.0.0",
             __src_url="git+https://github2.com")
    ]

    pm = PackageManager(join(util.get_home_dir(), "packages"))
    for package in packages:
        tmp_dir = tmpdir.mkdir("tmp-package")
        tmp_dir.join("package.json").write(json.dumps(package))
        pm._install_from_url(package['name'], "file://%s" % str(tmp_dir))
        tmp_dir.remove(rec=1)

    assert len(pm.get_installed()) == len(packages) - 1

    pkg_dirnames = [
        'name_1_ID1', '[email protected]', '[email protected]',
        '[email protected]', 'name_1_ID1@shasum', 'name_2',
        'name_2@src-177cbce1f0705580d17790fda1cc2ef5',
        'name_2@src-f863b537ab00f4c7b5011fc44b120e1f'
    ]
    assert set([p.basename for p in isolated_pio_home.join(
        "packages").listdir()]) == set(pkg_dirnames)
コード例 #3
0
    def cleanup_packages(self, names):
        self.cache_reset()
        deppkgs = {}
        for manifest in PlatformManager().get_installed():
            p = PlatformFactory.newPlatform(manifest["__pkg_dir"])
            for pkgname, pkgmanifest in p.get_installed_packages().items():
                if pkgname not in deppkgs:
                    deppkgs[pkgname] = set()
                deppkgs[pkgname].add(pkgmanifest["version"])

        pm = PackageManager(self.config.get_optional_dir("packages"))
        for manifest in pm.get_installed():
            if manifest["name"] not in names:
                continue
            if (
                manifest["name"] not in deppkgs
                or manifest["version"] not in deppkgs[manifest["name"]]
            ):
                try:
                    pm.uninstall(manifest["__pkg_dir"], after_update=True)
                except exception.UnknownPackage:
                    pass

        self.cache_reset()
        return True
コード例 #4
0
ファイル: platform.py プロジェクト: platformio/platformio
    def cleanup_packages(self, names):
        self.reset_cache()
        deppkgs = {}
        for manifest in PlatformManager().get_installed():
            p = PlatformFactory.newPlatform(manifest["name"], manifest["version"])
            for pkgname, pkgmanifest in p.get_installed_packages().items():
                if pkgname not in deppkgs:
                    deppkgs[pkgname] = set()
                deppkgs[pkgname].add(pkgmanifest["version"])

        pm = PackageManager(join(util.get_home_dir(), "packages"))
        for manifest in pm.get_installed():
            if manifest["name"] not in names:
                continue
            if manifest["name"] not in deppkgs or manifest["version"] not in deppkgs[manifest["name"]]:
                pm.uninstall(manifest["name"], manifest["version"], trigger_event=False)

        self.reset_cache()
        return True
コード例 #5
0
    def cleanup_packages(self, names):
        self.cache_reset()
        deppkgs = {}
        for manifest in PlatformManager().get_installed():
            p = PlatformFactory.newPlatform(manifest['__pkg_dir'])
            for pkgname, pkgmanifest in p.get_installed_packages().items():
                if pkgname not in deppkgs:
                    deppkgs[pkgname] = set()
                deppkgs[pkgname].add(pkgmanifest['version'])

        pm = PackageManager(join(util.get_home_dir(), "packages"))
        for manifest in pm.get_installed():
            if manifest['name'] not in names:
                continue
            if (manifest['name'] not in deppkgs
                    or manifest['version'] not in deppkgs[manifest['name']]):
                pm.uninstall(manifest['__pkg_dir'], trigger_event=False)

        self.cache_reset()
        return True
コード例 #6
0
ファイル: platform.py プロジェクト: platformio/platformio
    def cleanup_packages(self, names):
        self.cache_reset()
        deppkgs = {}
        for manifest in PlatformManager().get_installed():
            p = PlatformFactory.newPlatform(manifest['__pkg_dir'])
            for pkgname, pkgmanifest in p.get_installed_packages().items():
                if pkgname not in deppkgs:
                    deppkgs[pkgname] = set()
                deppkgs[pkgname].add(pkgmanifest['version'])

        pm = PackageManager(join(util.get_home_dir(), "packages"))
        for manifest in pm.get_installed():
            if manifest['name'] not in names:
                continue
            if (manifest['name'] not in deppkgs
                    or manifest['version'] not in deppkgs[manifest['name']]):
                try:
                    pm.uninstall(manifest['__pkg_dir'], after_update=True)
                except exception.UnknownPackage:
                    pass

        self.cache_reset()
        return True