forked from platformio/platformio-core
Do not detach a new package even if it comes from external source
This commit is contained in:
@ -180,20 +180,19 @@ class PackageManagerInstallMixin(object):
|
||||
dst_pkg = PackageItem(
|
||||
os.path.join(self.package_dir, tmp_pkg.metadata.spec.name)
|
||||
)
|
||||
elif dst_pkg.metadata and dst_pkg.metadata.spec.external:
|
||||
if dst_pkg.metadata.spec.url != tmp_pkg.metadata.spec.url:
|
||||
action = "detach-existing"
|
||||
elif tmp_pkg.metadata.spec.external:
|
||||
action = "detach-new"
|
||||
elif dst_pkg.metadata and (
|
||||
dst_pkg.metadata.version != tmp_pkg.metadata.version
|
||||
or dst_pkg.metadata.spec.owner != tmp_pkg.metadata.spec.owner
|
||||
):
|
||||
action = (
|
||||
"detach-existing"
|
||||
if tmp_pkg.metadata.version > dst_pkg.metadata.version
|
||||
else "detach-new"
|
||||
)
|
||||
elif dst_pkg.metadata:
|
||||
if dst_pkg.metadata.spec.external:
|
||||
if dst_pkg.metadata.spec.url != tmp_pkg.metadata.spec.url:
|
||||
action = "detach-existing"
|
||||
elif (
|
||||
dst_pkg.metadata.version != tmp_pkg.metadata.version
|
||||
or dst_pkg.metadata.spec.owner != tmp_pkg.metadata.spec.owner
|
||||
):
|
||||
action = (
|
||||
"detach-existing"
|
||||
if tmp_pkg.metadata.version > dst_pkg.metadata.version
|
||||
else "detach-new"
|
||||
)
|
||||
|
||||
def _cleanup_dir(path):
|
||||
if os.path.isdir(path):
|
||||
|
@ -154,7 +154,7 @@ class MeasurementProtocol(TelemetryBase):
|
||||
"project",
|
||||
"settings",
|
||||
"system",
|
||||
"team"
|
||||
"team",
|
||||
):
|
||||
cmd_path = args[:2]
|
||||
if args[0] == "lib" and len(args) > 1:
|
||||
|
@ -98,9 +98,10 @@ def test_global_install_archive(clirunner, validate_cliresult, isolated_pio_core
|
||||
items1 = [d.basename for d in isolated_pio_core.join("lib").listdir()]
|
||||
items2 = [
|
||||
"ArduinoJson",
|
||||
"ArduinoJson@src-69ebddd821f771debe7ee734d3c7fa81",
|
||||
"SomeLib",
|
||||
"OneWire",
|
||||
"ESP32WebServer@src-a1a3c75631882b35702e71966ea694e8",
|
||||
"ESP32WebServer",
|
||||
]
|
||||
assert set(items1) >= set(items2)
|
||||
|
||||
@ -122,11 +123,11 @@ def test_global_install_repository(clirunner, validate_cliresult, isolated_pio_c
|
||||
validate_cliresult(result)
|
||||
items1 = [d.basename for d in isolated_pio_core.join("lib").listdir()]
|
||||
items2 = [
|
||||
"PJON@src-1204e8bbd80de05e54e171b3a07bcc3f",
|
||||
"PJON",
|
||||
"PJON@src-79de467ebe19de18287becff0a1fb42d",
|
||||
"ArduinoJson@src-69ebddd821f771debe7ee734d3c7fa81",
|
||||
"platformio-libmirror@src-b7e674cad84244c61b436fcea8f78377",
|
||||
"PubSubClient@src-98ec699a461a31615982e5adaaefadda",
|
||||
"platformio-libmirror",
|
||||
"PubSubClient",
|
||||
]
|
||||
assert set(items1) >= set(items2)
|
||||
|
||||
@ -293,13 +294,13 @@ def test_global_lib_uninstall(clirunner, validate_cliresult, isolated_pio_core):
|
||||
"ArduinoJson@src-69ebddd821f771debe7ee734d3c7fa81",
|
||||
"AsyncMqttClient",
|
||||
"AsyncTCP",
|
||||
"ESP32WebServer@src-a1a3c75631882b35702e71966ea694e8",
|
||||
"ESP32WebServer",
|
||||
"ESPAsyncTCP",
|
||||
"NeoPixelBus",
|
||||
"PJON@src-1204e8bbd80de05e54e171b3a07bcc3f",
|
||||
"PJON",
|
||||
"PJON@src-79de467ebe19de18287becff0a1fb42d",
|
||||
"platformio-libmirror@src-b7e674cad84244c61b436fcea8f78377",
|
||||
"PubSubClient@src-98ec699a461a31615982e5adaaefadda",
|
||||
"platformio-libmirror",
|
||||
"PubSubClient",
|
||||
"SomeLib",
|
||||
]
|
||||
assert set(items1) == set(items2)
|
||||
|
@ -186,6 +186,12 @@ version = 5.2.7
|
||||
pkg = lm.install_from_url("file://%s" % src_dir, spec)
|
||||
assert str(pkg.metadata.version) == "5.2.7"
|
||||
|
||||
# check package folder names
|
||||
lm.memcache_reset()
|
||||
assert ["local-lib-dir", "manifest-lib-name", "wifilib"] == [
|
||||
os.path.basename(pkg.path) for pkg in lm.get_installed()
|
||||
]
|
||||
|
||||
|
||||
def test_install_from_registry(isolated_pio_core, tmpdir_factory):
|
||||
# Libraries
|
||||
|
Reference in New Issue
Block a user