diff --git a/.github/workflows/projects.yml b/.github/workflows/projects.yml index 1e21bed1..ad62bc64 100644 --- a/.github/workflows/projects.yml +++ b/.github/workflows/projects.yml @@ -13,11 +13,11 @@ jobs: folder: "Marlin" config_dir: "Marlin" env_name: "mega2560" - - esphome: - repository: "esphome/esphome" - folder: "esphome" - config_dir: "esphome" - env_name: "esp32-arduino" + # - esphome: + # repository: "esphome/esphome" + # folder: "esphome" + # config_dir: "esphome" + # env_name: "esp32-arduino" - smartknob: repository: "scottbez1/smartknob" folder: "smartknob" diff --git a/HISTORY.rst b/HISTORY.rst index 17987fe0..7ad9d795 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -13,7 +13,7 @@ PlatformIO Core 6 **A professional collaborative platform for declarative, safety-critical, and test-driven embedded development.** -6.1.0 (2022-??-??) +6.1.0 (2022-07-06) ~~~~~~~~~~~~~~~~~~ * **Device Manager** diff --git a/docs b/docs index be6e3e87..f5958b87 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit be6e3e87ecdac12d6dc869fcac42b5cd481fa982 +Subproject commit f5958b875629eac7b9b95932d524952731e79480 diff --git a/platformio/__init__.py b/platformio/__init__.py index 286123a8..1ceb17a7 100644 --- a/platformio/__init__.py +++ b/platformio/__init__.py @@ -14,7 +14,7 @@ import sys -VERSION = (6, 1, "0rc1") +VERSION = (6, 1, 0) __version__ = ".".join([str(s) for s in VERSION]) __title__ = "platformio" diff --git a/tests/commands/pkg/test_install.py b/tests/commands/pkg/test_install.py index 415baea8..dcbd2d98 100644 --- a/tests/commands/pkg/test_install.py +++ b/tests/commands/pkg/test_install.py @@ -50,7 +50,11 @@ def pkgs_to_specs(pkgs): def test_global_packages( - clirunner, validate_cliresult, func_isolated_pio_core, tmp_path + clirunner, + validate_cliresult, + func_isolated_pio_core, + get_pkg_latest_version, + tmp_path, ): # libraries result = clirunner.invoke( @@ -81,7 +85,7 @@ def test_global_packages( assert pkgs_to_specs(LibraryPackageManager().get_installed()) == [ PackageSpec("ArduinoJson@5.13.4"), PackageSpec("DallasTemperature@3.9.0+sha.964939d"), - PackageSpec("OneWire@2.3.7"), + PackageSpec("OneWire@%s" % get_pkg_latest_version("paulstoffregen/OneWire")), ] # custom storage storage_dir = tmp_path / "custom_lib_storage" @@ -122,7 +126,9 @@ def test_global_packages( ] -def test_skip_dependencies(clirunner, validate_cliresult, isolated_pio_core, tmp_path): +def test_skip_dependencies( + clirunner, validate_cliresult, isolated_pio_core, get_pkg_latest_version, tmp_path +): project_dir = tmp_path / "project" project_dir.mkdir() (project_dir / "platformio.ini").write_text(PROJECT_CONFIG_TPL) @@ -136,13 +142,18 @@ def test_skip_dependencies(clirunner, validate_cliresult, isolated_pio_core, tmp os.path.join(ProjectConfig().get("platformio", "libdeps_dir"), "devkit") ).get_installed() assert pkgs_to_specs(installed_lib_pkgs) == [ - PackageSpec("DallasTemperature@3.10.0"), + PackageSpec( + "DallasTemperature@%s" + % get_pkg_latest_version("milesburton/DallasTemperature") + ), PackageSpec("ESPAsyncWebServer-esphome@2.1.0"), ] assert len(ToolPackageManager().get_installed()) == 0 -def test_baremetal_project(clirunner, validate_cliresult, isolated_pio_core, tmp_path): +def test_baremetal_project( + clirunner, validate_cliresult, isolated_pio_core, get_pkg_latest_version, tmp_path +): project_dir = tmp_path / "project" project_dir.mkdir() (project_dir / "platformio.ini").write_text(PROJECT_CONFIG_TPL) @@ -156,16 +167,23 @@ def test_baremetal_project(clirunner, validate_cliresult, isolated_pio_core, tmp os.path.join(ProjectConfig().get("platformio", "libdeps_dir"), "baremetal") ).get_installed() assert pkgs_to_specs(installed_lib_pkgs) == [ - PackageSpec("DallasTemperature@3.10.0"), + PackageSpec( + "DallasTemperature@%s" + % get_pkg_latest_version("milesburton/DallasTemperature") + ), PackageSpec("ESPAsyncWebServer-esphome@2.1.0"), - PackageSpec("OneWire@2.3.7"), + PackageSpec( + "OneWire@%s" % get_pkg_latest_version("paulstoffregen/OneWire") + ), ] assert pkgs_to_specs(ToolPackageManager().get_installed()) == [ PackageSpec("toolchain-atmelavr@1.70300.191015"), ] -def test_project(clirunner, validate_cliresult, isolated_pio_core, tmp_path): +def test_project( + clirunner, validate_cliresult, isolated_pio_core, get_pkg_latest_version, tmp_path +): project_dir = tmp_path / "project" project_dir.mkdir() (project_dir / "platformio.ini").write_text(PROJECT_CONFIG_TPL) @@ -180,9 +198,14 @@ def test_project(clirunner, validate_cliresult, isolated_pio_core, tmp_path): os.path.join(config.get("platformio", "libdeps_dir"), "devkit") ) assert pkgs_to_specs(lm.get_installed()) == [ - PackageSpec("DallasTemperature@3.10.0"), + PackageSpec( + "DallasTemperature@%s" + % get_pkg_latest_version("milesburton/DallasTemperature") + ), PackageSpec("ESPAsyncWebServer-esphome@2.1.0"), - PackageSpec("OneWire@2.3.7"), + PackageSpec( + "OneWire@%s" % get_pkg_latest_version("paulstoffregen/OneWire") + ), ] assert pkgs_to_specs(ToolPackageManager().get_installed()) == [ PackageSpec("framework-arduino-avr-attiny@1.5.2"), @@ -202,7 +225,9 @@ def test_project(clirunner, validate_cliresult, isolated_pio_core, tmp_path): assert "Already up-to-date" in result.output -def test_private_lib_deps(clirunner, validate_cliresult, isolated_pio_core, tmp_path): +def test_private_lib_deps( + clirunner, validate_cliresult, isolated_pio_core, get_pkg_latest_version, tmp_path +): project_dir = tmp_path / "project" private_lib_dir = project_dir / "lib" / "private" private_lib_dir.mkdir(parents=True) @@ -247,7 +272,9 @@ platform = native config.get("platformio", "lib_dir") ).get_installed() assert pkgs_to_specs(installed_private_pkgs) == [ - PackageSpec("OneWire@2.3.7"), + PackageSpec( + "OneWire@%s" % get_pkg_latest_version("paulstoffregen/OneWire") + ), PackageSpec("My Private Lib@1.0.0"), ] installed_env_pkgs = LibraryPackageManager( @@ -255,12 +282,15 @@ platform = native ).get_installed() assert pkgs_to_specs(installed_env_pkgs) == [ PackageSpec("ArduinoJson@5.13.4"), - PackageSpec("DallasTemperature@3.10.0"), + PackageSpec( + "DallasTemperature@%s" + % get_pkg_latest_version("milesburton/DallasTemperature") + ), ] def test_remove_project_unused_libdeps( - clirunner, validate_cliresult, isolated_pio_core, tmp_path + clirunner, validate_cliresult, isolated_pio_core, get_pkg_latest_version, tmp_path ): project_dir = tmp_path / "project" project_dir.mkdir() @@ -275,9 +305,14 @@ def test_remove_project_unused_libdeps( storage_dir = os.path.join(config.get("platformio", "libdeps_dir"), "baremetal") lm = LibraryPackageManager(storage_dir) assert pkgs_to_specs(lm.get_installed()) == [ - PackageSpec("DallasTemperature@3.10.0"), + PackageSpec( + "DallasTemperature@%s" + % get_pkg_latest_version("milesburton/DallasTemperature") + ), PackageSpec("ESPAsyncWebServer-esphome@2.1.0"), - PackageSpec("OneWire@2.3.7"), + PackageSpec( + "OneWire@%s" % get_pkg_latest_version("paulstoffregen/OneWire") + ), ] # add new deps @@ -292,9 +327,14 @@ def test_remove_project_unused_libdeps( lm = LibraryPackageManager(storage_dir) assert pkgs_to_specs(lm.get_installed()) == [ PackageSpec("ArduinoJson@5.13.4"), - PackageSpec("DallasTemperature@3.10.0"), + PackageSpec( + "DallasTemperature@%s" + % get_pkg_latest_version("milesburton/DallasTemperature") + ), PackageSpec("ESPAsyncWebServer-esphome@2.1.0"), - PackageSpec("OneWire@2.3.7"), + PackageSpec( + "OneWire@%s" % get_pkg_latest_version("paulstoffregen/OneWire") + ), ] # manually remove from cofiguration file diff --git a/tests/commands/pkg/test_update.py b/tests/commands/pkg/test_update.py index e49423fd..06ab92a7 100644 --- a/tests/commands/pkg/test_update.py +++ b/tests/commands/pkg/test_update.py @@ -145,7 +145,9 @@ def test_global_packages( assert isinstance(result.exception, UnknownPackageError) -def test_project(clirunner, validate_cliresult, isolated_pio_core, tmp_path): +def test_project( + clirunner, validate_cliresult, isolated_pio_core, get_pkg_latest_version, tmp_path +): project_dir = tmp_path / "project" project_dir.mkdir() (project_dir / "platformio.ini").write_text(PROJECT_OUTDATED_CONFIG_TPL) @@ -161,7 +163,9 @@ def test_project(clirunner, validate_cliresult, isolated_pio_core, tmp_path): ) assert pkgs_to_specs(lm.get_installed()) == [ PackageSpec("DallasTemperature@3.8.1"), - PackageSpec("OneWire@2.3.7"), + PackageSpec( + "OneWire@%s" % get_pkg_latest_version("paulstoffregen/OneWire") + ), ] assert pkgs_to_specs(PlatformPackageManager().get_installed()) == [ PackageSpec("atmelavr@2.2.0") @@ -187,8 +191,13 @@ def test_project(clirunner, validate_cliresult, isolated_pio_core, tmp_path): assert pkgs[0].metadata.name == "atmelavr" assert pkgs[0].metadata.version.major == 3 assert pkgs_to_specs(lm.get_installed()) == [ - PackageSpec("DallasTemperature@3.10.0"), - PackageSpec("OneWire@2.3.7"), + PackageSpec( + "DallasTemperature@%s" + % get_pkg_latest_version("milesburton/DallasTemperature") + ), + PackageSpec( + "OneWire@%s" % get_pkg_latest_version("paulstoffregen/OneWire") + ), ] assert pkgs_to_specs(ToolPackageManager().get_installed()) == [ PackageSpec("framework-arduino-avr-attiny@1.3.2"), @@ -211,7 +220,7 @@ def test_project(clirunner, validate_cliresult, isolated_pio_core, tmp_path): def test_custom_project_libraries( - clirunner, validate_cliresult, isolated_pio_core, tmp_path + clirunner, validate_cliresult, isolated_pio_core, get_pkg_latest_version, tmp_path ): project_dir = tmp_path / "project" project_dir.mkdir() @@ -230,7 +239,9 @@ def test_custom_project_libraries( ) assert pkgs_to_specs(lm.get_installed()) == [ PackageSpec("DallasTemperature@3.8.1"), - PackageSpec("OneWire@2.3.7"), + PackageSpec( + "OneWire@%s" % get_pkg_latest_version("paulstoffregen/OneWire") + ), ] # update package result = clirunner.invoke( @@ -260,8 +271,13 @@ def test_custom_project_libraries( os.path.join(config.get("platformio", "libdeps_dir"), "devkit") ) assert pkgs_to_specs(lm.get_installed()) == [ - PackageSpec("DallasTemperature@3.10.0"), - PackageSpec("OneWire@2.3.7"), + PackageSpec( + "DallasTemperature@%s" + % get_pkg_latest_version("milesburton/DallasTemperature") + ), + PackageSpec( + "OneWire@%s" % get_pkg_latest_version("paulstoffregen/OneWire") + ), ] assert config.get("env:devkit", "lib_deps") == [ "milesburton/DallasTemperature@^3.8.0" diff --git a/tests/conftest.py b/tests/conftest.py index b26aaf49..eedf54c5 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -13,6 +13,7 @@ # limitations under the License. import email +import functools import imaplib import os import time @@ -21,6 +22,8 @@ import pytest from click.testing import CliRunner from platformio import http +from platformio.package.meta import PackageSpec, PackageType +from platformio.registry.client import RegistryClient def pytest_configure(config): @@ -131,3 +134,17 @@ def receive_email(): # pylint:disable=redefined-outer-name, too-many-locals return result return _receive_email + + +@pytest.fixture(scope="session") +def get_pkg_latest_version(): + @functools.lru_cache() + def wrap(spec, pkg_type=None): + if not isinstance(spec, PackageSpec): + spec = PackageSpec(spec) + pkg_type = pkg_type or PackageType.LIBRARY + client = RegistryClient() + pkg = client.get_package(pkg_type, spec.owner, spec.name) + return pkg["version"]["name"] + + return wrap