Skip to content

Commit

Permalink
test/py: Rework test.py to be a different kind of wrapper
Browse files Browse the repository at this point in the history
Now that we have moved to being based on pytest for python3 we need to
make our test.py wrapper more robust in terms of only calling python3
rather than possibly finding and using python2.  To do this, change from
execvp()'ing pytest to invoking the package itself via python.  In the
event that pytest is unavailable we still get a user-friendly error:

pkg_resources.DistributionNotFound: The 'pytest' distribution was not found and is required by the application

Reviewed-by: Simon Glass <[email protected]>
Tested-by: Stephen Warren <[email protected]>
Tested-by: Simon Glass <[email protected]> [on sandbox]
Signed-off-by: Tom Rini <[email protected]>
  • Loading branch information
trini committed Oct 30, 2019
1 parent d2b5240 commit 8add4fa
Showing 1 changed file with 4 additions and 16 deletions.
20 changes: 4 additions & 16 deletions test/py/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,11 @@
import os
import os.path
import sys

# Get rid of argv[0]
sys.argv.pop(0)
from pkg_resources import load_entry_point

# argv; py.test test_directory_name user-supplied-arguments
args = ['py.test', os.path.dirname(__file__) + '/tests']
args = [os.path.dirname(__file__) + '/tests']
args.extend(sys.argv)

try:
os.execvp('py.test', args)
except:
# Log full details of any exception for detailed analysis
import traceback
traceback.print_exc()
# Hint to the user that they likely simply haven't installed the required
# dependencies.
print('''
exec(py.test) failed; perhaps you are missing some dependencies?
See test/py/README.md for the list.''', file=sys.stderr)
sys.exit(1)
if __name__ == '__main__':
sys.exit(load_entry_point('pytest', 'console_scripts', 'pytest')(args))

0 comments on commit 8add4fa

Please sign in to comment.