Class: RSpec::Matchers::BuiltIn::RaiseError Private

Inherits:
Object
  • Object
show all
Includes:
Composable
Defined in:
lib/rspec/matchers/built_in/raise_error.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Provides the implementation for raise_error. Not intended to be instantiated directly. rubocop:disable ClassLength rubocop:disable RescueException

Constant Summary collapse

UndefinedValue =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Used as a sentinel value to be able to tell when the user did not pass an argument. We can't use nil for that because we need to warn when nil is passed in a different way. It's an Object, not a Module, since Module's === does not evaluate to true when compared to itself.

Object.new.freeze

Instance Method Summary collapse

Methods included from Composable

#===, #and, #description_of, #or, should_enumerate?, surface_descriptions_in, unreadable_io?, #values_match?

Constructor Details

#initialize(expected_error_or_message, expected_message, &block) ⇒ RaiseError

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of RaiseError.


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/rspec/matchers/built_in/raise_error.rb', line 18

def initialize(expected_error_or_message, expected_message, &block)
  @block = block
  @actual_error = nil
  @warn_about_bare_error = UndefinedValue === expected_error_or_message
  @warn_about_nil_error = expected_error_or_message.nil?

  case expected_error_or_message
  when nil, UndefinedValue
    @expected_error = Exception
    @expected_message = expected_message
  when String
    @expected_error = Exception
    @expected_message = expected_error_or_message
  else
    @expected_error = expected_error_or_message
    @expected_message = expected_message
  end
end

Instance Method Details

#descriptionString

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (String)

107
108
109
# File 'lib/rspec/matchers/built_in/raise_error.rb', line 107

def description
  "raise #{expected_error}"
end

#expects_call_stack_jump?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)

89
90
91
# File 'lib/rspec/matchers/built_in/raise_error.rb', line 89

def expects_call_stack_jump?
  true
end

#failure_messageString

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (String)

95
96
97
# File 'lib/rspec/matchers/built_in/raise_error.rb', line 95

def failure_message
  @eval_block ? @actual_error.message : "expected #{expected_error}#{given_error}"
end

#failure_message_when_negatedString

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (String)

101
102
103
# File 'lib/rspec/matchers/built_in/raise_error.rb', line 101

def failure_message_when_negated
  "expected no #{expected_error}#{given_error}"
end

#with_message(expected_message) ⇒ Object

Specifies the expected error message.


39
40
41
42
43
44
# File 'lib/rspec/matchers/built_in/raise_error.rb', line 39

def with_message(expected_message)
  raise_message_already_set if @expected_message
  @warn_about_bare_error = false
  @expected_message = expected_message
  self
end