Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tools/compile_and_test_for_board: assert resultdir is valid #11516

Merged

Conversation

cladmi
Copy link
Contributor

@cladmi cladmi commented May 13, 2019

Contribution description

Currently giving an absolute result or outside of RIOT application breaks the
result directory evaluation which can lead to deleting the application.

Add an assertion to detect it.

Testing procedure

tox inside the compile_and_test_for_board directory runs without error.

RIOT/dist/tools/compile_and_test_for_board $ tox

test installed: atomicwrites==1.3.0,attrs==19.1.0,more-itertools==7.0.0,pluggy==0.11.0,py==1.8.0,pytest==4.5.0,six==1.12.0,wcwidth==0.1.7
test run-test-pre: PYTHONHASHSEED='3511953664'
test runtests: commands[0] | pytest -v --doctest-modules
================================================================================================================================== test session starts ===================================================================================================================================
platform linux -- Python 3.6.7, pytest-4.5.0, py-1.8.0, pluggy-0.11.0 -- /home/harter/work/git/RIOT/dist/tools/compile_and_test_for_board/.tox/test/bin/python
cachedir: .tox/test/.pytest_cache
rootdir: /home/harter/work/git/RIOT/dist/tools/compile_and_test_for_board
collected 3 items                                                                                                                                                                                                                                                                        

compile_and_test_for_board.py::compile_and_test_for_board.is_in_directory PASSED                                                                                                                                                                                                   [ 33%]
compile_and_test_for_board.py::compile_and_test_for_board.list_from_string PASSED                                                                                                                                                                                                  [ 66%]
tests/test_compile_and_test_for_board.py::test_help_message PASSED                                                                                                                                                                                                                 [100%]

================================================================================================================================ 3 passed in 0.08 seconds ================================================================================================================================
lint installed: astroid==2.2.5,isort==4.3.19,lazy-object-proxy==1.4.1,mccabe==0.6.1,pylint==2.3.1,six==1.12.0,typed-ast==1.3.5,wrapt==1.11.1
lint run-test-pre: PYTHONHASHSEED='3511953664'
lint runtests: commands[0] | pylint compile_and_test_for_board.py tests

--------------------------------------------------------------------
Your code has been rated at 10.00/10 (previous run: 10.00/10, +0.00)

flake8 installed: entrypoints==0.3,flake8==3.7.7,mccabe==0.6.1,pycodestyle==2.5.0,pyflakes==2.1.1
flake8 run-test-pre: PYTHONHASHSEED='3511953664'
flake8 runtests: commands[0] | flake8 compile_and_test_for_board.py tests
________________________________________________________________________________________________________________________________________ summary _________________________________________________________________________________________________________________________________________
  test: commands succeeded
  lint: commands succeeded
  flake8: commands succeeded
  congratulations :)

The error is detected even if the directories do not exist:

./dist/tools/compile_and_test_for_board/compile_and_test_for_board.py . --applications=../relative native

./dist/tools/compile_and_test_for_board/compile_and_test_for_board.py . --applications=../relative native
INFO:native:Saving toolchain
Traceback (most recent call last):
  File "./dist/tools/compile_and_test_for_board/compile_and_test_for_board.py", line 669, in <module>
    main()
  File "./dist/tools/compile_and_test_for_board/compile_and_test_for_board.py", line 646, in main
    for app_dir in app_dirs]
  File "./dist/tools/compile_and_test_for_board/compile_and_test_for_board.py", line 646, in <listcomp>
    for app_dir in app_dirs]
  File "./dist/tools/compile_and_test_for_board/compile_and_test_for_board.py", line 237, in __init__
    "Application result directory is outside main result directory"
AssertionError: Application result directory is outside main result directory

./dist/tools/compile_and_test_for_board/compile_and_test_for_board.py . --applications=/tmp/absolute native

./dist/tools/compile_and_test_for_board/compile_and_test_for_board.py . --applications=/tmp/absolute native
INFO:native:Saving toolchain
Traceback (most recent call last):
  File "./dist/tools/compile_and_test_for_board/compile_and_test_for_board.py", line 669, in <module>
    main()
  File "./dist/tools/compile_and_test_for_board/compile_and_test_for_board.py", line 646, in main
    for app_dir in app_dirs]
  File "./dist/tools/compile_and_test_for_board/compile_and_test_for_board.py", line 646, in <listcomp>
    for app_dir in app_dirs]
  File "./dist/tools/compile_and_test_for_board/compile_and_test_for_board.py", line 237, in __init__
    "Application result directory is outside main result directory"
AssertionError: Application result directory is outside main result directory

Running it with an application outside of RIOT would delete the application as it was deleting the directory content with master.

Issues/PRs references

This was found while working on #10838

Add function testing if a path is inside a directory.
Currently giving an absolute or outside of RIOT application breaks the
result directory evaluation which can lead to deleting the application.

Add an assertion to detect it.
@cladmi cladmi added Type: bug The issue reports a bug / The PR fixes a bug (including spelling errors) Area: tests Area: tests and testing framework Area: tools Area: Supplementary tools labels May 13, 2019
@cladmi cladmi added this to the Release 2019.07 milestone May 13, 2019
@cladmi cladmi requested a review from aabadie May 13, 2019 13:54
@jcarrano jcarrano added the CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR label May 13, 2019
@cladmi cladmi merged commit 568a351 into RIOT-OS:master May 13, 2019
@cladmi
Copy link
Contributor Author

cladmi commented May 13, 2019

Thank for the review.

@cladmi cladmi deleted the pr/compile_and_test_for_board/assert_resultdir branch May 13, 2019 15:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: tests Area: tests and testing framework Area: tools Area: Supplementary tools CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR Type: bug The issue reports a bug / The PR fixes a bug (including spelling errors)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants