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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
require_relative '../spec_helper'
describe "``" do
it "returns the output of the executed sub-process" do
ip = 'world'
`echo disc #{ip}`.should == "disc world\n"
end
it "can be redefined and receive a frozen string as argument" do
called = false
runner = Object.new
runner.singleton_class.define_method(:`) do |str|
called = true
str.should == "test command"
str.frozen?.should == true
end
runner.instance_exec do
`test command`
end
called.should == true
end
it "the argument isn't frozen if it contains interpolation" do
called = false
runner = Object.new
runner.singleton_class.define_method(:`) do |str|
called = true
str.should == "test command"
str.frozen?.should == false
str << "mutated"
end
2.times do
runner.instance_exec do
`test #{:command}` # rubocop:disable Lint/LiteralInInterpolation
end
end
called.should == true
end
end
describe "%x" do
it "is the same as ``" do
ip = 'world'
%x(echo disc #{ip}).should == "disc world\n"
end
it "can be redefined and receive a frozen string as argument" do
called = false
runner = Object.new
runner.singleton_class.define_method(:`) do |str|
called = true
str.should == "test command"
str.frozen?.should == true
end
runner.instance_exec do
%x{test command}
end
called.should == true
end
it "the argument isn't frozen if it contains interpolation" do
called = false
runner = Object.new
runner.singleton_class.define_method(:`) do |str|
called = true
str.should == "test command"
str.frozen?.should == false
str << "mutated"
end
2.times do
runner.instance_exec do
%x{test #{:command}} # rubocop:disable Lint/LiteralInInterpolation
end
end
called.should == true
end
end
|