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(
|
dst_pkg = PackageItem(
|
||||||
os.path.join(self.package_dir, tmp_pkg.metadata.spec.name)
|
os.path.join(self.package_dir, tmp_pkg.metadata.spec.name)
|
||||||
)
|
)
|
||||||
elif dst_pkg.metadata and dst_pkg.metadata.spec.external:
|
elif dst_pkg.metadata:
|
||||||
if dst_pkg.metadata.spec.url != tmp_pkg.metadata.spec.url:
|
if dst_pkg.metadata.spec.external:
|
||||||
action = "detach-existing"
|
if dst_pkg.metadata.spec.url != tmp_pkg.metadata.spec.url:
|
||||||
elif tmp_pkg.metadata.spec.external:
|
action = "detach-existing"
|
||||||
action = "detach-new"
|
elif (
|
||||||
elif dst_pkg.metadata and (
|
dst_pkg.metadata.version != tmp_pkg.metadata.version
|
||||||
dst_pkg.metadata.version != tmp_pkg.metadata.version
|
or dst_pkg.metadata.spec.owner != tmp_pkg.metadata.spec.owner
|
||||||
or dst_pkg.metadata.spec.owner != tmp_pkg.metadata.spec.owner
|
):
|
||||||
):
|
action = (
|
||||||
action = (
|
"detach-existing"
|
||||||
"detach-existing"
|
if tmp_pkg.metadata.version > dst_pkg.metadata.version
|
||||||
if tmp_pkg.metadata.version > dst_pkg.metadata.version
|
else "detach-new"
|
||||||
else "detach-new"
|
)
|
||||||
)
|
|
||||||
|
|
||||||
def _cleanup_dir(path):
|
def _cleanup_dir(path):
|
||||||
if os.path.isdir(path):
|
if os.path.isdir(path):
|
||||||
|
@ -154,7 +154,7 @@ class MeasurementProtocol(TelemetryBase):
|
|||||||
"project",
|
"project",
|
||||||
"settings",
|
"settings",
|
||||||
"system",
|
"system",
|
||||||
"team"
|
"team",
|
||||||
):
|
):
|
||||||
cmd_path = args[:2]
|
cmd_path = args[:2]
|
||||||
if args[0] == "lib" and len(args) > 1:
|
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()]
|
items1 = [d.basename for d in isolated_pio_core.join("lib").listdir()]
|
||||||
items2 = [
|
items2 = [
|
||||||
"ArduinoJson",
|
"ArduinoJson",
|
||||||
|
"ArduinoJson@src-69ebddd821f771debe7ee734d3c7fa81",
|
||||||
"SomeLib",
|
"SomeLib",
|
||||||
"OneWire",
|
"OneWire",
|
||||||
"ESP32WebServer@src-a1a3c75631882b35702e71966ea694e8",
|
"ESP32WebServer",
|
||||||
]
|
]
|
||||||
assert set(items1) >= set(items2)
|
assert set(items1) >= set(items2)
|
||||||
|
|
||||||
@ -122,11 +123,11 @@ def test_global_install_repository(clirunner, validate_cliresult, isolated_pio_c
|
|||||||
validate_cliresult(result)
|
validate_cliresult(result)
|
||||||
items1 = [d.basename for d in isolated_pio_core.join("lib").listdir()]
|
items1 = [d.basename for d in isolated_pio_core.join("lib").listdir()]
|
||||||
items2 = [
|
items2 = [
|
||||||
"PJON@src-1204e8bbd80de05e54e171b3a07bcc3f",
|
"PJON",
|
||||||
"PJON@src-79de467ebe19de18287becff0a1fb42d",
|
"PJON@src-79de467ebe19de18287becff0a1fb42d",
|
||||||
"ArduinoJson@src-69ebddd821f771debe7ee734d3c7fa81",
|
"ArduinoJson@src-69ebddd821f771debe7ee734d3c7fa81",
|
||||||
"platformio-libmirror@src-b7e674cad84244c61b436fcea8f78377",
|
"platformio-libmirror",
|
||||||
"PubSubClient@src-98ec699a461a31615982e5adaaefadda",
|
"PubSubClient",
|
||||||
]
|
]
|
||||||
assert set(items1) >= set(items2)
|
assert set(items1) >= set(items2)
|
||||||
|
|
||||||
@ -293,13 +294,13 @@ def test_global_lib_uninstall(clirunner, validate_cliresult, isolated_pio_core):
|
|||||||
"ArduinoJson@src-69ebddd821f771debe7ee734d3c7fa81",
|
"ArduinoJson@src-69ebddd821f771debe7ee734d3c7fa81",
|
||||||
"AsyncMqttClient",
|
"AsyncMqttClient",
|
||||||
"AsyncTCP",
|
"AsyncTCP",
|
||||||
"ESP32WebServer@src-a1a3c75631882b35702e71966ea694e8",
|
"ESP32WebServer",
|
||||||
"ESPAsyncTCP",
|
"ESPAsyncTCP",
|
||||||
"NeoPixelBus",
|
"NeoPixelBus",
|
||||||
"PJON@src-1204e8bbd80de05e54e171b3a07bcc3f",
|
"PJON",
|
||||||
"PJON@src-79de467ebe19de18287becff0a1fb42d",
|
"PJON@src-79de467ebe19de18287becff0a1fb42d",
|
||||||
"platformio-libmirror@src-b7e674cad84244c61b436fcea8f78377",
|
"platformio-libmirror",
|
||||||
"PubSubClient@src-98ec699a461a31615982e5adaaefadda",
|
"PubSubClient",
|
||||||
"SomeLib",
|
"SomeLib",
|
||||||
]
|
]
|
||||||
assert set(items1) == set(items2)
|
assert set(items1) == set(items2)
|
||||||
|
@ -186,6 +186,12 @@ version = 5.2.7
|
|||||||
pkg = lm.install_from_url("file://%s" % src_dir, spec)
|
pkg = lm.install_from_url("file://%s" % src_dir, spec)
|
||||||
assert str(pkg.metadata.version) == "5.2.7"
|
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):
|
def test_install_from_registry(isolated_pio_core, tmpdir_factory):
|
||||||
# Libraries
|
# Libraries
|
||||||
|
Reference in New Issue
Block a user