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

📄 bash_completion_test

📁 linux subdivision ying gai ke yi le ba
💻
字号:
#!/bin/bash# Checks that the "_svn" function defined in the specified "bash_completion"# script produces appropriate lists of completions for various incomplete svn# command lines.if [ ! -f "$1" ] || [ "$2" ]; then  echo "Usage: bash_completion_test BASH_COMPLETION_PATHNAME"  echo "Tests the specified \"bash_completion\" script,"  echo "including checking it against the \"svn\" program found in the current PATH."  exit 1fiset -e  # Exit on errorshopt -s extglob# Execute the script which is to be tested.. "$1"# From the given incomplete svn command, print a space-separated list of# possible completions of the last argument (or of an empty first argument# if no subcommand is given).# Usage: get_svn_completions [SVN-SUBCOMMAND [SVN-OPTION...]]get_svn_completions() {  COMP_WORDS=(svn "$@")  if [ $# == 0 ]; then    COMP_CWORD=1  else    COMP_CWORD=$#  fi  _svn  echo -n "${COMPREPLY[*]}"}# Print a failure message, record the failure, and return "false".# Usage: fail MESSAGEfail() {  PREFIX="FAIL: "  for LINE in "$@"; do    echo "$PREFIX$LINE"    PREFIX="      "  done  TESTS_FAILED=1  false}# Check that EXPECTED-WORD is among the completions of the last word in# SVN-COMMAND.  SVN-COMMAND is a single argument to this function, split# into multiple arguments when passed to "get_svn_completions()".# Usage: includes SVN-COMMAND EXPECTED-WORDincludes() {  COMPLETIONS=`get_svn_completions $1`  if [[ "$2" != @(${COMPLETIONS// /|}) ]]; then    fail "completions of \"svn $1\" should include \"$2\"" \      "(completions: $COMPLETIONS)"  fi}excludes() {  COMPLETIONS=`get_svn_completions $1`  if [[ "$2" == @(${COMPLETIONS// /|}) ]]; then    fail "completions of \"svn $1\" should exclude \"$2\"" \      "(completions: $COMPLETIONS)"  fi}# Print the valid subcommands for "svn", one per line, sorted.# Exclude any synonym that is just a truncation of its full name.# Usage: get_svn_subcommandsget_svn_subcommands() {  svn help |    # Find the relevant lines.    sed -n -e '1,/^Available subcommands:$/d;/^$/q;p' |    # Remove brackets and commas    tr -d ' )' | tr '(,' ' ' |    # Remove simple abbreviations    ( while read SYNONYMS; do        for CMD in $SYNONYMS; do          for SYNONYM in $SYNONYMS; do            if [ $CMD != "?" ]; then              case $SYNONYM in              $CMD) ;;              $CMD*) CMD= ; break ;;              esac            fi          done          if [ $CMD ]; then            echo $CMD          fi        done      done    ) |    sort}# Print the valid option switches for "svn SUBCMD", one per line, sorted.# Usage: get_svn_options SUBCMDget_svn_options() {  { svn help "$1" |      # Find the relevant lines; remove "arg" and description.      sed -n -e '1,/^Valid options:$/d;/^  -/!d' \             -e 's/\( arg\)* * : .*//;p' |      # Remove brackets; put each word on its own line.      tr -d '] ' | tr '[' '\n'    # The following options are always accepted but not listed in the help    echo "-h"    echo "--help"  } | sort  }# The tests.set +e  # Do not exit on errorTESTS_FAILED=echo "Checking general completion"includes "he" "help"includes "" "?"includes "" "h"includes "" "help"includes "" "--version"echo "Checking list of subcommands"HELP_SUBCMDS=`get_svn_subcommands | tr "\n" " "`COMPLETION_SUBCMDS=`get_svn_completions | tr " " "\n" | grep -v "^-" | sort | tr "\n" " "`if [ "$HELP_SUBCMDS" != "$COMPLETION_SUBCMDS" ]; then  fail "non-option completions for \"svn \" != subcommands accepted" \       "    (non-o. cmpl.: $COMPLETION_SUBCMDS)" \       "    (svn accepts:  $HELP_SUBCMDS)"fiecho "Checking list of options for each subcommand"for SUBCMD in $HELP_SUBCMDS; do  HELP_OPTIONS=`get_svn_options $SUBCMD | tr "\n" " "`  COMPLETION_OPTIONS=`get_svn_completions $SUBCMD - | tr " " "\n" | sort | tr "\n" " "`  if [ "$HELP_OPTIONS" != "$COMPLETION_OPTIONS" ]; then    fail "completions for \"svn $SUBCMD -\" != options accepted" \	 "    (completions: $COMPLETION_OPTIONS)" \         "    (svn accepts: $HELP_OPTIONS)"  fidoneecho "Checking rejection of synonyms"excludes "diff -x -u -" "-x"excludes "diff -x -u --e" "--extensions"excludes "diff --extensions -u -" "--extensions"excludes "diff --extensions -u -" "-x"excludes "diff --extensions=-u -" "-x"if [ $TESTS_FAILED ]; then  echo "FAILURE: at least one bash_completion test failed."else  echo "All bash_completion tests passed."fi

⌨️ 快捷键说明

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