def test_get_package(): tests = [ [("unknown", ), None], [("1", ), None], [("id=1", "shasum"), dict(id=1, name="name_1", version="shasum")], [("id=1", "*"), dict(id=1, name="name_1", version="2.1.0")], [("id=1", "^1"), dict(id=1, name="name_1", version="1.2")], [("id=1", "^1"), dict(id=1, name="name_1", version="1.2")], [("name_1", "<2"), dict(id=1, name="name_1", version="1.2")], [("name_1", ">2"), None], [("name_1", "2-0-0"), None], [("name_2", ), dict(name="name_2", version="4.0.0")], [("url_has_higher_priority", None, "git+https://github.com"), dict(name="name_2", version="2.0.0", __src_url="git+https://github.com")], [("name_2", None, "git+https://github.com"), dict(name="name_2", version="2.0.0", __src_url="git+https://github.com")], ] pm = PackageManager(join(get_project_core_dir(), "packages")) for test in tests: manifest = pm.get_package(*test[0]) if test[1] is None: assert manifest is None, test continue for key, value in test[1].items(): assert manifest[key] == value, test
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)
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
def __init__(self, manifest_path): self._BOARDS_CACHE = {} self.manifest_path = manifest_path self._manifest = util.load_json(manifest_path) self.pm = PackageManager(join(util.get_home_dir(), "packages"), self._manifest.get("packageRepositories")) self.silent = False self.verbose = False
def __init__(self, manifest_path): self.manifest_path = manifest_path self.silent = False self.verbose = False self._BOARDS_CACHE = {} self._manifest = fs.load_json(manifest_path) self._custom_packages = None self.pm = PackageManager(get_project_packages_dir(), self.package_repositories)
def __init__(self, manifest_path): self.manifest_path = manifest_path self.silent = False self.verbose = False self._BOARDS_CACHE = {} self._manifest = fs.load_json(manifest_path) self._custom_packages = None self.config = ProjectConfig.get_instance() self.pm = PackageManager(self.config.get_optional_dir("packages"), self.package_repositories)
def __init__(self, manifest_path): self._BOARDS_CACHE = {} self.manifest_path = manifest_path self._manifest = util.load_json(manifest_path) self.pm = PackageManager(join(util.get_home_dir(), "packages"), self._manifest.get("packageRepositories")) self.silent = False self.verbose = False if self.engines and "platformio" in self.engines: if self.PIO_VERSION not in semantic_version.Spec( self.engines['platformio']): raise exception.IncompatiblePlatform(self.name, str(self.PIO_VERSION))
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
def parse_pkg_uri(spec): if PackageManager.__name__ == 'PackageSpec': return PackageManager(spec).name else: name, _, _ = PackageManager.parse_pkg_uri(spec) return name