Skip to content

Commit

Permalink
Update to ruby/mspec@c25d63d
Browse files Browse the repository at this point in the history
  • Loading branch information
eregon committed Apr 28, 2019
1 parent bbb9360 commit 9948330
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 71 deletions.
32 changes: 2 additions & 30 deletions spec/mspec/lib/mspec/helpers/io.rb
Expand Up @@ -65,8 +65,6 @@ def inspect
# 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]
Expand All @@ -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
2 changes: 1 addition & 1 deletion spec/mspec/lib/mspec/utils/options.rb
Expand Up @@ -384,7 +384,7 @@ def randomize
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

Expand Down
42 changes: 2 additions & 40 deletions spec/mspec/spec/helpers/io_spec.rb
Expand Up @@ -64,7 +64,7 @@
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"

Expand All @@ -76,7 +76,7 @@
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"

Expand Down Expand Up @@ -134,41 +134,3 @@
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

0 comments on commit 9948330

Please sign in to comment.