@@ -6,38 +6,35 @@ echo "== csubst CLI tests =="
66which csubst
77csubst --version || true
88
9- # --- ヘルプが期待どおり出るか(主要サブコマンドと必須引数名 ) ---
9+ # --- ヘルプ(主要サブコマンド/引数の存在 ) ---
1010csubst -h | head -n 20
1111csubst -h | grep -E ' \banalyze\b' > /dev/null
1212csubst -h | grep -E ' \bdataset\b' > /dev/null
1313csubst analyze -h | grep -- ' --alignment_file' > /dev/null
1414csubst analyze -h | grep -- ' --rooted_tree_file' > /dev/null
1515csubst analyze -h | grep -- ' --foreground' > /dev/null
1616
17- # 作業ディレクトリ(smoke と同じ場所を再利用 )
17+ # 作業ディレクトリ(smoke と共用 )
1818WORKDIR=" ${RUNNER_TEMP:- $(mktemp -d)} /csubst_smoke"
1919mkdir -p " $WORKDIR "
2020cd " $WORKDIR "
2121
22- # 必要なら最小データを用意
22+ # 最小データが無ければ生成
2323if [ ! -s alignment.fa ]; then
2424 csubst dataset --name PGK
2525fi
2626test -s alignment.fa && test -s tree.nwk && test -s foreground.txt
2727
28- # --- 異常系:存在しない入力で失敗すべき ---
28+ # --- 異常系:欠損入力で失敗すること ---
2929set +e
3030csubst analyze --alignment_file __NO_FILE__.fa \
3131 --rooted_tree_file tree.nwk --foreground foreground.txt --threads 1 > /dev/null 2>&1
3232rc=$?
3333set -e
34- if [ $rc -eq 0 ]; then
35- echo " ERROR: 存在しない入力で analyze が成功してしまいました" ; exit 1
36- else
37- echo " OK: 異常系(欠損入力)は非0で失敗"
38- fi
34+ [ $rc -ne 0 ] || { echo " ERROR: 欠損入力で成功してしまった" ; exit 1; }
35+ echo " OK: 異常系で非0終了を確認"
3936
40- # --- 正常系(1):既定モデル( ECM系) ---
37+ # --- 正常系(ECM系:デフォルト) ---
4138rm -f alignment.fa.{iqtree,log,rate,state,treefile} || true
4239env PYTHONOPTIMIZE=1 OMP_NUM_THREADS=1 csubst analyze \
4340 --alignment_file alignment.fa \
@@ -47,23 +44,22 @@ env PYTHONOPTIMIZE=1 OMP_NUM_THREADS=1 csubst analyze \
4744
4845shopt -s nullglob
4946CB1=(csubst_cb_* .tsv)
50- [ ${# CB1[@]} -ge 1 ] || { echo " ERROR: ECM 実行後に cb TSV がありません " ; exit 1; }
51- [ $( wc -l < " ${CB1[0]} " ) -ge 2 ] || { echo " ERROR: cb TSV が空のようです " ; exit 1; }
52- grep $' \t ' " ${CB1[0]} " > /dev/null || { echo " ERROR: cb TSV がタブ区切りでない可能性" ; exit 1; }
47+ [ ${# CB1[@]} -ge 1 ] || { echo " ERROR: ECM 実行後に cb TSV が無い " ; exit 1; }
48+ [ $( wc -l < " ${CB1[0]} " ) -ge 2 ] || { echo " ERROR: cb TSV が空 " ; exit 1; }
49+ grep $' \t ' " ${CB1[0]} " > /dev/null || { echo " ERROR: TSV がタブ区切りでない可能性" ; exit 1; }
5350
54- # --- 正常系(2):GY+F3x4+R2(別分岐も生存確認) ---
51+ # --- 正常系(GY系:別分岐) ---
5552rm -f alignment.fa.{iqtree,log,rate,state,treefile} || true
5653env PYTHONOPTIMIZE=1 OMP_NUM_THREADS=1 csubst analyze \
5754 --alignment_file alignment.fa \
5855 --rooted_tree_file tree.nwk \
5956 --foreground foreground.txt \
6057 --iqtree_model GY+F3x4+R2 \
6158 --threads 1
62-
6359CB2=(csubst_cb_* .tsv)
64- [ ${# CB2[@]} -ge 1 ] || { echo " ERROR: GY 実行後に cb TSV がありません " ; exit 1; }
60+ [ ${# CB2[@]} -ge 1 ] || { echo " ERROR: GY 実行後に cb TSV が無い " ; exit 1; }
6561
66- # アーティファクト収集
62+ # アーティファクト収集(任意)
6763ART=" $WORKDIR /_artifacts_cli"
6864mkdir -p " $ART "
6965cp -v csubst_cb_* .tsv " $ART " 2> /dev/null || true
0 commit comments