Skip to content

Commit baf5738

Browse files
Earlopaineregon
authored andcommitted
Clean up remaining core aliased methods
And also one for zlib. Previously I just checked core/*/shared. But some didn't use that, and others I skipped by accident. I used the following script (with `--disable-gems`) to find aliased methods: ```rb require "objspace" r = {} ObjectSpace.each_object(Module) do |mod| next if mod.inspect.include?("<Object:") methods = mod.public_instance_methods.map { mod.instance_method(it) } methods += mod.public_methods.map { mod.method(it) } methods.each do |meth| to_find = methods.select { it.name != meth.name } next if to_find.none? { it == meth } next if meth.owner != (meth.is_a?(Method) ? mod.singleton_class : mod ) r[mod] ||= [] r[mod] << meth end end r = r.transform_values do |methods| methods.group_by(&:itself).values end pp r ```
1 parent b359e18 commit baf5738

51 files changed

Lines changed: 356 additions & 391 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

core/basicobject/equal_spec.rb

Lines changed: 2 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,7 @@
11
require_relative '../../spec_helper'
2-
require_relative '../../shared/kernel/equal'
32

43
describe "BasicObject#equal?" do
5-
it "is a public instance method" do
6-
BasicObject.public_instance_methods(false).should.include?(:equal?)
7-
end
8-
9-
it_behaves_like :object_equal, :equal?
10-
11-
it "is unaffected by overriding __id__" do
12-
o1 = mock("object")
13-
o2 = mock("object")
14-
suppress_warning {
15-
def o1.__id__; 10; end
16-
def o2.__id__; 10; end
17-
}
18-
o1.equal?(o2).should == false
19-
end
20-
21-
it "is unaffected by overriding object_id" do
22-
o1 = mock("object")
23-
o1.stub!(:object_id).and_return(10)
24-
o2 = mock("object")
25-
o2.stub!(:object_id).and_return(10)
26-
o1.equal?(o2).should == false
27-
end
28-
29-
it "is unaffected by overriding ==" do
30-
# different objects, overriding == to return true
31-
o1 = mock("object")
32-
o1.stub!(:==).and_return(true)
33-
o2 = mock("object")
34-
o1.equal?(o2).should == false
35-
36-
# same objects, overriding == to return false
37-
o3 = mock("object")
38-
o3.stub!(:==).and_return(false)
39-
o3.equal?(o3).should == true
40-
end
41-
42-
it "is unaffected by overriding eql?" do
43-
# different objects, overriding eql? to return true
44-
o1 = mock("object")
45-
o1.stub!(:eql?).and_return(true)
46-
o2 = mock("object")
47-
o1.equal?(o2).should == false
48-
49-
# same objects, overriding eql? to return false
50-
o3 = mock("object")
51-
o3.stub!(:eql?).and_return(false)
52-
o3.equal?(o3).should == true
4+
it "is an alias of BasicObject#==" do
5+
BasicObject.instance_method(:equal?).should == BasicObject.instance_method(:==)
536
end
547
end

core/basicobject/equal_value_spec.rb

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,48 @@
77
end
88

99
it_behaves_like :object_equal, :==
10+
11+
it "is unaffected by overriding __id__" do
12+
o1 = mock("object")
13+
o2 = mock("object")
14+
suppress_warning {
15+
def o1.__id__; 10; end
16+
def o2.__id__; 10; end
17+
}
18+
(o1 == o2).should == false
19+
end
20+
21+
it "is unaffected by overriding object_id" do
22+
o1 = mock("object")
23+
o1.stub!(:object_id).and_return(10)
24+
o2 = mock("object")
25+
o2.stub!(:object_id).and_return(10)
26+
(o1 == o2).should == false
27+
end
28+
29+
it "is unaffected by overriding equal?" do
30+
# different objects, overriding equal? to return true
31+
o1 = mock("object")
32+
o1.stub!(:equal?).and_return(true)
33+
o2 = mock("object")
34+
(o1 == o2).should == false
35+
36+
# same objects, overriding equal? to return false
37+
o3 = mock("object")
38+
o3.stub!(:equal?).and_return(false)
39+
(o3 == o3).should == true
40+
end
41+
42+
it "is unaffected by overriding eql?" do
43+
# different objects, overriding eql? to return true
44+
o1 = mock("object")
45+
o1.stub!(:eql?).and_return(true)
46+
o2 = mock("object")
47+
(o1 == o2).should == false
48+
49+
# same objects, overriding eql? to return false
50+
o3 = mock("object")
51+
o3.stub!(:eql?).and_return(false)
52+
(o3 == o3).should == true
53+
end
1054
end

core/dir/delete_spec.rb

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
require_relative '../../spec_helper'
22
require_relative 'fixtures/common'
3-
require_relative 'shared/delete'
43

54
describe "Dir.delete" do
65
before :all do
@@ -11,5 +10,55 @@
1110
DirSpecs.delete_mock_dirs
1211
end
1312

14-
it_behaves_like :dir_delete, :delete
13+
before :each do
14+
DirSpecs.rmdir_dirs true
15+
end
16+
17+
after :each do
18+
DirSpecs.rmdir_dirs false
19+
end
20+
21+
it "removes empty directories" do
22+
Dir.delete(DirSpecs.mock_rmdir("empty")).should == 0
23+
end
24+
25+
it "calls #to_path on non-String arguments" do
26+
p = mock('path')
27+
p.should_receive(:to_path).and_return(DirSpecs.mock_rmdir("empty"))
28+
Dir.delete(p)
29+
end
30+
31+
it "raises an Errno::ENOTEMPTY when trying to remove a nonempty directory" do
32+
-> do
33+
Dir.delete DirSpecs.mock_rmdir("nonempty")
34+
end.should.raise(Errno::ENOTEMPTY)
35+
end
36+
37+
it "raises an Errno::ENOENT when trying to remove a non-existing directory" do
38+
-> do
39+
Dir.delete DirSpecs.nonexistent
40+
end.should.raise(Errno::ENOENT)
41+
end
42+
43+
it "raises an Errno::ENOTDIR when trying to remove a non-directory" do
44+
file = DirSpecs.mock_rmdir("nonempty/regular")
45+
touch(file)
46+
-> do
47+
Dir.delete file
48+
end.should.raise(Errno::ENOTDIR)
49+
end
50+
51+
# this won't work on Windows, since chmod(0000) does not remove all permissions
52+
platform_is_not :windows do
53+
as_user do
54+
it "raises an Errno::EACCES if lacking adequate permissions to remove the directory" do
55+
parent = DirSpecs.mock_rmdir("noperm")
56+
child = DirSpecs.mock_rmdir("noperm", "child")
57+
File.chmod(0000, parent)
58+
-> do
59+
Dir.delete child
60+
end.should.raise(Errno::EACCES)
61+
end
62+
end
63+
end
1564
end

core/dir/rmdir_spec.rb

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,7 @@
11
require_relative '../../spec_helper'
2-
require_relative 'fixtures/common'
3-
require_relative 'shared/delete'
42

53
describe "Dir.rmdir" do
6-
before :all do
7-
DirSpecs.create_mock_dirs
4+
it "is an alias of Dir.delete" do
5+
Dir.method(:rmdir).should == Dir.method(:delete)
86
end
9-
10-
after :all do
11-
DirSpecs.delete_mock_dirs
12-
end
13-
14-
it_behaves_like :dir_delete, :rmdir
157
end

core/dir/shared/delete.rb

Lines changed: 0 additions & 53 deletions
This file was deleted.

core/dir/unlink_spec.rb

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,7 @@
11
require_relative '../../spec_helper'
2-
require_relative 'fixtures/common'
3-
require_relative 'shared/delete'
42

53
describe "Dir.unlink" do
6-
before :all do
7-
DirSpecs.create_mock_dirs
4+
it "is an alias of Dir.delete" do
5+
Dir.method(:unlink).should == Dir.method(:delete)
86
end
9-
10-
after :all do
11-
DirSpecs.delete_mock_dirs
12-
end
13-
14-
it_behaves_like :dir_delete, :unlink
157
end

core/false/inspect_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
require_relative '../../spec_helper'
22

33
describe "FalseClass#inspect" do
4-
it "returns the string 'false'" do
5-
false.inspect.should == "false"
4+
it "is an alias of FalseClass#to_s" do
5+
false.method(:inspect).should == false.method(:to_s)
66
end
77
end

core/false/xor_spec.rb

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
require_relative '../../spec_helper'
22

33
describe "FalseClass#^" do
4-
it "returns false if other is nil or false, otherwise true" do
5-
(false ^ false).should == false
6-
(false ^ true).should == true
7-
(false ^ nil).should == false
8-
(false ^ "").should == true
9-
(false ^ mock('x')).should == true
4+
it "is an alias of FalseClass#|" do
5+
false.method(:^).should == false.method(:|)
106
end
117
end

core/file/zero_spec.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
require_relative '../../spec_helper'
2-
require_relative '../../shared/file/zero'
32

43
describe "File.zero?" do
5-
it_behaves_like :file_zero, :zero?, File
6-
it_behaves_like :file_zero_missing, :zero?, File
4+
it "is an alias of File.empty?" do
5+
File.method(:zero?).should == File.method(:empty?)
6+
end
77
end

core/filetest/empty_spec.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
require_relative '../../spec_helper'
2+
require_relative '../../shared/file/zero'
3+
4+
describe "FileTest.empty?" do
5+
it_behaves_like :file_zero, :empty?, FileTest
6+
it_behaves_like :file_zero_missing, :empty?, FileTest
7+
end

0 commit comments

Comments
 (0)