🦁
「変更ファイルのみ一括でテスト」をすばやく行う!
概要
テストケースを追加するタスクを行っているときに、
変更したファイルのみテストを実行したいときがある。
ファイル名の上で右クリックして、相対パスを取得するのがめんどくさい。
イメージ
なるべく簡単に実行する方法について説明する。
対象読者
- git初心者
- 駆け出しエンジニア
- テストケース実装中の人
いいね!してね
この記事の事例は必要に応じて今後追記していく予定です!
「新しい事例が知りたい」「他の事例も知りたい」と思った人は、ぜひこの記事にいいね👍してください。筆者のモチベーションにつながります!
それでは以下が本編です。
結論
1 変更ファイル一覧をテスト実行しやすい形式で出力させる
git status --porcelain | awk '{print substr($0, index($0,$2))}' | sed "s/^$(basename $(pwd))\///" | awk 'NR>1{print last " \\"} {last=$0} END {print last}'
↓
test/spec/signup/new.spec.ts \
test/spec/signup/confirm.spec.ts \
test/spec/signup/completed.spec.ts \
test/spec/signup/new/email-confirmation.spec.ts \
test/spec/signup/new/email-confirmed.spec.ts
2 テスト実行コマンド(例: npm run test)に続けてペーストする
npm run test test/spec/signup/new.spec.ts \
test/spec/signup/confirm.spec.ts \
test/spec/signup/completed.spec.ts \
test/spec/signup/new/email-confirmation.spec.ts \
test/spec/signup/new/email-confirmed.spec.ts
説明すること
- 実行しやすいファイルパスを取得する
- コマンドをいつでもペーストできるようにする
実行しやすいファイルパスを取得する
前提: プロジェクトルートディレクトリ(例: app)で実行する前提
git status
を実行すると通常下記のような形式で出力される
git status
↓
modified: test/spec/signup/new.spec.ts
modified: test/spec/signup/confirm.spec.ts
modified: test/spec/signup/completed.spec.ts
modified: test/spec/signup/new/email-confirmation.spec.ts
modified: test/spec/signup/new/email-confirmed.spec.ts
これをテスト対象ファイルパスとして整形する
※ちなみにchatGPTでコマンドを生成した
git status --porcelain | awk '{print substr($0, index($0,$2))}' | sed "s/^$(basename $(pwd))\///" | awk 'NR>1{print last " \\"} {last=$0} END {print last}'
↓
# ルートディレクトリ直下の変更ファイル名のみ表示される
test/spec/signup/new.spec.ts \
test/spec/signup/confirm.spec.ts \
test/spec/signup/completed.spec.ts \
test/spec/signup/new/email-confirmation.spec.ts \
test/spec/signup/new/email-confirmed.spec.ts
ポイント
- terminal上では、バックスラッシュで改行できる!
- spec以外のファイルも含めてOK(実行時に無視されるから)!
コマンドをいつでもペーストできるようにする
コマンドを毎回コピペすると手間なので、該当コマンドをclipboard系のアプリに登録しておく。
今回は、MacでClipyを使用した例を紹介する。
※WindowsではCliborというアプリがあるらしい。
git status --porcelain | awk '{print substr($0, index($0,$2))}' | sed "s/^$(basename $(pwd))\///" | awk 'NR>1{print last " \\"} {last=$0} END {print last}'
cmd + shift + v
を押すと、登録したスニペットが表示される。
選択すると対応する値をカーソルにペーストできる!
まとめ
なるべく手作業で行う処理をなくして、快適な開発ライフを送りましょう!
この記事が参考になった方は、ぜひこの記事にいいね👍してください。筆者のモチベーションにつながります!
Discussion
TODO 変更ファイル一覧をコピペするステップを省きたい