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 boards = _new_boards
return boards return boards
def _ouput_boards_json(query, installed=False): def _ouput_boards_json(query, installed=False):
result = [] result = []
for board in _get_boards(installed): for board in _get_boards(installed):

View File

@ -23,6 +23,8 @@ import click
from platformio import app, exception, telemetry, util from platformio import app, exception, telemetry, util
from platformio.commands.lib import lib_install as cmd_lib_install 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.libmanager import LibraryManager
from platformio.managers.platform import PlatformFactory from platformio.managers.platform import PlatformFactory
@ -186,7 +188,6 @@ class EnvironmentProcessor(object):
if "platform" not in self.options: if "platform" not in self.options:
raise exception.UndefinedEnvPlatform(self.name) raise exception.UndefinedEnvPlatform(self.name)
platform = self.options['platform']
build_vars = self._get_build_variables() build_vars = self._get_build_variables()
build_targets = self._get_build_targets() build_targets = self._get_build_targets()
@ -196,7 +197,17 @@ class EnvironmentProcessor(object):
if "lib_install" in self.options: if "lib_install" in self.options:
_autoinstall_libs(self.cmd_ctx, self.options['lib_install']) _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) return p.run(build_vars, build_targets, self.verbose_level)

View File

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

View File

@ -16,16 +16,16 @@ import json
from platformio import util from platformio import util
from platformio.commands.boards import cli as cmd_boards from platformio.commands.boards import cli as cmd_boards
from platformio.commands.platforms import \ from platformio.commands.platform import \
platforms_search as cmd_platforms_search platform_search as cmd_platform_search
def test_board_json_output(platformio_setup, clirunner, validate_cliresult): 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) validate_cliresult(result)
boards = json.loads(result.output) boards = json.loads(result.output)
assert isinstance(boards, dict) assert isinstance(boards, list)
assert "teensy30" in boards assert any(["mbed" in b['frameworks'] for b in boards])
def test_board_raw_output(platformio_setup, clirunner, validate_cliresult): 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): def test_board_options(platformio_setup, clirunner, validate_cliresult):
required_opts = set( required_opts = set(
["build", "platform", "upload", "name"]) ["fcpu", "frameworks", "id", "mcu", "name", "platform"])
# fetch available platforms # fetch available platforms
result = clirunner.invoke(cmd_platforms_search, ["--json-output"]) result = clirunner.invoke(cmd_platform_search, ["--json-output"])
validate_cliresult(result) validate_cliresult(result)
search_result = json.loads(result.output) search_result = json.loads(result.output)
assert isinstance(search_result, list) assert isinstance(search_result, list)
assert len(search_result) 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(): result = clirunner.invoke(cmd_boards, ["mbed", "--json-output"])
assert required_opts.issubset(set(opts)) validate_cliresult(result)
assert opts['platform'] in platforms 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 # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import json
from os import makedirs, getcwd from os import makedirs, getcwd
from os.path import getsize, isdir, isfile, join from os.path import getsize, isdir, isfile, join
from platformio.commands.init import cli from platformio.commands.init import cli
from platformio.commands.boards import cli as cmd_boards
from platformio import util from platformio import util
@ -48,11 +50,14 @@ def test_init_special_board(platformio_setup, clirunner, validate_cliresult):
validate_cliresult(result) validate_cliresult(result)
validate_pioproject(getcwd()) 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() config = util.get_project_config()
expected_result = [ expected_result = [
("platform", str(uno['platform'])), ("platform", str(boards[0]['platform'])),
("framework", str(uno['frameworks'][0])), ("framework", str(boards[0]['frameworks'][0])),
("board", "uno") ("board", "uno")
] ]

View File

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