From c33a745862f760fbb596019db2341ff7d7a2f1de Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 31 Aug 2016 01:03:13 +0300 Subject: [PATCH] Fix wrong line number for INO file when ``#warning`` directive is used // Resolve #742 --- HISTORY.rst | 4 ++++ tests/commands/test_boards.py | 6 +++--- tests/commands/test_update.py | 2 +- tests/conftest.py | 15 --------------- tests/ino2cpp/basic/basic.ino | 5 ++++- tests/ino2cpp/multifiles/foo.pde | 1 - tests/test_examples.py | 11 ++++------- tests/test_ino2cpp.py | 29 ++++++++++++++++------------- 8 files changed, 32 insertions(+), 41 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 901c1ba9..2fc14056 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -78,8 +78,12 @@ PlatformIO 3.0 (`issue #522 `_) * Warn about unknown options in project configuration file ``platformio.ini`` (`issue #740 `_) +* Fixed wrong line number for INO file when ``#warning`` directive is used + (`issue #742 `_) * Stopped supporting Python 2.6 +------ + * Development platform `Atmel SAM `__ + Fixed missing analog ports for Adafruit Feather M0 Bluefruit diff --git a/tests/commands/test_boards.py b/tests/commands/test_boards.py index 71f4ebd8..6b216146 100644 --- a/tests/commands/test_boards.py +++ b/tests/commands/test_boards.py @@ -18,7 +18,7 @@ from platformio.commands.boards import cli as cmd_boards from platformio.commands.platform import platform_search as cmd_platform_search -def test_board_json_output(platformio_setup, clirunner, validate_cliresult): +def test_board_json_output(clirunner, validate_cliresult): result = clirunner.invoke(cmd_boards, ["mbed", "--json-output"]) validate_cliresult(result) boards = json.loads(result.output) @@ -26,13 +26,13 @@ def test_board_json_output(platformio_setup, clirunner, validate_cliresult): 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(clirunner, validate_cliresult): result = clirunner.invoke(cmd_boards, ["energia"]) validate_cliresult(result) assert "titiva" in result.output -def test_board_options(platformio_setup, clirunner, validate_cliresult): +def test_board_options(clirunner, validate_cliresult): required_opts = set( ["fcpu", "frameworks", "id", "mcu", "name", "platform"]) diff --git a/tests/commands/test_update.py b/tests/commands/test_update.py index 27eb8c9d..f17f5bbd 100644 --- a/tests/commands/test_update.py +++ b/tests/commands/test_update.py @@ -15,7 +15,7 @@ from platformio.commands.update import cli as cmd_update -def test_update(platformio_setup, clirunner, validate_cliresult): +def test_update(clirunner, validate_cliresult): matches = ( "Platform Manager", "Up-to-date", diff --git a/tests/conftest.py b/tests/conftest.py index f5277a3e..9af9b6f7 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -21,21 +21,6 @@ from click.testing import CliRunner requests.packages.urllib3.disable_warnings() -@pytest.fixture(scope="session") -def platformio_setup(request): - pioenvvars = ("ENABLE_TELEMETRY", ) - for v in pioenvvars: - os.environ["PLATFORMIO_SETTING_%s" % v] = "No" - - def platformio_teardown(): - for v in pioenvvars: - _name = "PLATFORMIO_SETTING_%s" % v - if _name in os.environ: - del os.environ[_name] - - request.addfinalizer(platformio_teardown) - - @pytest.fixture(scope="module") def clirunner(): return CliRunner() diff --git a/tests/ino2cpp/basic/basic.ino b/tests/ino2cpp/basic/basic.ino index 47b48694..461399de 100644 --- a/tests/ino2cpp/basic/basic.ino +++ b/tests/ino2cpp/basic/basic.ino @@ -1,4 +1,3 @@ - struct MyItem { byte foo[50]; int bar; @@ -7,8 +6,12 @@ struct MyItem { void setup() { struct MyItem item1; myFunction(&item1); + + } +#warning "Line number is 13" + void loop() { } diff --git a/tests/ino2cpp/multifiles/foo.pde b/tests/ino2cpp/multifiles/foo.pde index 4abeeffc..991bacbd 100644 --- a/tests/ino2cpp/multifiles/foo.pde +++ b/tests/ino2cpp/multifiles/foo.pde @@ -1,4 +1,3 @@ - void setup() { barFunc(); fooFunc(); diff --git a/tests/test_examples.py b/tests/test_examples.py index bfe428d9..75278d9c 100644 --- a/tests/test_examples.py +++ b/tests/test_examples.py @@ -19,6 +19,7 @@ from os.path import dirname, getsize, isdir, isfile, join, normpath import pytest from platformio import util +from platformio.commands.run import cli as cmd_run def pytest_generate_tests(metafunc): @@ -34,16 +35,12 @@ def pytest_generate_tests(metafunc): metafunc.parametrize("pioproject_dir", project_dirs) -@pytest.mark.examples -def test_run(platformio_setup, pioproject_dir): +def test_run(clirunner, validate_cliresult, pioproject_dir): if isdir(join(pioproject_dir, ".pioenvs")): util.rmtree_(join(pioproject_dir, ".pioenvs")) - result = util.exec_command( - ["platformio", "--force", "run", "--project-dir", pioproject_dir] - ) - if result['returncode'] != 0: - pytest.fail(result) + result = clirunner.invoke(cmd_run, ["-d", pioproject_dir]) + validate_cliresult(result) # check .elf file pioenvs_dir = join(pioproject_dir, ".pioenvs") diff --git a/tests/test_ino2cpp.py b/tests/test_ino2cpp.py index 0a6efc77..12fde08a 100644 --- a/tests/test_ino2cpp.py +++ b/tests/test_ino2cpp.py @@ -15,27 +15,30 @@ from os import listdir from os.path import dirname, isdir, join, normpath -import pytest +from platformio.commands.ci import cli as cmd_ci -from platformio import util +INOTEST_DIR = normpath(join(dirname(__file__), "ino2cpp")) def pytest_generate_tests(metafunc): if "piotest_dir" not in metafunc.fixturenames: return - test_dir = normpath(join(dirname(__file__), "ino2cpp")) test_dirs = [] - for name in listdir(test_dir): - if isdir(join(test_dir, name)): - test_dirs.append(join(test_dir, name)) + for name in listdir(INOTEST_DIR): + if isdir(join(INOTEST_DIR, name)): + test_dirs.append(join(INOTEST_DIR, name)) test_dirs.sort() metafunc.parametrize("piotest_dir", test_dirs) -@pytest.mark.examples -def test_ci(platformio_setup, piotest_dir): - result = util.exec_command( - ["platformio", "--force", "ci", piotest_dir, "-b", "uno"] - ) - if result['returncode'] != 0: - pytest.fail(result) +def test_example(clirunner, validate_cliresult, piotest_dir): + result = clirunner.invoke(cmd_ci, [piotest_dir, "-b", "uno"]) + validate_cliresult(result) + + +def test_warning_line(clirunner, validate_cliresult): + result = clirunner.invoke(cmd_ci, + [join(INOTEST_DIR, "basic"), "-b", "uno"]) + validate_cliresult(result) + assert ('basic.ino:13:2: warning: #warning "Line number is 13"' in + result.output)