# Copyright (C) Ivan Kravets # See LICENSE for details. from os import makedirs, getcwd from os.path import getsize, isdir, isfile, join from platformio.commands.init import cli from platformio import exception, util def validate_pioproject(pioproject_dir): pioconf_path = join(pioproject_dir, "platformio.ini") assert isfile(pioconf_path) and getsize(pioconf_path) > 0 assert isdir(join(pioproject_dir, "src")) and isdir( join(pioproject_dir, "lib")) def test_init_default(platformio_setup, clirunner, validate_cliresult): with clirunner.isolated_filesystem(): result = clirunner.invoke(cli) validate_cliresult(result) validate_pioproject(getcwd()) def test_init_ext_folder(platformio_setup, clirunner, validate_cliresult): with clirunner.isolated_filesystem(): ext_folder_name = "ext_folder" makedirs(ext_folder_name) result = clirunner.invoke(cli, ["-d", ext_folder_name]) validate_cliresult(result) validate_pioproject(join(getcwd(), ext_folder_name)) def test_init_special_board(platformio_setup, clirunner, validate_cliresult): with clirunner.isolated_filesystem(): result = clirunner.invoke(cli, ["-b", "uno"]) validate_cliresult(result) validate_pioproject(getcwd()) uno = util.get_boards("uno") config = util.get_project_config() expected_result = [ ("platform", str(uno['platform'])), ("framework", str(uno['frameworks'][0])), ("board", "uno"), ("targets", "upload") ] assert config.has_section("env:autogen_uno") assert len(set(expected_result).symmetric_difference( set(config.items("env:autogen_uno")))) == 0 def test_init_disable_auto_uploading(platformio_setup, clirunner, validate_cliresult): with clirunner.isolated_filesystem(): result = clirunner.invoke(cli, ["-b", "uno", "--disable-auto-uploading"]) validate_cliresult(result) validate_pioproject(getcwd()) config = util.get_project_config() expected_result = [ ("platform", "atmelavr"), ("framework", "arduino"), ("board", "uno") ] assert config.has_section("env:autogen_uno") assert len(set(expected_result).symmetric_difference( set(config.items("env:autogen_uno")))) == 0 def test_init_incorrect_board(clirunner): result = clirunner.invoke(cli, ["-b", "missed_board"]) assert isinstance(result.exception, exception.UnknownBoard)