#!/bin/bash ######################################################################## ## Script : test_bash-utils.sh ## Name : bash-utils.sh 単体テスト用スクリプト ## Version : 1.0 ## Usage: ## |This is Test Usage ## ## test-key : test-value # Load Test Target Script . ../src/bash-utils.sh # ---------------------------------------------------------------------- # getAbsolutePath 単体テスト # 指定されたファイルの絶対パス取得確認 # ---------------------------------------------------------------------- function test_getAbsolutePath_file() { local BASE_PATH=`pwd | sed "s/\\/test$//"` local EXCEPT_PATH="${BASE_PATH}/src/bash-utils.sh" local ABSOLUTE_PATH=$(getAbsolutePath ../src/bash-utils.sh) assertEquals "getAbsolutePath [ファイルの絶対パス取得]" "${EXCEPT_PATH}" "${ABSOLUTE_PATH}" } # ---------------------------------------------------------------------- # getAbsolutePath 単体テスト # 指定されたディレクトリの絶対パス取得確認 # ---------------------------------------------------------------------- function test_getAbsolutePath_directory() { local BASE_PATH=`pwd | sed "s/\\/test$//"` local EXCEPT_PATH="${BASE_PATH}/src" local ABSOLUTE_PATH=$(getAbsolutePath ../src) assertEquals "getAbsolutePath [ディレクトリの絶対パス取得]" "${EXCEPT_PATH}" "${ABSOLUTE_PATH}" } # ---------------------------------------------------------------------- # getAbsolutePath 単体テスト # 存在しないパスの指定 # ---------------------------------------------------------------------- function test_getAbsolutePath_invalid() { getAbsolutePath ../abc/bash-utils.sh > /dev/null 2>&1 assertFalse $? } # ---------------------------------------------------------------------- # getProperty 単体テスト # プロパティ値の取得 # ---------------------------------------------------------------------- function test_getProperty() { VALUE=$(getProperty "test-key") assertEquals "getProperty [test-key に対する値取得]" "test-value" "${VALUE}" } # ---------------------------------------------------------------------- # version 単体テスト # バージョン情報の取得 # ---------------------------------------------------------------------- function test_version() { VERSION=$(version) assertEquals "version [バージョン情報取得]" "test_bash-utils.sh 1.0" "${VERSION}" } # ---------------------------------------------------------------------- # Usage 単体テスト # Usage の取得 # ---------------------------------------------------------------------- function test_usage() { USAGE=$(usage) assertEquals "usage [usage 取得]" "This is Test Usage" "${USAGE}" } # ---------------------------------------------------------------------- # confirm 単体テスト # デフォルト確認 # ---------------------------------------------------------------------- function test_confirm_default() { $(echo "abc" | confirm "test" 1) RESULT=$? assertEquals "confirm [usage 取得]" "1" "${RESULT}" } # ---------------------------------------------------------------------- # confirm 単体テスト # Yes 確認 # ---------------------------------------------------------------------- function test_confirm_yes() { $(echo "Yes" | confirm "test" 0) RESULT=$? assertEquals "confirm [usage 取得]" "1" "${RESULT}" $(echo "yes" | confirm "test" 0) RESULT=$? assertEquals "confirm [usage 取得]" "1" "${RESULT}" } # ---------------------------------------------------------------------- # confirm 単体テスト # No 確認 # ---------------------------------------------------------------------- function test_confirm_no() { $(echo "No" | confirm "test" 0) RESULT=$? assertEquals "confirm [usage 取得]" "0" "${RESULT}" $(echo "no" | confirm "test" 0) RESULT=$? assertEquals "confirm [usage 取得]" "0" "${RESULT}" } # ---------------------------------------------------------------------- # confirm 単体テスト # No 確認 # ---------------------------------------------------------------------- function test_confirm_no() { $(echo "No" | confirm "test" 0) RESULT=$? assertEquals "confirm [usage 取得]" "0" "${RESULT}" $(echo "no" | confirm "test" 0) RESULT=$? assertEquals "confirm [usage 取得]" "0" "${RESULT}" } # ---------------------------------------------------------------------- # isContains 単体テスト # 含まれる場合の確認 # ---------------------------------------------------------------------- function test_isContains() { isContains "abc def ghi" "def" RESULT=$? assertEquals "isContains [含まれるリスト確認]" "1" "${RESULT}" } # ---------------------------------------------------------------------- # isContains 単体テスト # 含まれない場合の確認 # ---------------------------------------------------------------------- function test_isContains_noContains() { LIST="abc def gef" isContains "abc def ghi" "xyz" RESULT=$? assertEquals "isContains [含まれないリスト確認]" "0" "${RESULT}" } # ---------------------------------------------------------------------- # isContainsRegex 単体テスト # 含まれる場合の確認 # ---------------------------------------------------------------------- function test_isContainsRegex() { LIST="abc def gef" isContainsRegex "abc def ghi" "g.i" RESULT=$? assertEquals "isContains [含まれるリスト確認]" "1" "${RESULT}" } # ---------------------------------------------------------------------- # isContainsRegex 単体テスト # 含まれない場合の確認 # ---------------------------------------------------------------------- function test_isContainsRegex_noContains() { LIST="abc def gef" isContainsRegex "abc def ghj" "g.i" RESULT=$? assertEquals "isContains [含まれないリスト確認]" "0" "${RESULT}" } # ---------------------------------------------------------------------- # overwrite 単体テスト # 上書き # ---------------------------------------------------------------------- function test_overwrite() { TMP_FILE=$(mktemp /tmp/ut-XXXXXXXXXX.tmp) echo "A" > ${TMP_FILE} `echo "y" | overwrite ${TMP_FILE}` RESULT=$? assertEquals "ovewrite" "0" "${RESULT}" rm -f ${TMP_FILE} } # ---------------------------------------------------------------------- # overwrite 単体テスト # 上書き中断 # ---------------------------------------------------------------------- function test_overwrite_abort() { TMP_FILE=$(mktemp /tmp/ut-XXXXXXXXXX.tmp) echo "A" > ${TMP_FILE} `echo "n" | overwrite ${TMP_FILE}` RESULT=$? assertEquals "ovewrite abort" "1" "${RESULT}" rm -f ${TMP_FILE} } # ---------------------------------------------------------------------- # overwrite 単体テスト # ファイル無 # ---------------------------------------------------------------------- function test_overwrite_nofile() { TMP_FILE=$(mktemp /tmp/ut-XXXXXXXXXX.tmp) rm -f ${TMP_FILE} `overwrite ${TMP_FILE}` RESULT=$? assertEquals "ovewrite nofile" "0" "${RESULT}" } # ---------------------------------------------------------------------- # confirmPassword 単体テスト # ---------------------------------------------------------------------- function test_confirmPassword() { TMP_FILE=$(mktemp /tmp/ut-XXXXXXXXXX.tmp) echo -e "ABC\nABC" > ${TMP_FILE} confirmPassword "X" "Y" < ${TMP_FILE} > /dev/null RESULT=$? assertEquals "confirmPassword" "0" "${RESULT}" assertEquals "confirmPassword Password=A" "ABC" "${CONFIRM_PASSWORD}" rm -f ${TMP_FILE} } # ---------------------------------------------------------------------- # confirmPassword 単体テスト # 確認用パスワードと不一致 # ---------------------------------------------------------------------- function test_confirmPassword_ng() { TMP_FILE=$(mktemp /tmp/ut-XXXXXXXXXX.tmp) echo -e "ABC\nXYZ" > ${TMP_FILE} confirmPassword "X" "Y" < ${TMP_FILE} > /dev/null RESULT=$? assertEquals "confirmPassword" "1" "${RESULT}" assertEquals "confirmPassword Password=A" "" "${CONFIRM_PASSWORD}" rm -f ${TMP_FILE} } # ---------------------------------------------------------------------- # template 単体テスト # ---------------------------------------------------------------------- function test_template() { # template file TMPL_FILE=$(mktemp /tmp/ut-XXXXXXXXXX.tmp) echo "ABC DEF \${TMPL_FILE} HIJKLMN" > ${TMPL_FILE} echo "AAA \${LANG}" >> ${TMPL_FILE} # excepted file EXCEPTED_FILE=$(mktemp /tmp/ut-XXXXXXXXXX.tmp) echo "ABC DEF ${TMPL_FILE} HIJKLMN" > ${EXCEPTED_FILE} echo "AAA ${LANG}" >> ${EXCEPTED_FILE} RESULT_FILE=$(mktemp /tmp/ut-XXXXXXXXXX.tmp) template ${TMPL_FILE} > ${RESULT_FILE} RESULT=$? diff ${RESULT_FILE} ${EXCEPTED_FILE} RESULT=$? assertEquals "template" "0" "${RESULT}" rm -f ${TMPL_FILE} ${RESULT_FILE} ${EXCEPTED_FILE} } # ---------------------------------------------------------------------- # debugPause 単体テスト # ---------------------------------------------------------------------- function test_debugPause() { ORIG_DEBUG=${DEBUG} DEBUG=0 echo "XYZ" | debugPause DEBUG=1 echo "XYZ" | debugPause DEBUG=${ORIG_DEBUG} } function suite() { suite_addTest test_getAbsolutePath_file suite_addTest test_getAbsolutePath_directory suite_addTest test_getAbsolutePath_invalid suite_addTest test_getProperty suite_addTest test_version suite_addTest test_usage suite_addTest test_confirm_default suite_addTest test_confirm_yes suite_addTest test_confirm_no suite_addTest test_isContains suite_addTest test_isContains_noContains suite_addTest test_isContainsRegex suite_addTest test_isContainsRegex_noContains suite_addTest test_overwrite suite_addTest test_overwrite_abort suite_addTest test_overwrite_nofile suite_addTest test_confirmPassword suite_addTest test_confirmPassword_ng suite_addTest test_template suite_addTest test_debugPause } . shunit2