⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shunit2

📁 unified configuration interface. small configuration library for programs written in c, can be used
💻
📖 第 1 页 / 共 2 页
字号:
  if [ $# -eq 3 ]; then    shunit_message_="${shunit_message_}$1"    shift  fi  shunit_unexpected_=$1  shunit_actual_=$2  _shunit_testFailed "${shunit_message_:+${shunit_message_} }expected:<${shunit_unexpected_}> but was:<${shunit_actual_}>"  unset shunit_message_ shunit_unexpected_ shunit_actual_  return ${SHUNIT_FALSE}}_FAIL_NOT_EQUALS_='eval failNotEquals --lineno "${LINENO:-}"'#/**# <s:function group="failures"># <entry align="right">#   <emphasis>void</emphasis># </entry># <entry>#   <funcsynopsis>#     <funcprototype>#       <funcdef><function>failSame</function></funcdef>#       <paramdef>string <parameter>[message]</parameter></paramdef>#     </funcprototype>#   </funcsynopsis>#   <para>Indicate test failure because arguments were not the same. The#   message is optional.</para># </entry># </s:function>#*/failSame(){  ${_SHUNIT_LINENO_}  if [ $# -lt 2 -o $# -gt 3 ]; then    _shunit_error 'failSame() requires two or three arguments'    return ${SHUNIT_ERROR}  fi  _shunit_shouldSkip && return ${SHUNIT_TRUE}  [ -z "${shunit_message_:-}" ] && shunit_message_=''  if [ $# -eq 3 ]; then    shunit_message_="${shunit_message_}$1"    shift  fi  _shunit_testFailed "${shunit_message_:+${shunit_message_} }expected not same"  unset shunit_message_  return ${SHUNIT_FALSE}}_FAIL_SAME_='eval failSame --lineno "${LINENO:-}"'#/**# <s:function group="failures"># <entry align="right">#   <emphasis>void</emphasis># </entry># <entry>#   <funcsynopsis>#     <funcprototype>#       <funcdef><function>failNotSame</function></funcdef>#       <paramdef>string <parameter>[message]</parameter></paramdef>#       <paramdef>string <parameter>expected</parameter></paramdef>#       <paramdef>string <parameter>actual</parameter></paramdef>#     </funcprototype>#   </funcsynopsis>#   <para>Fails the test if <emphasis>expected</emphasis> and#   <emphasis>actual</emphasis> are equal to one another. The message is#   optional.</para># </entry># </s:function>#*/failNotSame(){  ${_SHUNIT_LINENO_}  if [ $# -lt 2 -o $# -gt 3 ]; then    _shunit_error 'failNotEquals() requires one or two arguments'    return ${SHUNIT_ERROR}  fi  _shunit_shouldSkip && return ${SHUNIT_TRUE}  if [ $# -eq 2 ]; then    failNotEquals "$1" "$2"  else    failNotEquals "$1" "$2" "$3"  fi}_FAIL_NOT_SAME_='eval failNotSame --lineno "${LINENO:-}"'#-----------------------------------------------------------------------------# skipping functions##/**# <s:function group="skipping"># <entry align="right">#   <emphasis>void</emphasis># </entry># <entry>#   <funcsynopsis>#     <funcprototype>#       <funcdef><function>startSkipping</function></funcdef>#       <paramdef />#     </funcprototype>#   </funcsynopsis>#   <para>This function forces the remaining assert and fail functions to be#   "skipped", i.e. they will have no effect. Each function skipped will be#   recorded so that the total of asserts and fails will not be altered.</para># </entry># </s:function>#*/startSkipping(){  __shunit_skip=${SHUNIT_TRUE}}#/**# <s:function group="skipping"># <entry align="right">#   <emphasis>void</emphasis># </entry># <entry>#   <funcsynopsis>#     <funcprototype>#       <funcdef><function>endSkipping</function></funcdef>#       <paramdef />#     </funcprototype>#   </funcsynopsis>#   <para>This function returns calls to the assert and fail functions to their#   default behavior, i.e. they will be called.</para># </entry># </s:function>#*/endSkipping(){  __shunit_skip=${SHUNIT_FALSE}}#/**# <s:function group="skipping"># <entry align="right">#   <emphasis>boolean</emphasis># </entry># <entry>#   <funcsynopsis>#     <funcprototype>#       <funcdef><function>isSkipping</function></funcdef>#       <paramdef />#     </funcprototype>#   </funcsynopsis>#   <para>This function returns the state of skipping.</para># </entry># </s:function>#*/isSkipping(){  return ${__shunit_skip}}#-----------------------------------------------------------------------------# suite functions##/**# <s:function group="suites"># <entry align="right">#   <emphasis>void</emphasis># </entry># <entry>#   <funcsynopsis>#     <funcprototype>#       <funcdef><function>suite</function></funcdef>#       <paramdef />#     </funcprototype>#   </funcsynopsis>#   <para>This function can be optionally overridden by the user in their test#   suite.</para>#   <para>If this function exists, it will be called when#   <command>shunit2</command> is sourced. If it does not exist, shUnit2 will#   search the parent script for all functions beginning with the word#   <literal>test</literal>, and they will be added dynamically to the test#   suite.</para># </entry># </s:function>#*/# Note: see _shunit_mktempFunc() for actual implementation# suite() { :; }#/**# <s:function group="suites"># <entry align="right">#   <emphasis>void</emphasis># </entry># <entry>#   <funcsynopsis>#     <funcprototype>#       <funcdef><function>suite_addTest</function></funcdef>#       <paramdef>string <parameter>function</parameter></paramdef>#     </funcprototype>#   </funcsynopsis>#   <para>This function adds a function name to the list of tests scheduled for#   execution as part of this test suite. This function should only be called#   from within the <function>suite()</function> function.</para># </entry># </s:function>#*/suite_addTest(){  _su_func=${1:-}  __shunit_suite="${__shunit_suite:+${__shunit_suite} }${_su_func}"  unset _su_func}#/**# <s:function group="suites"># <entry align="right">#   <emphasis>void</emphasis># </entry># <entry>#   <funcsynopsis>#     <funcprototype>#       <funcdef><function>oneTimeSetUp</function></funcdef>#       <paramdef />#     </funcprototype>#   </funcsynopsis>#   <para>This function can be be optionally overridden by the user in their#   test suite.</para>#   <para>If this function exists, it will be called once before any tests are#   run. It is useful to prepare a common environment for all tests.</para># </entry># </s:function>#*/# Note: see _shunit_mktempFunc() for actual implementation# oneTimeSetUp() { :; }#/**# <s:function group="suites"># <entry align="right">#   <emphasis>void</emphasis># </entry># <entry>#   <funcsynopsis>#     <funcprototype>#       <funcdef><function>oneTimeTearDown</function></funcdef>#       <paramdef />#     </funcprototype>#   </funcsynopsis>#   <para>This function can be be optionally overridden by the user in their#   test suite.</para>#   <para>If this function exists, it will be called once after all tests are#   completed. It is useful to clean up the environment after all tests.</para># </entry># </s:function>#*/# Note: see _shunit_mktempFunc() for actual implementation# oneTimeTearDown() { :; }#/**# <s:function group="suites"># <entry align="right">#   <emphasis>void</emphasis># </entry># <entry>#   <funcsynopsis>#     <funcprototype>#       <funcdef><function>setUp</function></funcdef>#       <paramdef />#     </funcprototype>#   </funcsynopsis>#   <para>This function can be be optionally overridden by the user in their#   test suite.</para>#   <para>If this function exists, it will be called before each test is run.#   It is useful to reset the environment before each test.</para># </entry># </s:function>#*/# Note: see _shunit_mktempFunc() for actual implementation# setUp() { :; }#/**# <s:function group="suites"># <entry align="right">#   <emphasis>void</emphasis># </entry># <entry>#   <funcsynopsis>#     <funcprototype>#       <funcdef><function>tearDown</function></funcdef>#       <paramdef />#     </funcprototype>#   </funcsynopsis>#   <para>This function can be be optionally overridden by the user in their#   test suite.</para>#   <para>If this function exists, it will be called after each test completes.#   It is useful to clean up the environment after each test.</para># </entry># </s:function>#*/# Note: see _shunit_mktempFunc() for actual implementation# tearDown() { :; }#------------------------------------------------------------------------------# internal shUnit2 functions#_shunit_cleanup(){  name=$1  case ${name} in    EXIT) signal=0 ;;    INT) signal=2 ;;    TERM) signal=15 ;;    *)      _shunit_warn "unrecognized trap value (${name})"      signal=0      ;;  esac  # do our work  rm -fr "${__shunit_tmpDir}"  # exit for all non-EXIT signals  if [ ${name} != 'EXIT' ]; then    _shunit_warn "trapped and now handling the (${name}) signal"    _shunit_generateReport    # disable EXIT trap    trap 0    # add 128 to signal and exit    exit `expr ${signal} + 128`  fi}_shunit_execSuite(){  echo '#'  echo '# Performing tests'  echo '#'  for _su_func in ${__shunit_suite}; do    # disable skipping    endSkipping    # execute the per-test setup function    setUp    # execute the test    echo "${_su_func}"    eval ${_su_func}    # execute the per-test tear-down function    tearDown  done  unset _su_func}_shunit_generateReport(){  _su__awkPercent='{printf("%4d %3.0f%%", $1, $1*100/$2)}'  if [ ${__shunit_testsTotal:-0} -gt 0 ]; then    _su__passed=`echo ${__shunit_testsPassed} ${__shunit_testsTotal} |\        awk "${_su__awkPercent}"`    _su__failed=`echo ${__shunit_testsFailed} ${__shunit_testsTotal} |\        awk "${_su__awkPercent}"`    _su__skipped=`echo ${__shunit_testsSkipped} ${__shunit_testsTotal} |\        awk "${_su__awkPercent}"`    _su__total=`echo ${__shunit_testsTotal} 100 |\        awk '{printf("%4d %3d%%", $1, $2)}'`  else    _su__passed=`echo 0 0 |awk '{printf("%4d %3d%%", $1, $2)}'`    _su__failed=${_su__passed}    _su__skipped=${_su__passed}    _su__total=${_su__passed}  fi  cat <<EOF## Test report#tests passed:  ${_su__passed}tests failed:  ${_su__failed}tests skipped: ${_su__skipped}tests total:   ${_su__total}EOF  unset _su__awkPercent _su__passed _su__failed _su__skipped _su__total}# this function is a cross-platform temporary directory creation tool. not all# OSes have the mktemp function, so one is included here._shunit_mktempDir(){  # try the standard mktemp function  ( exec mktemp -dqt shunit.XXXXXX 2>/dev/null ) && return  # the standard mktemp didn't work.  doing our own.  if [ -r '/dev/urandom' ]; then    _su__random=`od -vAn -N4 -tx4 </dev/urandom |sed 's/^[^0-9a-f]*//'`  elif [ -n "${RANDOM:-}" ]; then    # $RANDOM works    _su__random=${RANDOM}${RANDOM}${RANDOM}$$  else    # $RANDOM doesn't work    _su__date=`date '+%Y%m%d%H%M%S'`    _su__random=`expr ${_su__date} / $$`  fi  _su__tmpDir="${TMPDIR:-/tmp}/shunit.${_su__random}"  ( umask 077 && mkdir "${_su__tmpDir}" ) || {    echo 'shUnit:FATAL could not create temporary directory! exiting' >&2    exit 1  }  echo ${_su__tmpDir}  unset _su__date _su__random _su__tmpDir}# this function is here to work around issues in Cygwin_shunit_mktempFunc(){  for _su__func in oneTimeSetUp oneTimeTearDown setUp tearDown suite; do    _su__file="${__shunit_tmpDir}/${_su__func}"    cat <<EOF >"${_su__file}"#! /bin/shexit 0EOF    chmod +x "${_su__file}"  done  unset _su__file}_shunit_shouldSkip(){  [ ${__shunit_skip} -eq ${SHUNIT_FALSE} ] && return ${SHUNIT_FALSE}  _shunit_testSkipped}_shunit_testPassed(){  __shunit_testsPassed=`expr ${__shunit_testsPassed} + 1`  __shunit_testsTotal=`expr ${__shunit_testsTotal} + 1`}_shunit_testFailed(){  _su__msg=$1  __shunit_testsFailed=`expr ${__shunit_testsFailed} + 1`  __shunit_testsTotal=`expr ${__shunit_testsTotal} + 1`  echo "${__SHUNIT_ASSERT_MSG_PREFIX}${_su__msg}" >&2  unset _su__msg}_shunit_testSkipped(){  __shunit_testsSkipped=`expr ${__shunit_testsSkipped} + 1`  __shunit_testsTotal=`expr ${__shunit_testsTotal} + 1`}#------------------------------------------------------------------------------# main## create a temporary storage location__shunit_tmpDir=`_shunit_mktempDir`# setup traps to clean up after ourselvestrap '_shunit_cleanup EXIT' 0trap '_shunit_cleanup INT' 2trap '_shunit_cleanup TERM' 15# create phantom functions to work around issues with Cygwin_shunit_mktempFuncPATH="${__shunit_tmpDir}:${PATH}"# execute the oneTimeSetUp function (if it exists)oneTimeSetUp# execute the suite function defined in the parent test script# deprecated as of 2.1.0suite# if no suite function was defined, dynamically build a list of functionsif [ -z "${__shunit_suite}" ]; then  shunit_funcs_=`grep "^[ \t]*test[A-Za-z0-9_]* *()" ${__SHUNIT_PARENT} \      |sed 's/[^A-Za-z0-9_]//g'`  for shunit_func_ in ${shunit_funcs_}; do    suite_addTest ${shunit_func_}  donefiunset shunit_func_ shunit_funcs_# execute the tests_shunit_execSuite# execute the oneTimeTearDown function (if it exists)oneTimeTearDown# generate report_shunit_generateReport# restore the previous set of shell flagsfor shunit_shellFlag_ in ${__SHUNIT_SHELL_FLAGS}; do  echo ${shunit_shellFlags_} |grep ${shunit_shellFlag_} >/dev/null \    || set +${shunit_shellFlag_}doneunset shunit_shellFlag_ shunit_shellFlags_[ ${__shunit_testsFailed} -eq 0 ] || exit 1#/**# </s:shelldoc>#*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -