blob: 4d3e0f46b32918fa582fa699b4d2c5bcb5e7873f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# Convenience helper for specs using ARGF.
# Set @argf to an instance of ARGF.class with the given +argv+.
# That instance must be used instead of ARGF as ARGF is global
# and it is not always possible to reset its state correctly.
#
# The helper yields to the block and then close
# the files open by the instance. Example:
#
# describe "That" do
# it "does something" do
# argf ['a', 'b'] do
# # do something
# end
# end
# end
def argf(argv)
if argv.empty? or argv.length > 2
raise "Only 1 or 2 filenames are allowed for the argf helper so files can be properly closed: #{argv.inspect}"
end
@argf ||= nil
raise "Cannot nest calls to the argf helper" if @argf
@argf = ARGF.class.new(*argv)
@__mspec_saved_argf_file__ = @argf.file
begin
yield
ensure
file1 = @__mspec_saved_argf_file__
file2 = @argf.file # Either the first file or the second
file1.close if !file1.closed? and file1 != STDIN
file2.close if !file2.closed? and file2 != STDIN
@argf = nil
@__mspec_saved_argf_file__ = nil
end
end
|