update allocation location tests
This commit is contained in:
parent
8ac8225c50
commit
3552d446ca
@ -2,6 +2,20 @@ require_relative '../../spec_helper'
|
|||||||
require 'objspace'
|
require 'objspace'
|
||||||
|
|
||||||
describe "ObjectSpace.trace_object_allocations" do
|
describe "ObjectSpace.trace_object_allocations" do
|
||||||
|
def has_class_frame?
|
||||||
|
Class.new {
|
||||||
|
attr_reader :c
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
@c = caller_locations.first.label =~ /new/
|
||||||
|
end
|
||||||
|
}.new.c
|
||||||
|
end
|
||||||
|
|
||||||
|
def obj_class_path
|
||||||
|
has_class_frame? ? "Class" : nil
|
||||||
|
end
|
||||||
|
|
||||||
it "runs a block" do
|
it "runs a block" do
|
||||||
ScratchPad.clear
|
ScratchPad.clear
|
||||||
ObjectSpace.trace_object_allocations do
|
ObjectSpace.trace_object_allocations do
|
||||||
@ -13,7 +27,7 @@ describe "ObjectSpace.trace_object_allocations" do
|
|||||||
it "records info for allocation_class_path" do
|
it "records info for allocation_class_path" do
|
||||||
ObjectSpace.trace_object_allocations do
|
ObjectSpace.trace_object_allocations do
|
||||||
o = Object.new
|
o = Object.new
|
||||||
ObjectSpace.allocation_class_path(o).should == "Class"
|
ObjectSpace.allocation_class_path(o).should == obj_class_path
|
||||||
a = [1, 2, 3]
|
a = [1, 2, 3]
|
||||||
ObjectSpace.allocation_class_path(a).should == nil
|
ObjectSpace.allocation_class_path(a).should == nil
|
||||||
end
|
end
|
||||||
@ -31,7 +45,7 @@ describe "ObjectSpace.trace_object_allocations" do
|
|||||||
it "records info for allocation_method_id" do
|
it "records info for allocation_method_id" do
|
||||||
ObjectSpace.trace_object_allocations do
|
ObjectSpace.trace_object_allocations do
|
||||||
o = Object.new
|
o = Object.new
|
||||||
ObjectSpace.allocation_method_id(o).should == :new
|
ObjectSpace.allocation_method_id(o).should == (has_class_frame? ? :new : nil)
|
||||||
a = [1, 2, 3]
|
a = [1, 2, 3]
|
||||||
ObjectSpace.allocation_method_id(a).should == nil
|
ObjectSpace.allocation_method_id(a).should == nil
|
||||||
end
|
end
|
||||||
@ -58,7 +72,7 @@ describe "ObjectSpace.trace_object_allocations" do
|
|||||||
it "can be cleared using trace_object_allocations_clear" do
|
it "can be cleared using trace_object_allocations_clear" do
|
||||||
ObjectSpace.trace_object_allocations do
|
ObjectSpace.trace_object_allocations do
|
||||||
o = Object.new
|
o = Object.new
|
||||||
ObjectSpace.allocation_class_path(o).should == "Class"
|
ObjectSpace.allocation_class_path(o).should == obj_class_path
|
||||||
ObjectSpace.trace_object_allocations_clear
|
ObjectSpace.trace_object_allocations_clear
|
||||||
ObjectSpace.allocation_class_path(o).should be_nil
|
ObjectSpace.allocation_class_path(o).should be_nil
|
||||||
end
|
end
|
||||||
@ -69,14 +83,14 @@ describe "ObjectSpace.trace_object_allocations" do
|
|||||||
ObjectSpace.trace_object_allocations do
|
ObjectSpace.trace_object_allocations do
|
||||||
o = Object.new
|
o = Object.new
|
||||||
end
|
end
|
||||||
ObjectSpace.allocation_class_path(o).should == "Class"
|
ObjectSpace.allocation_class_path(o).should == obj_class_path
|
||||||
end
|
end
|
||||||
|
|
||||||
it "can be used without a block using trace_object_allocations_start and _stop" do
|
it "can be used without a block using trace_object_allocations_start and _stop" do
|
||||||
ObjectSpace.trace_object_allocations_start
|
ObjectSpace.trace_object_allocations_start
|
||||||
begin
|
begin
|
||||||
o = Object.new
|
o = Object.new
|
||||||
ObjectSpace.allocation_class_path(o).should == "Class"
|
ObjectSpace.allocation_class_path(o).should == obj_class_path
|
||||||
a = [1, 2, 3]
|
a = [1, 2, 3]
|
||||||
ObjectSpace.allocation_class_path(a).should == nil
|
ObjectSpace.allocation_class_path(a).should == nil
|
||||||
ensure
|
ensure
|
||||||
@ -91,14 +105,14 @@ describe "ObjectSpace.trace_object_allocations" do
|
|||||||
ensure
|
ensure
|
||||||
ObjectSpace.trace_object_allocations_stop
|
ObjectSpace.trace_object_allocations_stop
|
||||||
end
|
end
|
||||||
ObjectSpace.allocation_class_path(o).should == "Class"
|
ObjectSpace.allocation_class_path(o).should == obj_class_path
|
||||||
end
|
end
|
||||||
|
|
||||||
it "can be nested" do
|
it "can be nested" do
|
||||||
ObjectSpace.trace_object_allocations do
|
ObjectSpace.trace_object_allocations do
|
||||||
ObjectSpace.trace_object_allocations do
|
ObjectSpace.trace_object_allocations do
|
||||||
o = Object.new
|
o = Object.new
|
||||||
ObjectSpace.allocation_class_path(o).should == "Class"
|
ObjectSpace.allocation_class_path(o).should == obj_class_path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -109,7 +123,7 @@ describe "ObjectSpace.trace_object_allocations" do
|
|||||||
ObjectSpace.trace_object_allocations_start
|
ObjectSpace.trace_object_allocations_start
|
||||||
begin
|
begin
|
||||||
o = Object.new
|
o = Object.new
|
||||||
ObjectSpace.allocation_class_path(o).should == "Class"
|
ObjectSpace.allocation_class_path(o).should == obj_class_path
|
||||||
ensure
|
ensure
|
||||||
ObjectSpace.trace_object_allocations_stop
|
ObjectSpace.trace_object_allocations_stop
|
||||||
end
|
end
|
||||||
@ -122,7 +136,7 @@ describe "ObjectSpace.trace_object_allocations" do
|
|||||||
ObjectSpace.trace_object_allocations_start
|
ObjectSpace.trace_object_allocations_start
|
||||||
begin
|
begin
|
||||||
o = Object.new
|
o = Object.new
|
||||||
ObjectSpace.allocation_class_path(o).should == "Class"
|
ObjectSpace.allocation_class_path(o).should == obj_class_path
|
||||||
ObjectSpace.trace_object_allocations_stop
|
ObjectSpace.trace_object_allocations_stop
|
||||||
ensure
|
ensure
|
||||||
ObjectSpace.trace_object_allocations_stop
|
ObjectSpace.trace_object_allocations_stop
|
||||||
|
Loading…
x
Reference in New Issue
Block a user