7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon Linux 2023 + ShellSpecでシェルスクリプトのテスト環境を構築する方法

Last updated at Posted at 2025-03-11

1.はじめに

あるシェルスクリプトの単体テストを実施することになりました。
参画しているプロジェクトでは、
シェルスクリプトの単体テストを行ったことがなかったため
そこで初めて「ShellSpec」というテストフレームワークを知りました。

この記事では、シェルスクリプトの単体テストを初めて行う方向けに
ShellSpecの導入方法を分かりやすく解説します。

2.ShellSpecって何?

シェルスクリプトをテストするためのツールで、
簡単にシェルスクリプトの単体テストを実行することができます。
テスト結果は簡潔なレポートとして出力されます。
さらに、カバレッジも取得できます。

公式リファレンスはこちらです。
README
公式サイト

3.実際にShellSpecを導入してみよう!

前提条件

こちらの記事では、Amazon Linux 2023をプラットフォームに持つ、
AWS Cloud9環境上でテストを行います。
プラットフォームは、AWS Cloud9のコンソール画面から
使用する環境を押下すると確認できます。
なお、既にCloud9のインスタンスがあるAWSアカウントでは新規作成が可能ですが、
まだCloud9のインスタンスが存在しないAWSアカウントでは新規作成ができませんので
ご注意ください。
Cloud9の新規受付終了について

ShellSpecのインストール

以下のコマンドをターミナルで実行してください。

wget -O- https://git.io/shellspec | sh
cd /YOUR/PROJECT
shellspec --init

下記2ファイルが作成されていることを確認してください。
.shellspec
spec/spec_helper.sh

4.ShellSpecの基本的な使い方

以下のようなシェルスクリプトをテストする場合を例に説明します。

hello.sh
#!/bin/bash

echo 'Hello ShellSpec!'

echoで出力された内容を検証するテストは以下のように書きます。

hello_spec.sh
Describe 'hello.sh'
  It 'hello.sh'
    # hello.shを実行して、その出力内容を検証するテスト
    When run shell/hello.sh # hello.shを実行
    The output should equal 'Hello ShellSpec!' # 実行結果が期待通りか確認
  End  
End

フォルダ構成は以下の通りです。
テスト対象のシェルスクリプトはshell配下に作成し、
テスト仕様のシェルスクリプトはspec配下に、
_spec.shで終わるファイル名で作成しました。

/projectX
├── spec/
│   ├── hello_spec.sh
│   └── spec_helper.sh
├── shell/
│   └── hello.sh
└── .shellspec

実行結果

.shellspecのある階層で$ shellspecを実行します。
実行結果が以下のように表示され、テストが成功していることが分かります。

{自分の環境名}:~/environment/projectX $ shellspec
Running: /bin/sh [bash 5.2.15(1)-release]
.

Finished in 0.23 seconds (user 0.19 seconds, sys 0.00 seconds)
1 example, 0 failures # 成功した場合は"0 failures"となります。

失敗した場合は、以下のように表示されます。

{自分の環境名}:~/environment/projectX $ shellspec
Running: /bin/sh [bash 5.2.15(1)-release]
F

Examples:
  a) ERROR: An error occurred in hogehogehoge (exit status: huga)

       hoge.sh: line 44: huga: hogehogehoge

     # spec/hello_spec.sh:3

  1) hello.sh
     1.1) hogehogehoge

          # spec/hello.sh:1

Finished in 0.23 seconds (user 0.15 seconds, sys 0.04 seconds)
1 example, 1 failure, 1 error

ポイント

  • シェバンはbashを推奨します

シェバンとは、スクリプトを実行する際に使われるシェルを指定する記述のことで、
スクリプトファイルの先頭に書かれている#!/bin/bashを指します。

推奨する理由は以下の2点です。

  1. Amazon Linux 2023のデフォルトシェルがbashであること
    $ echo $SHELLで確認できます
  2. 次の記事で投稿予定のカバレッジを取得するためにはbashである必要があること
  • spec/hoge_spec.shというファイルがテスト仕様と認識されます

デフォルトでは、 specフォルダ配下の_spec.shで終わるファイル
テストとして認識されます。

5.まとめ

シェルスクリプトのテストフレームワーク「ShellSpec」を
Amazon Linux 2023で導入し、簡単なテストの実行方法をご紹介しました。
Ubuntuで解説されている記事が多かったため、
RedHat系のAmazon Linux 2023での試行結果として、ご参考になれば幸いです。

次の記事では、カバレッジの取得方法をご紹介いたします。

7
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
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?