Update tests according new development platforms architecture // Issue #479

This commit is contained in:
Ivan Kravets
2016-05-28 22:51:33 +03:00
parent c73dd60bd1
commit 23ef51a4e8
6 changed files with 47 additions and 25 deletions

View File

@ -92,6 +92,7 @@ def _get_boards(installed=False):
boards = _new_boards
return boards
def _ouput_boards_json(query, installed=False):
result = []
for board in _get_boards(installed):

View File

@ -23,6 +23,8 @@ import click
from platformio import app, exception, telemetry, util
from platformio.commands.lib import lib_install as cmd_lib_install
from platformio.commands.platform import \
platform_install as cmd_platform_install
from platformio.libmanager import LibraryManager
from platformio.managers.platform import PlatformFactory
@ -186,7 +188,6 @@ class EnvironmentProcessor(object):
if "platform" not in self.options:
raise exception.UndefinedEnvPlatform(self.name)
platform = self.options['platform']
build_vars = self._get_build_variables()
build_targets = self._get_build_targets()
@ -196,7 +197,17 @@ class EnvironmentProcessor(object):
if "lib_install" in self.options:
_autoinstall_libs(self.cmd_ctx, self.options['lib_install'])
p = PlatformFactory.newPlatform(platform)
platform = self.options['platform']
version = None
if "@" in platform:
platform, version = platform.rsplit("@", 1)
try:
p = PlatformFactory.newPlatform(platform)
except exception.UnknownPlatform:
self.cmd_ctx.invoke(cmd_platform_install, platforms=[platform])
p = PlatformFactory.newPlatform(platform)
return p.run(build_vars, build_targets, self.verbose_level)

View File

@ -125,6 +125,7 @@ class PlatformFactory(object):
name, requirements)
if _manifest:
platform_dir = dirname(_manifest['_manifest_path'])
if not platform_dir:
raise exception.UnknownPlatform(
name if not requirements else "%s@%s" % (name, requirements))

View File

@ -16,16 +16,16 @@ import json
from platformio import util
from platformio.commands.boards import cli as cmd_boards
from platformio.commands.platforms import \
platforms_search as cmd_platforms_search
from platformio.commands.platform import \
platform_search as cmd_platform_search
def test_board_json_output(platformio_setup, clirunner, validate_cliresult):
result = clirunner.invoke(cmd_boards, ["cortex", "--json-output"])
result = clirunner.invoke(cmd_boards, ["mbed", "--json-output"])
validate_cliresult(result)
boards = json.loads(result.output)
assert isinstance(boards, dict)
assert "teensy30" in boards
assert isinstance(boards, list)
assert any(["mbed" in b['frameworks'] for b in boards])
def test_board_raw_output(platformio_setup, clirunner, validate_cliresult):
@ -36,16 +36,20 @@ def test_board_raw_output(platformio_setup, clirunner, validate_cliresult):
def test_board_options(platformio_setup, clirunner, validate_cliresult):
required_opts = set(
["build", "platform", "upload", "name"])
["fcpu", "frameworks", "id", "mcu", "name", "platform"])
# fetch available platforms
result = clirunner.invoke(cmd_platforms_search, ["--json-output"])
result = clirunner.invoke(cmd_platform_search, ["--json-output"])
validate_cliresult(result)
search_result = json.loads(result.output)
assert isinstance(search_result, list)
assert len(search_result)
platforms = [item['type'] for item in search_result]
platforms = [item['name'] for item in search_result]
for _, opts in util.get_boards().iteritems():
assert required_opts.issubset(set(opts))
assert opts['platform'] in platforms
result = clirunner.invoke(cmd_boards, ["mbed", "--json-output"])
validate_cliresult(result)
boards = json.loads(result.output)
for board in boards:
assert required_opts.issubset(set(board))
assert board['platform'] in platforms

View File

@ -12,10 +12,12 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import json
from os import makedirs, getcwd
from os.path import getsize, isdir, isfile, join
from platformio.commands.init import cli
from platformio.commands.boards import cli as cmd_boards
from platformio import util
@ -48,11 +50,14 @@ def test_init_special_board(platformio_setup, clirunner, validate_cliresult):
validate_cliresult(result)
validate_pioproject(getcwd())
uno = util.get_boards("uno")
result = clirunner.invoke(cmd_boards, ["Arduino Uno", "--json-output"])
validate_cliresult(result)
boards = json.loads(result.output)
config = util.get_project_config()
expected_result = [
("platform", str(uno['platform'])),
("framework", str(uno['frameworks'][0])),
("platform", str(boards[0]['platform'])),
("framework", str(boards[0]['frameworks'][0])),
("board", "uno")
]

View File

@ -14,14 +14,14 @@
import json
from platformio.commands.platforms import \
platforms_list as cmd_platforms_list
from platformio.commands.platforms import \
platforms_search as cmd_platforms_search
from platformio.commands.platform import \
platform_list as cmd_platform_list
from platformio.commands.platform import \
platform_search as cmd_platform_search
def test_list_json_output(clirunner, validate_cliresult):
result = clirunner.invoke(cmd_platforms_list, ["--json-output"])
result = clirunner.invoke(cmd_platform_list, ["--json-output"])
validate_cliresult(result)
list_result = json.loads(result.output)
assert isinstance(list_result, list)
@ -31,23 +31,23 @@ def test_list_json_output(clirunner, validate_cliresult):
def test_list_raw_output(clirunner, validate_cliresult):
result = clirunner.invoke(cmd_platforms_list)
result = clirunner.invoke(cmd_platform_list)
validate_cliresult(result)
assert "teensy" in result.output
def test_search_json_output(clirunner, validate_cliresult):
result = clirunner.invoke(cmd_platforms_search,
result = clirunner.invoke(cmd_platform_search,
["arduino", "--json-output"])
validate_cliresult(result)
search_result = json.loads(result.output)
assert isinstance(search_result, list)
assert len(search_result)
platforms = [item['type'] for item in search_result]
platforms = [item['name'] for item in search_result]
assert "atmelsam" in platforms
def test_search_raw_output(clirunner, validate_cliresult):
result = clirunner.invoke(cmd_platforms_search, ["arduino"])
result = clirunner.invoke(cmd_platform_search, ["arduino"])
validate_cliresult(result)
assert "teensy" in result.output