Cover init command with tests

This commit is contained in:
Ivan Kravets
2016-08-10 21:58:12 +03:00
parent 3ba0d25f27
commit 473c821132
3 changed files with 65 additions and 25 deletions

View File

@@ -312,6 +312,7 @@ def fill_project_envs( # pylint: disable=too-many-arguments,too-many-locals
used_platforms.append(manifest['platform']) used_platforms.append(manifest['platform'])
if id_ in used_boards: if id_ in used_boards:
continue continue
used_boards.append(id_)
content.append("") content.append("")
content.append("[env:%s%s]" % (env_prefix, id_)) content.append("[env:%s%s]" % (env_prefix, id_))

View File

@@ -16,9 +16,9 @@ import json
from os import getcwd, makedirs from os import getcwd, makedirs
from os.path import getsize, isdir, isfile, join from os.path import getsize, isdir, isfile, join
from platformio import util from platformio import util, exception
from platformio.commands.boards import cli as cmd_boards from platformio.commands.boards import cli as cmd_boards
from platformio.commands.init import cli from platformio.commands.init import cli as cmd_init
def validate_pioproject(pioproject_dir): def validate_pioproject(pioproject_dir):
@@ -28,33 +28,74 @@ def validate_pioproject(pioproject_dir):
join(pioproject_dir, "lib")) join(pioproject_dir, "lib"))
def test_init_default(platformio_setup, clirunner, validate_cliresult): def test_init_default(clirunner, validate_cliresult):
with clirunner.isolated_filesystem(): with clirunner.isolated_filesystem():
result = clirunner.invoke(cli) result = clirunner.invoke(cmd_init)
validate_cliresult(result) validate_cliresult(result)
validate_pioproject(getcwd()) validate_pioproject(getcwd())
def test_init_ext_folder(platformio_setup, clirunner, validate_cliresult): def test_init_ext_folder(clirunner, validate_cliresult):
with clirunner.isolated_filesystem(): with clirunner.isolated_filesystem():
ext_folder_name = "ext_folder" ext_folder_name = "ext_folder"
makedirs(ext_folder_name) makedirs(ext_folder_name)
result = clirunner.invoke(cli, ["-d", ext_folder_name]) result = clirunner.invoke(cmd_init, ["-d", ext_folder_name])
validate_cliresult(result) validate_cliresult(result)
validate_pioproject(join(getcwd(), ext_folder_name)) validate_pioproject(join(getcwd(), ext_folder_name))
def test_init_ide_eclipse(platformio_setup, clirunner, validate_cliresult): def test_init_duplicated_boards(clirunner, validate_cliresult, tmpdir):
with tmpdir.as_cwd():
for _ in range(2):
result = clirunner.invoke(cmd_init, ["-b", "uno", "-b", "uno"])
validate_cliresult(result)
validate_pioproject(str(tmpdir))
config = util.load_project_config()
assert set(config.sections()) == set(["env:uno"])
def test_init_ide_without_board(clirunner, validate_cliresult, tmpdir):
with tmpdir.as_cwd():
result = clirunner.invoke(cmd_init, ["--ide", "atom"])
assert result.exit_code == -1
assert isinstance(result.exception, exception.BoardNotDefined)
def test_init_ide_atom(clirunner, validate_cliresult, tmpdir):
with tmpdir.as_cwd():
result = clirunner.invoke(
cmd_init, ["--ide", "atom", "-b", "uno", "-b", "teensy31"])
validate_cliresult(result)
validate_pioproject(str(tmpdir))
assert all([tmpdir.join(f).check()
for f in (".clang_complete", ".gcc-flags.json")])
assert "arduinoavr" in tmpdir.join(".clang_complete").read()
# switch to NodeMCU
result = clirunner.invoke(
cmd_init, ["--ide", "atom", "-b", "nodemcuv2", "-b", "uno"])
validate_cliresult(result)
validate_pioproject(str(tmpdir))
assert "arduinoespressif" in tmpdir.join(".clang_complete").read()
# switch to the first board
result = clirunner.invoke(cmd_init, ["--ide", "atom"])
validate_cliresult(result)
validate_pioproject(str(tmpdir))
assert "arduinoavr" in tmpdir.join(".clang_complete").read()
def test_init_ide_eclipse(clirunner, validate_cliresult):
with clirunner.isolated_filesystem(): with clirunner.isolated_filesystem():
result = clirunner.invoke(cli, ["-b", "uno", "--ide", "eclipse"]) result = clirunner.invoke(cmd_init, ["-b", "uno", "--ide", "eclipse"])
validate_cliresult(result) validate_cliresult(result)
validate_pioproject(getcwd()) validate_pioproject(getcwd())
assert all([isfile(f) for f in (".cproject", ".project")]) assert all([isfile(f) for f in (".cproject", ".project")])
def test_init_special_board(platformio_setup, clirunner, validate_cliresult): def test_init_special_board(clirunner, validate_cliresult):
with clirunner.isolated_filesystem(): with clirunner.isolated_filesystem():
result = clirunner.invoke(cli, ["-b", "uno"]) result = clirunner.invoke(cmd_init, ["-b", "uno"])
validate_cliresult(result) validate_cliresult(result)
validate_pioproject(getcwd()) validate_pioproject(getcwd())
@@ -65,36 +106,34 @@ def test_init_special_board(platformio_setup, clirunner, validate_cliresult):
config = util.load_project_config() config = util.load_project_config()
expected_result = [ expected_result = [
("platform", str(boards[0]['platform'])), ("platform", str(boards[0]['platform'])),
("framework", str(boards[0]['frameworks'][0])), ("framework", str(boards[0]['frameworks'][0])), ("board", "uno")
("board", "uno")
] ]
assert config.has_section("env:uno") assert config.has_section("env:uno")
assert len(set(expected_result).symmetric_difference( assert len(
set(expected_result).symmetric_difference(
set(config.items("env:uno")))) == 0 set(config.items("env:uno")))) == 0
def test_init_enable_auto_uploading(platformio_setup, clirunner, def test_init_enable_auto_uploading(clirunner, validate_cliresult):
validate_cliresult):
with clirunner.isolated_filesystem(): with clirunner.isolated_filesystem():
result = clirunner.invoke(cli, result = clirunner.invoke(cmd_init,
["-b", "uno", "--enable-auto-uploading"]) ["-b", "uno", "--enable-auto-uploading"])
validate_cliresult(result) validate_cliresult(result)
validate_pioproject(getcwd()) validate_pioproject(getcwd())
config = util.load_project_config() config = util.load_project_config()
expected_result = [ expected_result = [
("platform", "atmelavr"), ("platform", "atmelavr"), ("framework", "arduino"),
("framework", "arduino"), ("board", "uno"), ("targets", "upload")
("board", "uno"),
("targets", "upload")
] ]
assert config.has_section("env:uno") assert config.has_section("env:uno")
assert len(set(expected_result).symmetric_difference( assert len(
set(expected_result).symmetric_difference(
set(config.items("env:uno")))) == 0 set(config.items("env:uno")))) == 0
def test_init_incorrect_board(clirunner): def test_init_incorrect_board(clirunner):
result = clirunner.invoke(cli, ["-b", "missed_board"]) result = clirunner.invoke(cmd_init, ["-b", "missed_board"])
assert result.exit_code == 2 assert result.exit_code == 2
assert 'Error: Invalid value for "-b" / "--board' in result.output assert 'Error: Invalid value for "-b" / "--board' in result.output
assert isinstance(result.exception, SystemExit) assert isinstance(result.exception, SystemExit)

View File

@@ -107,7 +107,7 @@ def test_global_lib_uninstall(clirunner, validate_cliresult,
def test_project_lib_complex(clirunner, validate_cliresult, tmpdir): def test_project_lib_complex(clirunner, validate_cliresult, tmpdir):
with util.cd(str(tmpdir)): with tmpdir.as_cwd():
# init # init
result = clirunner.invoke(cmd_init) result = clirunner.invoke(cmd_init)
validate_cliresult(result) validate_cliresult(result)