Aruba で標準入力への書き込みに問題があります。私は3つのアプローチを試みました。
アプローチ 1:
Scenario: Write to stdin take 1
Given a file named "infile" with:
"""
Hello World!
"""
When I run `cat < infile`
Then the output should contain exactly:
"""
Hello World!
"""
このため、次のエラーが発生します。
expected: "Hello World!"
got: "Hello World!cat: <: No such file or directory\n" (using ==)
Diff:
@@ -1,2 +1,2 @@
-Hello World!
+Hello World!cat: <: No such file or directory
(RSpec::Expectations::ExpectationNotMetError)
features/cgi.feature:17:in `Then the output should contain exactly:'
Aruba は「<」を文字どおりに渡しますが、シェルはパイプを使っていくつかの魔法を行います。
アプローチ 2:
Scenario: Write to stdin take 2
When I run `cat` interactively
And I type "Hello World!"
Then the output should contain:
"""
Hello World!
"""
次のエラーが表示されます。
process still alive after 3 seconds (ChildProcess::TimeoutError)
features/cgi.feature:25:in `Then the output should contain:'
わかりませんが、猫はEOF文字を受け取っていないため、猫は開いたままになり、書き込み前にさらなる入力を待ちます。入力の終了を知らせる方法はありますか?
アプローチ 3:
Scenario: Write to stdin take 1
Given a file named "infile" with:
"""
Hello World!
"""
When I run `sh -c "cat < infile"`
Then the output should contain exactly:
"""
Hello World!
"""
このアプローチは機能しますが、シェル プロセスを介して入力を渡すことは理想的なソリューションではないようです。
これはかなり標準的な要件であると予想していましたが、まだ機能させることに成功していません。
助言がありますか?
ありがとう。