背景
何度も何度も単体テスト流すのが面倒くさかったので
今の現場で作ったものです。
手抜きが主目的なので、さくっと作る。
・コマンドで起動できる機能の単体テスト用
・完全オレオレ!
・他人が読めなくてok・汚くてもok!
・30分悩むなら諦める
以下のbashコードは要点だけぬいたもので、動作確認してないです。
あいことばを忘れない
#!/bin/bash
set -Ceu
変数定義
入力・ログ置き場とかを変数・定数化
local を使う
ファイルがなければ終了
if [ ! -e ${FILE} ];then
echo "${FILE}が無い"
exit 1
fi
出力ファイル用Directryをmkdir
if [ ! -e "${logDir}" ]; then
mkdir "${logDir}"
fi
ファイル群をlogfileに出力しとく
ls -l ${inputDir} > ${LOGFILE}
echo -e \n\n >> ${LOGFILE} #見やすいよう改行いれただけ
実行!
sh hogehoge.sh 2&1 | tee -a ${LOGFILE}
local returnCodes=${PISESTATUS[@]} #bashのみ
local procTime=${SECONDS} #bashのみ 起動してから今までの時間を秒で取得
local procMin=$(( $((${SECONDS} / 60)) + 1))
ログファイルを退避
testshellを蹴った時刻の後に更新されたログファイルを全部とってきます。
find "${logDir} -maxdepth 1 -name *.log -mmin ${procMin} | xargs -i cp -p {} ${logWorkDir}
終了メッセージ表示
echo "〇〇テスト終了します ReturnCodes[$returnCodes]"
exit 0
↑を複数回ぶん回す
cat ${csvFile} | while read line
do
echo $line
local array=(`echo $line | tr -s ',' ' '`)
# テストしたいコマンド-------------
sh unitTest.sh ${array[@]}
#-------------------------------------
done
exit 0
shell職人さんからのツッコミ歓迎!