我想编写一些代码来执行以下操作:
如果输入文件(例如:"file.out"
)包含"n failures, n errors"
,"n failures, 0 errors"
或"0 failures, n errors"
(其中n >= 1
)等信息,然后puts "script failed"
(因为显示失败或错误)。
如果输入文件包含信息:"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
我该如何做到这一点?
答案 0 :(得分: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")
答案 1 :(得分: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