LoginSignup
3
7

More than 5 years have passed since last update.

「単体テスト」を手抜きするbash script

Posted at

背景

何度も何度も単体テスト流すのが面倒くさかったので
今の現場で作ったものです。

手抜きが主目的なので、さくっと作る。
・コマンドで起動できる機能の単体テスト用
・完全オレオレ!
・他人が読めなくて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職人さんからのツッコミ歓迎!

3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7