From patchwork Mon Feb 6 10:25:19 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joonas Lahtinen X-Patchwork-Id: 9557459 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id B25CA6021C for ; Mon, 6 Feb 2017 10:25:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A7EBC269A3 for ; Mon, 6 Feb 2017 10:25:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9CA5E27F90; Mon, 6 Feb 2017 10:25:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 93AA5269A3 for ; Mon, 6 Feb 2017 10:25:27 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 379EE6E3AC; Mon, 6 Feb 2017 10:25:27 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id A50546E3AC for ; Mon, 6 Feb 2017 10:25:25 +0000 (UTC) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga105.fm.intel.com with ESMTP; 06 Feb 2017 02:25:25 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,341,1477983600"; d="scan'208";a="55792901" Received: from jlahtine-desk.ger.corp.intel.com ([10.252.15.208]) by orsmga004.jf.intel.com with ESMTP; 06 Feb 2017 02:25:23 -0800 From: Joonas Lahtinen To: Intel graphics driver community testing & development Date: Mon, 6 Feb 2017 12:25:19 +0200 Message-Id: <1486376719-6668-1-git-send-email-joonas.lahtinen@linux.intel.com> X-Mailer: git-send-email 2.7.4 Cc: Jani Nikula , Daniel Vetter Subject: [Intel-gfx] [PATCH i-g-t v2] tests: Clean up shell scripts X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Virus-Scanned: ClamAV using ClamSMTP Convert all scripts to use /bin/sh shebang and fix all shellcheck reported problems. v2: Include tests/Makefile.sources (Petri) Signed-off-by: Joonas Lahtinen Cc: Petri Latvala Cc: Daniel Vetter Cc: Jani Nikula Reviewed-by: Petri Latvala --- tests/Makefile.sources | 1 - tests/check_drm_clients | 15 +++++++++---- tests/ddx_intel_after_fbdev | 42 ++++++++++++++++++------------------- tests/debugfs_emon_crash | 16 +++++++++----- tests/debugfs_wedged | 18 ++++++++++------ tests/drm_getopt.sh | 20 ++++++++++-------- tests/drm_lib.sh | 51 +++++++++++++++++++++++---------------------- tests/drv_debugfs_reader | 17 ++++++++++----- tests/igt_command_line.sh | 26 +++++++++++------------ tests/sysfs_l3_parity | 30 ++++++++++++++++---------- tests/test_rte_check | 6 ------ tests/tools_test | 17 +++++++++------ 12 files changed, 147 insertions(+), 112 deletions(-) delete mode 100755 tests/test_rte_check diff --git a/tests/Makefile.sources b/tests/Makefile.sources index 6e07d93..dcc80c5 100644 --- a/tests/Makefile.sources +++ b/tests/Makefile.sources @@ -242,7 +242,6 @@ TESTS_scripts = \ debugfs_emon_crash \ drv_debugfs_reader \ sysfs_l3_parity \ - test_rte_check \ tools_test \ $(NULL) diff --git a/tests/check_drm_clients b/tests/check_drm_clients index 2a891b8..25c03b1 100755 --- a/tests/check_drm_clients +++ b/tests/check_drm_clients @@ -1,6 +1,13 @@ -#!/bin/bash +#!/bin/sh -SOURCE_DIR="$( dirname "${BASH_SOURCE[0]}" )" -. $SOURCE_DIR/drm_lib.sh +if [ -n "$BASH_SOURCE" ]; then + THIS_SCRIPT=$BASH_SOURCE +else + THIS_SCRIPT=$0 +fi + +SOURCE_DIR=$(dirname "$THIS_SCRIPT") +. "$SOURCE_DIR/drm_lib.sh" + +exit "$IGT_EXIT_SUCCESS" -exit $IGT_EXIT_SUCCESS diff --git a/tests/ddx_intel_after_fbdev b/tests/ddx_intel_after_fbdev index f068209..2ca5ce0 100755 --- a/tests/ddx_intel_after_fbdev +++ b/tests/ddx_intel_after_fbdev @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # # Testcase: Load Intel DDX after fbdev was loaded # @@ -9,7 +9,7 @@ whoami | grep -q root || { } # no other X session should be running -find /tmp/ -name .X*lock 2>/dev/null | grep -q X && { +find /tmp/ -name ".X*lock" 2>/dev/null | grep -q X && { echo "ERROR: X session already running" exit 1 } @@ -19,14 +19,14 @@ TMPDIR=$(mktemp -d /tmp/igt.XXXX) || { exit 1 } -cat > $TMPDIR/xorg.conf.fbdev << EOF +cat > "$TMPDIR/xorg.conf.fbdev" << EOF Section "Device" Driver "fbdev" Identifier "Device[fbdev]" EndSection EOF -cat > $TMPDIR/xorg.conf.intel << EOF +cat > "$TMPDIR/xorg.conf.intel" << EOF Section "Device" Driver "intel" Identifier "Device[intel]" @@ -34,40 +34,40 @@ EndSection EOF # log before fbdev -dmesg -c > $TMPDIR/dmesg.1.before.fbdev -cp /var/log/Xorg.0.log $TMPDIR/Xorg.0.log.1.before.fbdev +dmesg -c > "$TMPDIR/dmesg.1.before.fbdev" +cp /var/log/Xorg.0.log "$TMPDIR/Xorg.0.log.1.before.fbdev" # run fbdev -xinit -- /usr/bin/X -config $TMPDIR/xorg.conf.fbdev & +xinit -- /usr/bin/X -config "$TMPDIR/xorg.conf.fbdev" & sleep 5 -if [ -f `which intel_reg` ]; then -`which intel_reg` dump > $TMPDIR/intel_reg_dump.1.fbdev +if [ -f "$(which intel_reg)" ]; then + intel_reg dump > "$TMPDIR/intel_reg_dump.1.fbdev" fi killall X # log after fbdev & before intel -dmesg -c > $TMPDIR/dmesg.2.after.fbdev.before.intel -cp /var/log/Xorg.0.log $TMPDIR/Xorg.0.log.2.after.fbdev.before.intel +dmesg -c > "$TMPDIR/dmesg.2.after.fbdev.before.intel" +cp /var/log/Xorg.0.log "$TMPDIR/Xorg.0.log.2.after.fbdev.before.intel" sleep 5 # run intel -xinit -- /usr/bin/X -config $TMPDIR/xorg.conf.intel & -sleep 5 -if [ -f `which intel_reg` ]; then -`which intel_reg` dump > $TMPDIR/intel_reg_dump.2.intel +xinit -- /usr/bin/X -config "$TMPDIR/xorg.conf.intel" & +sleep 5 +if [ -f "$(which intel_reg)" ]; then + intel_reg dump > "$TMPDIR/intel_reg_dump.2.intel" fi killall X # log after intel -dmesg -c > $TMPDIR/dmesg.3.after.intel -cp /var/log/Xorg.0.log $TMPDIR/Xorg.0.log.3.after.intel +dmesg -c > "$TMPDIR/dmesg.3.after.intel" +cp /var/log/Xorg.0.log "$TMPDIR/Xorg.0.log.3.after.intel" -cp $0 $TMPDIR/ +cp "$0" "$TMPDIR/" -tar czf $TMPDIR.tar.gz $TMPDIR/* -if [ -f $TMPDIR.tar.gz ]; then - echo $TMPDIR.tar.gz contains this script, all configs and logs generated on this tests +tar czf "$TMPDIR.tar.gz" "$TMPDIR/" +if [ -f "$TMPDIR.tar.gz" ]; then + echo "'$TMPDIR.tar.gz' contains this script, all configs and logs generated on this tests" fi exit 0 diff --git a/tests/debugfs_emon_crash b/tests/debugfs_emon_crash index 1dbfcb2..11b1c44 100755 --- a/tests/debugfs_emon_crash +++ b/tests/debugfs_emon_crash @@ -1,16 +1,22 @@ -#!/bin/bash +#!/bin/sh # # This check if we can crash the kernel with segmentation-fault # by reading /sys/kernel/debug/dri/0/i915_emon_status too quickly # -SOURCE_DIR="$( dirname "${BASH_SOURCE[0]}" )" -. $SOURCE_DIR/drm_lib.sh +if [ -n "$BASH_SOURCE" ]; then + THIS_SCRIPT=$BASH_SOURCE +else + THIS_SCRIPT=$0 +fi + +SOURCE_DIR=$(dirname "$THIS_SCRIPT") +. "$SOURCE_DIR/drm_lib.sh" for z in $(seq 1 1000); do - cat $i915_dfs_path/i915_emon_status > /dev/null 2&>1 + cat "$i915_dfs_path/i915_emon_status" > /dev/null 2>&1 done # If we got here, we haven't crashed +exit "$IGT_EXIT_SUCCESS" -exit $IGT_EXIT_SUCCESS diff --git a/tests/debugfs_wedged b/tests/debugfs_wedged index f15ac46..26b40de 100755 --- a/tests/debugfs_wedged +++ b/tests/debugfs_wedged @@ -1,10 +1,16 @@ -#!/bin/bash +#!/bin/sh -SOURCE_DIR="$( dirname "${BASH_SOURCE[0]}" )" -. $SOURCE_DIR/drm_lib.sh +if [ -n "$BASH_SOURCE" ]; then + THIS_SCRIPT=$BASH_SOURCE +else + THIS_SCRIPT=$0 +fi + +SOURCE_DIR=$(dirname "$THIS_SCRIPT") +. "$SOURCE_DIR/drm_lib.sh" # Testcase: wedge the hw to check the error_state reading -# +# # Unfortunately wedged is permanent, so this test is not run by default -echo 1 > ${i915_dfs_path}/i915_wedged -cat $i915_dfs_path/i915_error_state > /dev/null 2>&1 +echo 1 > "${i915_dfs_path}/i915_wedged" +cat "$i915_dfs_path/i915_error_state" > /dev/null 2>&1 diff --git a/tests/drm_getopt.sh b/tests/drm_getopt.sh index a94a759..10f367c 100755 --- a/tests/drm_getopt.sh +++ b/tests/drm_getopt.sh @@ -1,3 +1,4 @@ +#!/bin/sh # This is required for check/distcheck target as it has to --list-subtests # for each test. Source it if you add a new test in form of a (shell) script. @@ -9,30 +10,31 @@ IGT_EXIT_SUCCESS=0 IGT_EXIT_INVALID=79 IGT_EXIT_FAILURE=99 -# hacked-up long option parsing -for arg in $@ ; do - case $arg in +PROG=$(basename "$THIS_SCRIPT") + +for arg do + case "$arg" in --list-subtests) - exit $IGT_EXIT_INVALID + exit "$IGT_EXIT_INVALID" ;; --run-subtest) - exit $IGT_EXIT_INVALID + exit "$IGT_EXIT_INVALID" ;; --debug) IGT_LOG_LEVEL=debug ;; --help-description) - echo $IGT_TEST_DESCRIPTION - exit $IGT_EXIT_SUCCESS + echo "$IGT_TEST_DESCRIPTION" + exit "$IGT_EXIT_SUCCESS" ;; --help) - echo "Usage: `basename $0` [OPTIONS]" + echo "Usage: $PROG [OPTIONS]" echo " --list-subtests" echo " --run-subtest " echo " --debug" echo " --help-description" echo " --help" - exit $IGT_EXIT_SUCCESS + exit "$IGT_EXIT_SUCCESS" ;; esac done diff --git a/tests/drm_lib.sh b/tests/drm_lib.sh index af104ad..2aa073d 100755 --- a/tests/drm_lib.sh +++ b/tests/drm_lib.sh @@ -1,23 +1,22 @@ -#!/bin/bash +#!/bin/sh -SOURCE_DIR="$( dirname "${BASH_SOURCE[0]}" )" -. $SOURCE_DIR/drm_getopt.sh +. "$SOURCE_DIR/drm_getopt.sh" -NAME=$(basename "$0") +NAME=$(basename "$THIS_SCRIPT") dynamic_debug= hda_dynamic_debug_enable() { if [ -e "$dynamic_debug" ]; then - echo -n "module snd_hda_intel +pf" > $dynamic_debug - echo -n "module snd_hda_core +pf" > $dynamic_debug + echo "module snd_hda_intel +pf" > "$dynamic_debug" + echo "module snd_hda_core +pf" > "$dynamic_debug" fi } hda_dynamic_debug_disable() { if [ -e "$dynamic_debug" ]; then - echo -n "module snd_hda_core =_" > $dynamic_debug - echo -n "module snd_hda_intel =_" > $dynamic_debug + echo "module snd_hda_core =_" > "$dynamic_debug" + echo "module snd_hda_intel =_" > "$dynamic_debug" fi } @@ -31,7 +30,9 @@ KERN_INFO="<6>" KERN_DEBUG="<7>" kmsg() { - echo "$@" > /dev/kmsg + if [ -w "/dev/kmsg" ]; then + echo "$@" > /dev/kmsg + fi } finish() { @@ -46,16 +47,16 @@ kmsg "${KERN_INFO}[IGT] $NAME: executing" skip() { echo "$@" - exit $IGT_EXIT_SKIP + exit "$IGT_EXIT_SKIP" } die() { echo "$@" - exit $IGT_EXIT_FAILURE + exit "$IGT_EXIT_FAILURE" } do_or_die() { - $@ > /dev/null 2>&1 || (echo "FAIL: $@ ($?)" && exit $IGT_EXIT_FAILURE) + "$@" > /dev/null 2>&1 || ( echo "FAIL: $* ($?)" && exit "$IGT_EXIT_FAILURE" ) } if [ -d /sys/kernel/debug ]; then @@ -66,47 +67,47 @@ else skip "debugfs not found" fi -dynamic_debug=$debugfs_path/dynamic_debug/control +dynamic_debug="$debugfs_path/dynamic_debug/control" if [ ! -e "$dynamic_debug" ]; then echo "WARNING: dynamic debug control not available" fi -if [ ! -d $debugfs_path/dri ]; then +if [ ! -d "$debugfs_path/dri" ]; then skip "dri debugfs not found" fi -i915_dfs_path=x -for minor in `seq 0 16`; do - if [ -f $debugfs_path/dri/$minor/i915_error_state ] ; then - i915_dfs_path=$debugfs_path/dri/$minor +i915_dfs_path= +for minor in $(seq 0 16); do + if [ -f "$debugfs_path/dri/$minor/i915_error_state" ] ; then + i915_dfs_path="$debugfs_path/dri/$minor" break fi done -if [ $i915_dfs_path = "x" ] ; then - skip " i915 debugfs path not found." +if [ -z "$i915_dfs_path" ] ; then + skip "i915 debugfs path not found." fi # read everything we can -if [ `cat $i915_dfs_path/clients | wc -l` -gt "2" ] ; then +if [ "$(wc -l "$i915_dfs_path/clients")" -gt 2 ] ; then [ -n "$DRM_LIB_ALLOW_NO_MASTER" ] || \ die "ERROR: other drm clients running" fi -whoami | grep -q root || ( echo ERROR: not running as root; exit $IGT_EXIT_FAILURE ) +whoami | grep -q root || ( echo "ERROR: not running as root"; exit "$IGT_EXIT_FAILURE" ) i915_sfs_path= if [ -d /sys/class/drm ] ; then sysfs_path=/sys/class/drm - if [ -f $sysfs_path/card$minor/error ] ; then + if [ -f "$sysfs_path/card$minor/error" ] ; then i915_sfs_path="$sysfs_path/card$minor" fi fi # sysfs may not exist as the 'error' is a new interface in 3.11 -function drmtest_skip_on_simulation() +drmtest_skip_on_simulation() { - [ -n "$INTEL_SIMULATION" ] && exit $IGT_EXIT_SKIP + [ -n "$INTEL_SIMULATION" ] && exit "$IGT_EXIT_SKIP" } drmtest_skip_on_simulation diff --git a/tests/drv_debugfs_reader b/tests/drv_debugfs_reader index 6ea4e64..58d02de 100755 --- a/tests/drv_debugfs_reader +++ b/tests/drv_debugfs_reader @@ -1,9 +1,16 @@ -#!/bin/bash +#!/bin/sh -SOURCE_DIR="$( dirname "${BASH_SOURCE[0]}" )" -. $SOURCE_DIR/drm_lib.sh +if [ -n "$BASH_SOURCE" ]; then + THIS_SCRIPT=$BASH_SOURCE +else + THIS_SCRIPT=$0 +fi + +SOURCE_DIR=$(dirname "$THIS_SCRIPT") +. "$SOURCE_DIR/drm_lib.sh" # read everything we can -cat $i915_dfs_path/* > /dev/null 2>&1 +cat "$i915_dfs_path"/* > /dev/null 2>&1 + +exit "$IGT_EXIT_SUCCESS" -exit $IGT_EXIT_SUCCESS diff --git a/tests/igt_command_line.sh b/tests/igt_command_line.sh index a20e44c..bab3a77 100755 --- a/tests/igt_command_line.sh +++ b/tests/igt_command_line.sh @@ -26,11 +26,11 @@ # if [ -z "$top_builddir" ]; then - top_builddir="$(dirname $0)" + top_builddir=$(dirname "$0") fi # allow to run this script from top directory -TESTLIST=`cat $top_builddir/test-list.txt` +TESTLIST=$(cat "$top_builddir/test-list.txt") if [ $? -ne 0 ]; then # distcheck requires this hack TESTLIST=$(cat test-list.txt) @@ -51,7 +51,7 @@ for test in $TESTLIST; do fi # top_builddir is empty for distcheck - test=$top_builddir/$test + test="$top_builddir/$test" # distcheck requires this hack if [ ! -x "$test" ]; then @@ -62,29 +62,29 @@ for test in $TESTLIST; do # check invalid option handling echo " Checking invalid option handling..." - ./$test --invalid-option 2> /dev/null && fail $test + "./$test" --invalid-option 2> /dev/null && fail "$test" # check valid options succeed echo " Checking valid option handling..." - ./$test --help > /dev/null || fail $test + "./$test" --help > /dev/null || fail "$test" # check --list-subtests works correctly echo " Checking subtest enumeration..." - LIST=`./$test --list-subtests` + LIST=$("./$test" --list-subtests) RET=$? - if [ $RET -ne 0 -a $RET -ne 79 ]; then - fail $test + if [ "$RET" -ne 0 -a $RET -ne 79 ]; then + fail "$test" fi - if [ $RET -eq 79 -a -n "$LIST" ]; then - fail $test + if [ "$RET" -eq 79 -a -n "$LIST" ]; then + fail "$test" fi - if [ $RET -eq 0 -a -z "$LIST" ]; then - fail $test + if [ "$RET" -eq 0 -a -z "$LIST" ]; then + fail "$test" fi # check invalid subtest handling echo " Checking invalid subtest handling..." - ./$test --run-subtest invalid-subtest > /dev/null 2>&1 && fail $test + "./$test" --run-subtest invalid-subtest > /dev/null 2>&1 && fail "$test" done diff --git a/tests/sysfs_l3_parity b/tests/sysfs_l3_parity index d5f3284..37a03f1 100755 --- a/tests/sysfs_l3_parity +++ b/tests/sysfs_l3_parity @@ -1,22 +1,30 @@ -#!/bin/bash +#!/bin/sh -SOURCE_DIR="$( dirname "${BASH_SOURCE[0]}" )" -. $SOURCE_DIR/drm_lib.sh +if [ -n "$BASH_SOURCE" ]; then + THIS_SCRIPT=$BASH_SOURCE +else + THIS_SCRIPT=$0 +fi + +SOURCE_DIR=$(dirname "$THIS_SCRIPT") +. "$SOURCE_DIR/drm_lib.sh" -$SOURCE_DIR/../tools/intel_l3_parity -r 0 -b 0 -s 0 -e || exit $? +"$SOURCE_DIR/../tools/intel_l3_parity" -r 0 -b 0 -s 0 -e || exit $? #Check that we can remap a row -$SOURCE_DIR/../tools/intel_l3_parity -r 0 -b 0 -s 0 -d -disabled=`$SOURCE_DIR/../tools/intel_l3_parity -l | grep -c 'Row 0, Bank 0, Subbank 0 is disabled'` -if [ "$disabled" != "1" ] ; then +"$SOURCE_DIR/../tools/intel_l3_parity" -r 0 -b 0 -s 0 -d +disabled=$("$SOURCE_DIR/../tools/intel_l3_parity" -l | grep -c 'Row 0, Bank 0, Subbank 0 is disabled') +if [ "$disabled" != 1 ] ; then echo "Fail" - exit $IGT_EXIT_FAILURE + exit "$IGT_EXIT_FAILURE" fi -$SOURCE_DIR/../tools/intel_l3_parity -r 0 -b 0 -s 0 -e +"$SOURCE_DIR/../tools/intel_l3_parity" -r 0 -b 0 -s 0 -e + #Check that we can clear remaps -if [ `$SOURCE_DIR/../tools/intel_l3_parity -l | wc -l` != 1 ] ; then +can_clear=$("$SOURCE_DIR/../tools/intel_l3_parity" -l | wc -l) +if [ "$can_clear" != 1 ] ; then echo "Fail 2" - exit $IGT_EXIT_FAILURE + exit "$IGT_EXIT_FAILURE" fi diff --git a/tests/test_rte_check b/tests/test_rte_check deleted file mode 100755 index 2a891b8..0000000 --- a/tests/test_rte_check +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -SOURCE_DIR="$( dirname "${BASH_SOURCE[0]}" )" -. $SOURCE_DIR/drm_lib.sh - -exit $IGT_EXIT_SUCCESS diff --git a/tests/tools_test b/tests/tools_test index a27fb87..dd10531 100755 --- a/tests/tools_test +++ b/tests/tools_test @@ -1,16 +1,21 @@ -#!/bin/bash +#!/bin/sh # Test some of the most critical tools we have accidentally broken before. # TODO: Possibly make tests parse output -SOURCE_DIR="$( dirname "${BASH_SOURCE[0]}" )" -. $SOURCE_DIR/drm_lib.sh +if [ -n "$BASH_SOURCE" ]; then + THIS_SCRIPT=$BASH_SOURCE +else + THIS_SCRIPT=$0 +fi + +SOURCE_DIR=$(dirname "$THIS_SCRIPT") +. "$SOURCE_DIR/drm_lib.sh" # ARB_MODE has existed for many gens -PATH=$SOURCE_DIR/../tools:$PATH +PATH="$SOURCE_DIR/../tools:$PATH" do_or_die "intel_reg read 0x4030" do_or_die "intel_reg dump" # TODO: Add more tests -exit $IGT_EXIT_SUCCESS - +exit "$IGT_EXIT_SUCCESS"