1

我想编写一些代码来执行以下操作:

  • 如果输入文件(例如:)"file.out"包含类似"n failures, n errors"、、"n failures, 0 errors""0 failures, n errors"(其中n >= 1)的信息,则puts "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 回答