Minor improvements for symlink support // Issue #3348

This commit is contained in:
Ivan Kravets
2022-04-07 23:03:40 +03:00
parent 2280865936
commit 43329b7748
3 changed files with 8 additions and 7 deletions

View File

@@ -15,7 +15,6 @@
import json import json
import os import os
from platformio import fs
from platformio.package.exception import PackageException from platformio.package.exception import PackageException
from platformio.package.meta import PackageItem, PackageSpec from platformio.package.meta import PackageItem, PackageSpec
@@ -33,9 +32,10 @@ class PackageManagerSymlinkMixin(object):
data = json.load(fp) data = json.load(fp)
spec = PackageSpec(**data["spec"]) spec = PackageSpec(**data["spec"])
assert spec.symlink assert spec.symlink
with fs.cd(data["cwd"]): pkg_dir = spec.uri[10:]
pkg_dir = os.path.realpath(spec.uri[10:]) if not os.path.isabs(pkg_dir):
return (pkg_dir if os.path.isdir(pkg_dir) else None, spec) pkg_dir = os.path.normpath(os.path.join(data["cwd"], pkg_dir))
return (pkg_dir if os.path.isdir(pkg_dir) else None, spec)
def get_symlinked_package(self, path): def get_symlinked_package(self, path):
pkg_dir, spec = self.resolve_symlink(path) pkg_dir, spec = self.resolve_symlink(path)

View File

@@ -323,7 +323,9 @@ def test_symlink(tmp_path: Path):
assert ["External", "Installed"] == [ assert ["External", "Installed"] == [
pkg.metadata.name for pkg in lm.get_installed() pkg.metadata.name for pkg in lm.get_installed()
] ]
assert lm.get_package("External").metadata.spec.uri.startswith("symlink://") pkg = lm.get_package("External")
assert Path(pkg.path) == external_pkg_dir
assert pkg.metadata.spec.uri.startswith("symlink://")
assert lm.get_package(spec).metadata.spec.uri.startswith("symlink://") assert lm.get_package(spec).metadata.spec.uri.startswith("symlink://")
# try to update # try to update

View File

@@ -216,9 +216,8 @@ int main() {
""" """
[env:native] [env:native]
platform = native platform = native
lib_deps = symlink://%s lib_deps = symlink://../External
""" """
% str(external_pkg_dir)
) )
result = clirunner.invoke(cmd_run, ["--project-dir", str(project_dir), "--verbose"]) result = clirunner.invoke(cmd_run, ["--project-dir", str(project_dir), "--verbose"])
validate_cliresult(result) validate_cliresult(result)