mirror of
https://github.com/platformio/platformio-core.git
synced 2025-10-04 17:40:57 +02:00
225 lines
7.7 KiB
Python
225 lines
7.7 KiB
Python
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
from platformio.package.meta import PackageSpec
|
|
from platformio.project.config import ProjectConfig
|
|
from platformio.project.savedeps import save_project_dependencies
|
|
|
|
PROJECT_CONFIG_TPL = """
|
|
[env]
|
|
board = uno
|
|
framework = arduino
|
|
lib_deps =
|
|
SPI
|
|
platform_packages =
|
|
platformio/tool-jlink@^1.75001.0
|
|
|
|
[env:bare]
|
|
|
|
[env:release]
|
|
platform = platformio/espressif32
|
|
lib_deps =
|
|
milesburton/DallasTemperature@^3.8
|
|
|
|
[env:debug]
|
|
platform = platformio/espressif32@^3.4.0
|
|
lib_deps =
|
|
${env.lib_deps}
|
|
milesburton/DallasTemperature@^3.9.1
|
|
bblanchon/ArduinoJson
|
|
platform_packages =
|
|
${env.platform_packages}
|
|
platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git
|
|
"""
|
|
|
|
|
|
def test_save_libraries(tmp_path):
|
|
project_dir = tmp_path / "project"
|
|
project_dir.mkdir()
|
|
(project_dir / "platformio.ini").write_text(PROJECT_CONFIG_TPL)
|
|
specs = [
|
|
PackageSpec("milesburton/DallasTemperature@^3.9"),
|
|
PackageSpec("adafruit/Adafruit GPS Library@^1.6.0"),
|
|
PackageSpec("https://github.com/nanopb/nanopb.git"),
|
|
]
|
|
|
|
# add to the sepcified environment
|
|
save_project_dependencies(
|
|
str(project_dir), specs, scope="lib_deps", action="add", environments=["debug"]
|
|
)
|
|
config = ProjectConfig.get_instance(str(project_dir / "platformio.ini"))
|
|
assert config.get("env:debug", "lib_deps") == [
|
|
"SPI",
|
|
"bblanchon/ArduinoJson",
|
|
"milesburton/DallasTemperature@^3.9",
|
|
"adafruit/Adafruit GPS Library@^1.6.0",
|
|
"https://github.com/nanopb/nanopb.git",
|
|
]
|
|
assert config.get("env:bare", "lib_deps") == ["SPI"]
|
|
assert config.get("env:release", "lib_deps") == [
|
|
"milesburton/DallasTemperature@^3.8"
|
|
]
|
|
|
|
# add to the the all environments
|
|
save_project_dependencies(str(project_dir), specs, scope="lib_deps", action="add")
|
|
config = ProjectConfig.get_instance(str(project_dir / "platformio.ini"))
|
|
assert config.get("env:debug", "lib_deps") == [
|
|
"SPI",
|
|
"bblanchon/ArduinoJson",
|
|
"milesburton/DallasTemperature@^3.9",
|
|
"adafruit/Adafruit GPS Library@^1.6.0",
|
|
"https://github.com/nanopb/nanopb.git",
|
|
]
|
|
assert config.get("env:bare", "lib_deps") == [
|
|
"milesburton/DallasTemperature@^3.9",
|
|
"adafruit/Adafruit GPS Library@^1.6.0",
|
|
"https://github.com/nanopb/nanopb.git",
|
|
]
|
|
assert config.get("env:release", "lib_deps") == [
|
|
"milesburton/DallasTemperature@^3.9",
|
|
"adafruit/Adafruit GPS Library@^1.6.0",
|
|
"https://github.com/nanopb/nanopb.git",
|
|
]
|
|
|
|
# remove deps from env
|
|
save_project_dependencies(
|
|
str(project_dir),
|
|
[PackageSpec("milesburton/DallasTemperature")],
|
|
scope="lib_deps",
|
|
action="remove",
|
|
environments=["release"],
|
|
)
|
|
config = ProjectConfig.get_instance(str(project_dir / "platformio.ini"))
|
|
assert config.get("env:release", "lib_deps") == [
|
|
"adafruit/Adafruit GPS Library@^1.6.0",
|
|
"https://github.com/nanopb/nanopb.git",
|
|
]
|
|
# invalid requirements
|
|
save_project_dependencies(
|
|
str(project_dir),
|
|
[PackageSpec("adafruit/Adafruit GPS Library@^9.9.9")],
|
|
scope="lib_deps",
|
|
action="remove",
|
|
environments=["release"],
|
|
)
|
|
config = ProjectConfig.get_instance(str(project_dir / "platformio.ini"))
|
|
assert config.get("env:release", "lib_deps") == [
|
|
"https://github.com/nanopb/nanopb.git",
|
|
]
|
|
|
|
# remove deps from all envs
|
|
save_project_dependencies(
|
|
str(project_dir), specs, scope="lib_deps", action="remove"
|
|
)
|
|
config = ProjectConfig.get_instance(str(project_dir / "platformio.ini"))
|
|
assert config.get("env:debug", "lib_deps") == [
|
|
"SPI",
|
|
"bblanchon/ArduinoJson",
|
|
]
|
|
assert config.get("env:bare", "lib_deps") == ["SPI"]
|
|
assert config.get("env:release", "lib_deps") == ["SPI"]
|
|
|
|
|
|
def test_save_tools(tmp_path):
|
|
project_dir = tmp_path / "project"
|
|
project_dir.mkdir()
|
|
(project_dir / "platformio.ini").write_text(PROJECT_CONFIG_TPL)
|
|
specs = [
|
|
PackageSpec("platformio/framework-espidf@^2"),
|
|
PackageSpec("platformio/tool-esptoolpy"),
|
|
]
|
|
|
|
# add to the sepcified environment
|
|
save_project_dependencies(
|
|
str(project_dir),
|
|
specs,
|
|
scope="platform_packages",
|
|
action="add",
|
|
environments=["debug"],
|
|
)
|
|
config = ProjectConfig.get_instance(str(project_dir / "platformio.ini"))
|
|
assert config.get("env:debug", "platform_packages") == [
|
|
"platformio/tool-jlink@^1.75001.0",
|
|
"platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git",
|
|
"platformio/framework-espidf@^2",
|
|
"platformio/tool-esptoolpy",
|
|
]
|
|
assert config.get("env:bare", "platform_packages") == [
|
|
"platformio/tool-jlink@^1.75001.0"
|
|
]
|
|
assert config.get("env:release", "platform_packages") == [
|
|
"platformio/tool-jlink@^1.75001.0"
|
|
]
|
|
|
|
# add to the the all environments
|
|
save_project_dependencies(
|
|
str(project_dir), specs, scope="platform_packages", action="add"
|
|
)
|
|
config = ProjectConfig.get_instance(str(project_dir / "platformio.ini"))
|
|
assert config.get("env:debug", "platform_packages") == [
|
|
"platformio/tool-jlink@^1.75001.0",
|
|
"platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git",
|
|
"platformio/framework-espidf@^2",
|
|
"platformio/tool-esptoolpy",
|
|
]
|
|
assert config.get("env:bare", "platform_packages") == [
|
|
"platformio/framework-espidf@^2",
|
|
"platformio/tool-esptoolpy",
|
|
]
|
|
assert config.get("env:release", "platform_packages") == [
|
|
"platformio/framework-espidf@^2",
|
|
"platformio/tool-esptoolpy",
|
|
]
|
|
|
|
# remove deps from env
|
|
save_project_dependencies(
|
|
str(project_dir),
|
|
[PackageSpec("platformio/framework-espidf")],
|
|
scope="platform_packages",
|
|
action="remove",
|
|
environments=["release"],
|
|
)
|
|
config = ProjectConfig.get_instance(str(project_dir / "platformio.ini"))
|
|
assert config.get("env:release", "platform_packages") == [
|
|
"platformio/tool-esptoolpy",
|
|
]
|
|
# invalid requirements
|
|
save_project_dependencies(
|
|
str(project_dir),
|
|
[PackageSpec("platformio/tool-esptoolpy@9.9.9")],
|
|
scope="platform_packages",
|
|
action="remove",
|
|
environments=["release"],
|
|
)
|
|
config = ProjectConfig.get_instance(str(project_dir / "platformio.ini"))
|
|
assert config.get("env:release", "platform_packages") == [
|
|
"platformio/tool-jlink@^1.75001.0",
|
|
]
|
|
|
|
# remove deps from all envs
|
|
save_project_dependencies(
|
|
str(project_dir), specs, scope="platform_packages", action="remove"
|
|
)
|
|
config = ProjectConfig.get_instance(str(project_dir / "platformio.ini"))
|
|
assert config.get("env:debug", "platform_packages") == [
|
|
"platformio/tool-jlink@^1.75001.0",
|
|
"platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git",
|
|
]
|
|
assert config.get("env:bare", "platform_packages") == [
|
|
"platformio/tool-jlink@^1.75001.0"
|
|
]
|
|
assert config.get("env:release", "platform_packages") == [
|
|
"platformio/tool-jlink@^1.75001.0"
|
|
]
|