summaryrefslogtreecommitdiff
path: root/spec/ruby/core/warning/element_reference_spec.rb
blob: c0ed37ef139d050d7e12c0a50307f30339841026 (plain)
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
require_relative '../../spec_helper'

describe "Warning.[]" do
  it "returns default values for categories :deprecated and :experimental" do
    # If any warning options were set on the Ruby that will be executed, then
    # it's possible this test will fail. In this case we will skip this test.
    skip if ruby_exe.any? { |opt| opt.start_with?("-W") }

    ruby_exe('p [Warning[:deprecated], Warning[:experimental]]').chomp.should == "[false, true]"
    ruby_exe('p [Warning[:deprecated], Warning[:experimental]]', options: "-w").chomp.should == "[true, true]"
  end

  ruby_version_is '3.3' do
    it "returns default values for :performance category" do
      ruby_exe('p Warning[:performance]').chomp.should == "false"
      ruby_exe('p Warning[:performance]', options: "-w").chomp.should == "false"
    end
  end

  it "raises for unknown category" do
    -> { Warning[:noop] }.should raise_error(ArgumentError, /unknown category: noop/)
  end

  it "raises for non-Symbol category" do
    -> { Warning[42] }.should raise_error(TypeError)
    -> { Warning[false] }.should raise_error(TypeError)
    -> { Warning["noop"] }.should raise_error(TypeError)
  end
end