aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test/rubocops/options_cop_spec.rb
blob: c27389a68b47a32bec096e90b9094fe40690f54f (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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
require "rubocop"
require "rubocop/rspec/support"
require_relative "../../extend/string"
require_relative "../../rubocops/options_cop"

describe RuboCop::Cop::FormulaAudit::Options do
  subject(:cop) { described_class.new }

  context "When auditing options" do
    it "32-bit" do
      source = <<-EOS.undent
        class Foo < Formula
          url 'http://example.com/foo-1.0.tgz'
          option "32-bit", "with 32-bit"
        end
      EOS

      expected_offenses = [{  message: described_class::DEPRECATION_MSG,
                              severity: :convention,
                              line: 3,
                              column: 10,
                              source: source }]

      inspect_source(source)

      expected_offenses.zip(cop.offenses).each do |expected, actual|
        expect_offense(expected, actual)
      end
    end
  end
end

describe RuboCop::Cop::FormulaAuditStrict::Options do
  subject(:cop) { described_class.new }

  context "When auditing options strictly" do
    it "with universal" do
      source = <<-EOS.undent
        class Foo < Formula
          url 'http://example.com/foo-1.0.tgz'
          option :universal
        end
      EOS

      expected_offenses = [{  message: described_class::DEPRECATION_MSG,
                              severity: :convention,
                              line: 3,
                              column: 2,
                              source: source }]

      inspect_source(source)

      expected_offenses.zip(cop.offenses).each do |expected, actual|
        expect_offense(expected, actual)
      end
    end

    it "with deprecated options" do
      source = <<-EOS.undent
        class Foo < Formula
          url 'http://example.com/foo-1.0.tgz'
          option :cxx11
          option "examples", "with-examples"
        end
      EOS

      MSG_1 = "Options should begin with with/without."\
              " Migrate '--examples' with `deprecated_option`.".freeze
      expected_offenses = [{  message: MSG_1,
                              severity: :convention,
                              line: 4,
                              column: 2,
                              source: source }]

      inspect_source(source)

      expected_offenses.zip(cop.offenses).each do |expected, actual|
        expect_offense(expected, actual)
      end
    end

    it "with misc deprecated options" do
      source = <<-EOS.undent
        class Foo < Formula
          url 'http://example.com/foo-1.0.tgz'
          option "without-check"
        end
      EOS

      MSG_2 = "Use '--without-test' instead of '--without-check'."\
              " Migrate '--without-check' with `deprecated_option`.".freeze
      expected_offenses = [{  message: MSG_2,
                              severity: :convention,
                              line: 3,
                              column: 2,
                              source: source }]

      inspect_source(source)

      expected_offenses.zip(cop.offenses).each do |expected, actual|
        expect_offense(expected, actual)
      end
    end
  end
end

describe RuboCop::Cop::NewFormulaAudit::Options do
  subject(:cop) { described_class.new }

  context "When auditing options for a new formula" do
    it "with deprecated options" do
      source = <<-EOS.undent
        class Foo < Formula
          url 'http://example.com/foo-1.0.tgz'
          deprecated_option "examples" => "with-examples"
        end
      EOS

      expected_offenses = [{  message: described_class::MSG,
                              severity: :convention,
                              line: 3,
                              column: 2,
                              source: source }]

      inspect_source(source)

      expected_offenses.zip(cop.offenses).each do |expected, actual|
        expect_offense(expected, actual)
      end
    end
  end
end