From 06ced255e7beb755a94710a53e888c8557453440 Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Wed, 7 Nov 2018 16:09:07 +1100 Subject: testsuite: Add python verison support to rtems-test-check.py Closes #3579 --- testsuites/aclocal/rtems-test-check.m4 | 2 +- testsuites/rtems-test-check | 57 ++++++++++++++++++++++++++++++++++ testsuites/rtems-test-check.py | 47 ++++++++++++++++++++++------ 3 files changed, 95 insertions(+), 11 deletions(-) create mode 100755 testsuites/rtems-test-check diff --git a/testsuites/aclocal/rtems-test-check.m4 b/testsuites/aclocal/rtems-test-check.m4 index a46c4abb20..36a917b3e8 100644 --- a/testsuites/aclocal/rtems-test-check.m4 +++ b/testsuites/aclocal/rtems-test-check.m4 @@ -5,7 +5,7 @@ AC_DEFUN([RTEMS_TEST_CHECK], [AC_REQUIRE([RTEMS_ENV_RTEMSBSP]) AC_REQUIRE([RTEMS_SOURCE_TOP]) 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" tincludes="${RTEMS_SOURCE_ROOT}/bsps/${RTEMS_CPU}/${RTEMS_BSP_FAMILY}/config:${RTEMS_SOURCE_ROOT}/testsuites" if test -f $tcheck; then diff --git a/testsuites/rtems-test-check b/testsuites/rtems-test-check new file mode 100755 index 0000000000..e7fd08dde5 --- /dev/null +++ b/testsuites/rtems-test-check @@ -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 diff --git a/testsuites/rtems-test-check.py b/testsuites/rtems-test-check.py index 847aab05ae..0a4970a4ab 100755 --- a/testsuites/rtems-test-check.py +++ b/testsuites/rtems-test-check.py @@ -1,7 +1,32 @@ #! /usr/bin/env python # -# Copyright 2017 Chris Johns -# All rights reserved +# 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. +# # # @@ -9,6 +34,7 @@ # from __future__ import print_function + import os.path import sys @@ -28,7 +54,8 @@ def find_testdata(paths, name): # # Arguments. Keep it simple. # -if len(sys.argv) < 4: +sys_args = sys.argv[1:] +if len(sys_args) < 4: eprint('error: invalid command line') print('INVALID-TEST-DATA') sys.exit(2) @@ -36,18 +63,18 @@ if len(sys.argv) < 4: verbose = False args = 0 -if sys.argv[1] == '-v': +if sys_args[1] == '-v': verbose = True args = 1 -mode = sys.argv[args + 1] -bsp = sys.argv[args + 2] -includepaths = sys.argv[args + 4].split(':') -testconfig = [find_testdata(includepaths, sys.argv[args + 3])] -tests = sys.argv[args + 5:] +mode = sys_args[args + 1] +bsp = sys_args[args + 2] +includepaths = sys_args[args + 4].split(':') +testconfig = [find_testdata(includepaths, sys_args[args + 3])] +tests = sys_args[args + 5:] if verbose: - eprint('cmd: %s' % (' '.join(sys.argv))) + eprint('cmd: %s' % (' '.join(sys_args))) # # Handle the modes. -- cgit v1.2.3