testsuite: Add python verison support to rtems-test-check.py

Closes #3579
This commit is contained in:
Chris Johns
2018-11-07 16:09:07 +11:00
parent 947b679f74
commit 06ced255e7
3 changed files with 95 additions and 11 deletions

View File

@@ -5,7 +5,7 @@ AC_DEFUN([RTEMS_TEST_CHECK],
[AC_REQUIRE([RTEMS_ENV_RTEMSBSP]) [AC_REQUIRE([RTEMS_ENV_RTEMSBSP])
AC_REQUIRE([RTEMS_SOURCE_TOP]) AC_REQUIRE([RTEMS_SOURCE_TOP])
AC_MSG_CHECKING([${RTEMS_CPU}/${RTEMS_BSP} $1 test]) AC_MSG_CHECKING([${RTEMS_CPU}/${RTEMS_BSP} $1 test])
tcheck="${RTEMS_SOURCE_ROOT}/testsuites/rtems-test-check.py" tcheck="${RTEMS_SOURCE_ROOT}/testsuites/rtems-test-check"
tdata="${RTEMS_BSP}-testsuite.tcfg" tdata="${RTEMS_BSP}-testsuite.tcfg"
tincludes="${RTEMS_SOURCE_ROOT}/bsps/${RTEMS_CPU}/${RTEMS_BSP_FAMILY}/config:${RTEMS_SOURCE_ROOT}/testsuites" tincludes="${RTEMS_SOURCE_ROOT}/bsps/${RTEMS_CPU}/${RTEMS_BSP_FAMILY}/config:${RTEMS_SOURCE_ROOT}/testsuites"
if test -f $tcheck; then if test -f $tcheck; then

57
testsuites/rtems-test-check Executable file
View File

@@ -0,0 +1,57 @@
#! /bin/sh
#
# RTEMS Tools Project (http://www.rtems.org/)
# Copyright 2018 Chris Johns (chrisj@rtems.org)
# All rights reserved.
#
# This file is part of the RTEMS Tools package in 'rtems-tools'.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
#
# This script wraps python finding a suitable version to use.
#
base=$(dirname $0)
PYTHON_CMD=${base}/rtems-test-check.py
set -e
if test ! -f $PYTHON_CMD; then
echo "error: RTEMS Testsuite python command not found: $PYTHON_CMD"
exit 5
fi
for py in python2 python3 python
do
set +e
py_cmd=$(command -v $py)
set -e
if test -n "$RTEMS_PYTHON_OVERRIDE"; then
if test "$RTEMS_PYTHON_OVERRIDE" != "$py"; then
py_cmd=""
fi
fi
if test -n "$py_cmd"; then
exec $py_cmd $PYTHON_CMD $0 $*
fi
done
echo "error: RTEMS Testsuite no valid python found"
exit 5

View File

@@ -1,7 +1,32 @@
#! /usr/bin/env python #! /usr/bin/env python
# #
# Copyright 2017 Chris Johns <chrisj@rtems.org> # Copyright 2018 Chris Johns (chrisj@rtems.org)
# All rights reserved # All rights reserved.
#
# This file is part of the RTEMS Tools package in 'rtems-tools'.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# #
# #
@@ -9,6 +34,7 @@
# #
from __future__ import print_function from __future__ import print_function
import os.path import os.path
import sys import sys
@@ -28,7 +54,8 @@ def find_testdata(paths, name):
# #
# Arguments. Keep it simple. # Arguments. Keep it simple.
# #
if len(sys.argv) < 4: sys_args = sys.argv[1:]
if len(sys_args) < 4:
eprint('error: invalid command line') eprint('error: invalid command line')
print('INVALID-TEST-DATA') print('INVALID-TEST-DATA')
sys.exit(2) sys.exit(2)
@@ -36,18 +63,18 @@ if len(sys.argv) < 4:
verbose = False verbose = False
args = 0 args = 0
if sys.argv[1] == '-v': if sys_args[1] == '-v':
verbose = True verbose = True
args = 1 args = 1
mode = sys.argv[args + 1] mode = sys_args[args + 1]
bsp = sys.argv[args + 2] bsp = sys_args[args + 2]
includepaths = sys.argv[args + 4].split(':') includepaths = sys_args[args + 4].split(':')
testconfig = [find_testdata(includepaths, sys.argv[args + 3])] testconfig = [find_testdata(includepaths, sys_args[args + 3])]
tests = sys.argv[args + 5:] tests = sys_args[args + 5:]
if verbose: if verbose:
eprint('cmd: %s' % (' '.join(sys.argv))) eprint('cmd: %s' % (' '.join(sys_args)))
# #
# Handle the modes. # Handle the modes.