1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
This commit is contained in:
Benoit Daloze 2019-04-28 23:20:09 +02:00
parent bbb93608a3
commit 994833085a
3 changed files with 5 additions and 71 deletions

View file

@ -65,8 +65,6 @@ end
# with any Ruby object). The file descriptor can safely be passed
# to IO.new without creating a Ruby object alias to the fd.
def new_fd(name, mode="w:utf-8")
mode = options_or_mode(mode)
if mode.kind_of? Hash
if mode.key? :mode
mode = mode[:mode]
@ -75,41 +73,15 @@ def new_fd(name, mode="w:utf-8")
end
end
IO.sysopen name, fmode(mode)
IO.sysopen name, mode
end
# Creates an IO instance for a temporary file name. The file
# must be deleted.
def new_io(name, mode="w:utf-8")
IO.new new_fd(name, options_or_mode(mode)), options_or_mode(mode)
IO.new new_fd(name, mode), mode
end
def find_unused_fd
Dir.entries("/dev/fd").map(&:to_i).max + 1
end
# This helper simplifies passing file access modes regardless of
# whether the :encoding feature is enabled. Only the access specifier
# itself will be returned if :encoding is not enabled. Otherwise,
# the full mode string will be returned (i.e. the helper is a no-op).
def fmode(mode)
if FeatureGuard.enabled? :encoding
mode
else
mode.split(':').first
end
end
# This helper simplifies passing file access modes or options regardless of
# whether the :encoding feature is enabled. Only the access specifier itself
# will be returned if :encoding is not enabled. Otherwise, the full mode
# string or option will be returned (i.e. the helper is a no-op).
def options_or_mode(oom)
return fmode(oom) if oom.kind_of? String
if FeatureGuard.enabled? :encoding
oom
else
fmode(oom[:mode] || "r:utf-8")
end
end

View file

@ -384,7 +384,7 @@ class MSpecOptions
def repeat
on("-R", "--repeat", "NUMBER",
"Repeatedly run an example NUMBER times") do |o|
MSpec.repeat = o.to_i
MSpec.repeat = Integer(o)
end
end

View file

@ -64,7 +64,7 @@ describe Object, "#new_fd" do
fd = new_fd @name
fd.should be_kind_of(Integer)
@io = IO.new fd, fmode('w:utf-8')
@io = IO.new fd, 'w:utf-8'
@io.sync = true
@io.print "io data"
@ -76,7 +76,7 @@ describe Object, "#new_fd" do
fd = new_fd @name, { :mode => 'w:utf-8' }
fd.should be_kind_of(Integer)
@io = IO.new fd, fmode('w:utf-8')
@io = IO.new fd, 'w:utf-8'
@io.sync = true
@io.print "io data"
@ -134,41 +134,3 @@ describe Object, "#new_io" do
IO.read(@name).should == "io data"
end
end
describe Object, "#fmode" do
it "returns the argument unmodified if :encoding feature is enabled" do
FeatureGuard.should_receive(:enabled?).with(:encoding).and_return(true)
fmode("rb:binary:utf-8").should == "rb:binary:utf-8"
end
it "returns only the file access mode if :encoding feature is not enabled" do
FeatureGuard.should_receive(:enabled?).with(:encoding).and_return(false)
fmode("rb:binary:utf-8").should == "rb"
end
end
describe Object, "#options_or_mode" do
describe "if passed a Hash" do
it "returns a mode string if :encoding feature is not enabled" do
FeatureGuard.should_receive(:enabled?).with(:encoding).twice.and_return(false)
options_or_mode(:mode => "rb:binary").should == "rb"
end
it "returns a Hash if :encoding feature is enabled" do
FeatureGuard.should_receive(:enabled?).with(:encoding).and_return(true)
options_or_mode(:mode => "rb:utf-8").should == { :mode => "rb:utf-8" }
end
end
describe "if passed a String" do
it "returns only the file access mode if :encoding feature is not enabled" do
FeatureGuard.should_receive(:enabled?).with(:encoding).and_return(false)
options_or_mode("rb:binary:utf-8").should == "rb"
end
it "returns the argument unmodified if :encoding feature is enabled" do
FeatureGuard.should_receive(:enabled?).with(:encoding).and_return(true)
options_or_mode("rb:binary:utf-8").should == "rb:binary:utf-8"
end
end
end