Fix wrong line number for INO file when `#warning` directive is used // Resolve #742

This commit is contained in:
Ivan Kravets
2016-08-31 01:03:13 +03:00
parent a94aa898a6
commit c33a745862
8 changed files with 32 additions and 41 deletions

View File

@ -78,8 +78,12 @@ PlatformIO 3.0
(`issue #522 <https://github.com/platformio/platformio/issues/522>`_) (`issue #522 <https://github.com/platformio/platformio/issues/522>`_)
* Warn about unknown options in project configuration file ``platformio.ini`` * Warn about unknown options in project configuration file ``platformio.ini``
(`issue #740 <https://github.com/platformio/platformio/issues/740>`_) (`issue #740 <https://github.com/platformio/platformio/issues/740>`_)
* Fixed wrong line number for INO file when ``#warning`` directive is used
(`issue #742 <https://github.com/platformio/platformio/issues/742>`_)
* Stopped supporting Python 2.6 * Stopped supporting Python 2.6
------
* Development platform `Atmel SAM <https://github.com/platformio/platform-atmelsam>`__ * Development platform `Atmel SAM <https://github.com/platformio/platform-atmelsam>`__
+ Fixed missing analog ports for Adafruit Feather M0 Bluefruit + Fixed missing analog ports for Adafruit Feather M0 Bluefruit

View File

@ -18,7 +18,7 @@ from platformio.commands.boards import cli as cmd_boards
from platformio.commands.platform import platform_search as cmd_platform_search 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"]) result = clirunner.invoke(cmd_boards, ["mbed", "--json-output"])
validate_cliresult(result) validate_cliresult(result)
boards = json.loads(result.output) 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]) 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"]) result = clirunner.invoke(cmd_boards, ["energia"])
validate_cliresult(result) validate_cliresult(result)
assert "titiva" in result.output assert "titiva" in result.output
def test_board_options(platformio_setup, clirunner, validate_cliresult): def test_board_options(clirunner, validate_cliresult):
required_opts = set( required_opts = set(
["fcpu", "frameworks", "id", "mcu", "name", "platform"]) ["fcpu", "frameworks", "id", "mcu", "name", "platform"])

View File

@ -15,7 +15,7 @@
from platformio.commands.update import cli as cmd_update from platformio.commands.update import cli as cmd_update
def test_update(platformio_setup, clirunner, validate_cliresult): def test_update(clirunner, validate_cliresult):
matches = ( matches = (
"Platform Manager", "Platform Manager",
"Up-to-date", "Up-to-date",

View File

@ -21,21 +21,6 @@ from click.testing import CliRunner
requests.packages.urllib3.disable_warnings() 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") @pytest.fixture(scope="module")
def clirunner(): def clirunner():
return CliRunner() return CliRunner()

View File

@ -1,4 +1,3 @@
struct MyItem { struct MyItem {
byte foo[50]; byte foo[50];
int bar; int bar;
@ -7,8 +6,12 @@ struct MyItem {
void setup() { void setup() {
struct MyItem item1; struct MyItem item1;
myFunction(&item1); myFunction(&item1);
} }
#warning "Line number is 13"
void loop() { void loop() {
} }

View File

@ -1,4 +1,3 @@
void setup() { void setup() {
barFunc(); barFunc();
fooFunc(); fooFunc();

View File

@ -19,6 +19,7 @@ from os.path import dirname, getsize, isdir, isfile, join, normpath
import pytest import pytest
from platformio import util from platformio import util
from platformio.commands.run import cli as cmd_run
def pytest_generate_tests(metafunc): def pytest_generate_tests(metafunc):
@ -34,16 +35,12 @@ def pytest_generate_tests(metafunc):
metafunc.parametrize("pioproject_dir", project_dirs) metafunc.parametrize("pioproject_dir", project_dirs)
@pytest.mark.examples def test_run(clirunner, validate_cliresult, pioproject_dir):
def test_run(platformio_setup, pioproject_dir):
if isdir(join(pioproject_dir, ".pioenvs")): if isdir(join(pioproject_dir, ".pioenvs")):
util.rmtree_(join(pioproject_dir, ".pioenvs")) util.rmtree_(join(pioproject_dir, ".pioenvs"))
result = util.exec_command( result = clirunner.invoke(cmd_run, ["-d", pioproject_dir])
["platformio", "--force", "run", "--project-dir", pioproject_dir] validate_cliresult(result)
)
if result['returncode'] != 0:
pytest.fail(result)
# check .elf file # check .elf file
pioenvs_dir = join(pioproject_dir, ".pioenvs") pioenvs_dir = join(pioproject_dir, ".pioenvs")

View File

@ -15,27 +15,30 @@
from os import listdir from os import listdir
from os.path import dirname, isdir, join, normpath 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): def pytest_generate_tests(metafunc):
if "piotest_dir" not in metafunc.fixturenames: if "piotest_dir" not in metafunc.fixturenames:
return return
test_dir = normpath(join(dirname(__file__), "ino2cpp"))
test_dirs = [] test_dirs = []
for name in listdir(test_dir): for name in listdir(INOTEST_DIR):
if isdir(join(test_dir, name)): if isdir(join(INOTEST_DIR, name)):
test_dirs.append(join(test_dir, name)) test_dirs.append(join(INOTEST_DIR, name))
test_dirs.sort() test_dirs.sort()
metafunc.parametrize("piotest_dir", test_dirs) metafunc.parametrize("piotest_dir", test_dirs)
@pytest.mark.examples def test_example(clirunner, validate_cliresult, piotest_dir):
def test_ci(platformio_setup, piotest_dir): result = clirunner.invoke(cmd_ci, [piotest_dir, "-b", "uno"])
result = util.exec_command( validate_cliresult(result)
["platformio", "--force", "ci", piotest_dir, "-b", "uno"]
)
if result['returncode'] != 0: def test_warning_line(clirunner, validate_cliresult):
pytest.fail(result) 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)