A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/ruby/spec/commit/93787e6035c925b593a9c0c6fb0e7e07a6f1df1f below:

Merge pull request #1040 from AI-Mozi/add_specs_for_thread_each_calle… · ruby/spec@93787e6 · GitHub

File tree Expand file treeCollapse file tree 1 file changed

+55

-0

lines changed

Filter options

Expand file treeCollapse file tree 1 file changed

+55

-0

lines changed Original file line number Diff line number Diff line change

@@ -0,0 +1,55 @@

1 +

require_relative '../../spec_helper'

2 + 3 +

describe "Thread.each_caller_location" do

4 +

ruby_version_is "3.2" do

5 +

it "iterates through the current execution stack and matches caller_locations content and type" do

6 +

ScratchPad.record []

7 +

Thread.each_caller_location { |l| ScratchPad << l; }

8 + 9 +

ScratchPad.recorded.map(&:to_s).should == caller_locations.map(&:to_s)

10 +

ScratchPad.recorded[0].should be_kind_of(Thread::Backtrace::Location)

11 +

end

12 + 13 +

it "returns subset of 'Thread.to_enum(:each_caller_location)' locations" do

14 +

ar = []

15 +

ecl = Thread.each_caller_location { |x| ar << x }

16 + 17 +

(ar.map(&:to_s) - Thread.to_enum(:each_caller_location).to_a.map(&:to_s)).should.empty?

18 +

end

19 + 20 +

it "stops the backtrace iteration if 'break' occurs" do

21 +

i = 0

22 +

ar = []

23 +

ecl = Thread.each_caller_location do |x|

24 +

ar << x

25 +

i += 1

26 +

break x if i == 2

27 +

end

28 + 29 +

ar.map(&:to_s).should == caller_locations(1, 2).map(&:to_s)

30 +

ecl.should be_kind_of(Thread::Backtrace::Location)

31 +

end

32 + 33 +

it "returns nil" do

34 +

Thread.each_caller_location {}.should == nil

35 +

end

36 + 37 +

it "cannot be iterated with an external iterator" do

38 +

-> {

39 +

Thread.to_enum(:each_caller_location).next

40 +

}.should raise_error(StopIteration, "iteration reached an end")

41 +

end

42 + 43 +

it "raises LocalJumpError when called without a block" do

44 +

-> {

45 +

Thread.each_caller_location

46 +

}.should raise_error(LocalJumpError, "no block given")

47 +

end

48 + 49 +

it "doesn't accept positional and keyword arguments" do

50 +

-> {

51 +

Thread.each_caller_location(12, foo: 10) {}

52 +

}.should raise_error(ArgumentError, "wrong number of arguments (given 2, expected 0)")

53 +

end

54 +

end

55 +

end

You can’t perform that action at this time.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4