Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/tools/testing/selftests/net/forwarding/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 3 kB image not shown  

Quelle  lib_sh_test.sh   Sprache: Shell

 
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0

# This tests the operation of lib.sh itself.

ALL_TESTS="
 test_ret
 test_exit_status
"
NUM_NETIFS=0
source lib.sh

# Simulated checks.

do_test()
{
 local msg=$1; shift

 "$@"
 check_err $? "$msg"
}

tpass()
{
 do_test "tpass" true
}

tfail()
{
 do_test "tfail" false
}

txfail()
{
 FAIL_TO_XFAIL=yes do_test "txfail" false
}

# Simulated tests.

pass()
{
 RET=0
 do_test "true" true
 log_test "true"
}

fail()
{
 RET=0
 do_test "false" false
 log_test "false"
}

xfail()
{
 RET=0
 FAIL_TO_XFAIL=yes do_test "xfalse" false
 log_test "xfalse"
}

skip()
{
 RET=0
 log_test_skip "skip"
}

slow_xfail()
{
 RET=0
 xfail_on_slow do_test "slow_false" false
 log_test "slow_false"
}

# lib.sh tests.

ret_tests_run()
{
 local t

 RET=0
 retmsg=
 for t in "$@"do
  $t
 done
 echo "$retmsg"
 return $RET
}

ret_subtest()
{
 local expect_ret=$1; shift
 local expect_retmsg=$1; shift
 local -a tests=( "$@" )

 local status_names=(pass fail xfail xpass skip)
 local ret
 local out

 RET=0

 # Run this in a subshell, so that our environment is intact.
 out=$(ret_tests_run "${tests[@]}")
 ret=$?

 (( ret == expect_ret ))
 check_err $? "RET=$ret expected $expect_ret"

 [[ $out == $expect_retmsg ]]
 check_err $? "retmsg=$out expected $expect_retmsg"

 log_test "RET $(echo ${tests[@]}) -> ${status_names[$ret]}"
}

test_ret()
{
 ret_subtest $ksft_pass ""

 ret_subtest $ksft_pass "" tpass
 ret_subtest $ksft_fail "tfail" tfail
 ret_subtest $ksft_xfail "txfail" txfail

 ret_subtest $ksft_pass "" tpass tpass
 ret_subtest $ksft_fail "tfail" tpass tfail
 ret_subtest $ksft_xfail "txfail" tpass txfail

 ret_subtest $ksft_fail "tfail" tfail tpass
 ret_subtest $ksft_xfail "txfail" txfail tpass

 ret_subtest $ksft_fail "tfail" tfail tfail
 ret_subtest $ksft_fail "tfail" tfail txfail

 ret_subtest $ksft_fail "tfail" txfail tfail

 ret_subtest $ksft_xfail "txfail" txfail txfail
}

exit_status_tests_run()
{
 EXIT_STATUS=0
 tests_run > /dev/null
 return $EXIT_STATUS
}

exit_status_subtest()
{
 local expect_exit_status=$1; shift
 local tests=$1; shift
 local what=$1; shift

 local status_names=(pass fail xfail xpass skip)
 local exit_status
 local out

 RET=0

 # Run this in a subshell, so that our environment is intact.
 out=$(TESTS="$tests" exit_status_tests_run)
 exit_status=$?

 (( exit_status == expect_exit_status ))
 check_err $? "EXIT_STATUS=$exit_status, expected $expect_exit_status"

 log_test "EXIT_STATUS $tests$what -> ${status_names[$exit_status]}"
}

test_exit_status()
{
 exit_status_subtest $ksft_pass ":"

 exit_status_subtest $ksft_pass "pass"
 exit_status_subtest $ksft_fail "fail"
 exit_status_subtest $ksft_pass "xfail"
 exit_status_subtest $ksft_skip "skip"

 exit_status_subtest $ksft_pass "pass pass"
 exit_status_subtest $ksft_fail "pass fail"
 exit_status_subtest $ksft_pass "pass xfail"
 exit_status_subtest $ksft_skip "pass skip"

 exit_status_subtest $ksft_fail "fail pass"
 exit_status_subtest $ksft_pass "xfail pass"
 exit_status_subtest $ksft_skip "skip pass"

 exit_status_subtest $ksft_fail "fail fail"
 exit_status_subtest $ksft_fail "fail xfail"
 exit_status_subtest $ksft_fail "fail skip"

 exit_status_subtest $ksft_fail "xfail fail"
 exit_status_subtest $ksft_fail "skip fail"

 exit_status_subtest $ksft_pass "xfail xfail"
 exit_status_subtest $ksft_skip "xfail skip"
 exit_status_subtest $ksft_skip "skip xfail"

 exit_status_subtest $ksft_skip "skip skip"

 KSFT_MACHINE_SLOW=yes \
  exit_status_subtest $ksft_pass "slow_xfail" ": slow"

 KSFT_MACHINE_SLOW=no \
  exit_status_subtest $ksft_fail "slow_xfail" ": fast"
}

trap pre_cleanup EXIT

tests_run

exit $EXIT_STATUS

Messung V0.5
C=91 H=95 G=92

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.