aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test/formula_pin_test.rb
blob: 7e3c7efa0474cdf5cbd0260f57a02b0b3f7f2305 (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
require "testing_env"
require "formula_pin"

class FormulaPinTests < Homebrew::TestCase
  class FormulaDouble
    def name
      "double"
    end

    def rack
      HOMEBREW_CELLAR/name
    end

    def installed_prefixes
      rack.directory? ? rack.subdirs : []
    end

    def installed_kegs
      installed_prefixes.map { |d| Keg.new d }
    end
  end

  def setup
    super
    @f   = FormulaDouble.new
    @pin = FormulaPin.new(@f)
    @f.rack.mkpath
  end

  def test_not_pinnable
    refute_predicate @pin, :pinnable?
  end

  def test_pinnable_if_kegs_exist
    (@f.rack/"0.1").mkpath
    assert_predicate @pin, :pinnable?
  end

  def test_unpin
    (@f.rack/"0.1").mkpath
    @pin.pin

    assert_predicate @pin, :pinned?
    assert_equal 1, HOMEBREW_PINNED_KEGS.children.length

    @pin.unpin

    refute_predicate @pin, :pinned?
    refute_predicate HOMEBREW_PINNED_KEGS, :directory?
  end
end