1

以下のことを行うコードを書きたいと思います。

  • 入力ファイル (例: ) に、、または(where )"file.out"のような情報が含まれている場合は、 (失敗またはエラーが表示されるため)。"n failures, n errors""n failures, 0 errors""0 failures, n errors"n >= 1puts "script failed"

  • 入力ファイルに info: が含まれている場合"0 failures, 0 errors"(puts "script passed"失敗やエラーが表示されないため)。

私は以下のようなものを書く必要があると思います (しかし、私が期待するシナリオとして正しく動作しません):

if open("#{file}.out").grep(/[1-9][0-9]* failures|[1-9][0-9]* errors/).length > 0
   puts "script passed"
else
   puts "script failed"
end

どうすればこれを達成できますか?

4

2 に答える 2

4
def check_script file
  open(file) do |io|
    io.read =~ /(\d+)\s+failures,\s+(\d+)\s+errors/
    puts "script #{$1 == "0" && $2 == "0" ? "passed" : "failed"}"
  end
end

使用法:

check_script("file.out")
于 2012-12-30T15:58:30.083 に答える
2

ファイルが含まれていると仮定

info: 0 failures, 0 errors

コードは

(File.open("#{file}.out").read).scan(/info: ([0-9]+) failures, ([0-9]+) errors/) do |failures, errors|
    puts (failures.to_i > 0 || errors.to_i > 0) ? "script failed" : "script passed"
end
于 2012-12-30T16:19:24.063 に答える