-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
動作テストの実装 〜 ヘルプ表示編 〜( Issue #14) #18
Conversation
1b41c42
to
ff2808a
Compare
う〜ん。基本動作のテストをしようにも色々と関数化しないとテストできないや。 例えば
unixtime() { date +%s; }
Describe 'unixtime return value'
Mock date
echo 1546268400
End
It 'should return the mocked value'
When call unixtime
The output should eq 1546268400
End
End (Mocking @ shellspec.info より) つまり、引数の なので、必要最低限な箇所の関数化もすることにしよう。 |
curl をモック化できればいい感じですかね (関数のモックと同様にコマンドのモックもできるってどこかで見かけた気がするのですが、関数内限定ということなのかな) |
手元で curl のモックができないのか確認してみたのですが、モック可能のようです。 hello.sh: #!/bin/bash
curl -s https://github.com/KEINOS.keys spec/hello_spec.sh: # shellcheck shell=sh
Describe "hello"
Mock curl
echo "hello"
End
It 'curl test'
When run source ./hello.sh
The output should eq 'hello'
End
End 私、何か勘違いしてますかね? |
O! M! G! 😱 そうじゃん!それ一発だけで結構テストできそうじゃん!さすが!! こういうイメージよね。(バイナリで文字列比較ができるのかってのもあるけど) Describe 'enc command'
Mock curl
echo [ここにダミーの公開鍵]
End
It 'should return the mocked value'
When run enc KEINOS "/path/to/test/data.txt" "/path/to/encoded/data.enc"
expect=$(cat "/path/to/test/data.enc")
actual=$(cat "/path/to/encoded/data.enc")
The path "/path/to/encoded/data.enc" should be file
The variable "$expect" should equal "$actual"
End
End 関数化とそのテストをはじめちゃったので、一旦それらをスタッシュして、 ありがとうござい 💪 !!! |
おお、その動きだとできそうですね!!あざっす!! |
e4fa961
to
431bc3f
Compare
全部のコマンドのテストの実装を 1 つの PR でやるのは粒度が大きいので、一旦テストのベースだけを PR しようと思います。 |
なんか、 全コマンドの基本テストは、わたし荷は重かったでごめんなさい。 |
各コマンドが「引数なし」で呼ばれた場合に、ヘルプの表示とステータス 1 で終了するかのテスト。
* ed25519 と rsa (4096 bit) の鍵ペアで、パスフレーズ「あり」と「なし」の両方の 4 つを設置 * 古い OpenSSH のバージョン用は別途コミット
```shellsession @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for '/tmp/KEINOS..pub' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. ```
- パス指定でコマンド実行に変更
3ca5ed2
to
0d000bd
Compare
basic テストでなく arg がない場合のテストなので、ファイル名からわかるようにした。
コミット数多めで申し訳ありませんが、お手隙にレビューお願いします。m(_ _)m |
そうなんですよね。ソース内に埋め込みどころか、全部盛り盛りにファイルをぶっ込んでますもんね。 なんか IT 系ニュースとかで、それっぽい話を見た気もするのですが、公式には載ってなくて。サードパーティの GitHub App などはあるみたいなのですが。 なので、(今後テストに必要になるし)とりあえずマージして、警告が出たら OptOut する設定が出てくると思うので、報告したいと思います。 |
ドラフト〜
やること
./tests/.ssh
./.github/run-test.sh
可能ならやりたいこと
やらないこと
Note
rebase
&force push
でmain
ブランチの変更に追随します。