aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test/test_dependency_expansion.rb
blob: c3fe4ce18d5696cae4e945f1e89e0356c399d5b3 (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
require 'testing_env'
require 'dependency'

class DependencyExpansionTests < Test::Unit::TestCase
  def build_dep(name, tags=[], deps=[])
    dep = Dependency.new(name.to_s, tags)
    dep.stubs(:to_formula).returns(stub(:deps => deps))
    dep
  end

  def setup
    @foo = build_dep(:foo)
    @bar = build_dep(:bar)
    @baz = build_dep(:baz)
    @qux = build_dep(:qux)
    @deps = [@foo, @bar, @baz, @qux]
    @f    = stub(:deps => @deps)
  end

  def test_expand_yields_dependent_and_dep_pairs
    i = 0
    Dependency.expand(@f) do |dependent, dep|
      assert_equal @f, dependent
      assert_equal dep, @deps[i]
      i += 1
    end
  end

  def test_expand_no_block
    assert_equal @deps, Dependency.expand(@f)
  end

  def test_expand_prune_all
    assert_empty Dependency.expand(@f) { Dependency.prune }
  end

  def test_expand_selective_pruning
    deps = Dependency.expand(@f) do |_, dep|
      Dependency.prune if dep.name == 'foo'
    end

    assert_equal [@bar, @baz, @qux], deps
  end

  def test_expand_preserves_dependency_order
    @foo.stubs(:to_formula).returns(stub(:deps => [@qux, @baz]))
    assert_equal [@qux, @baz, @foo, @bar], Dependency.expand(@f)
  end

  def test_expand_skips_optionals_by_default
    @foo.expects(:optional?).returns(true)
    @f = stub(:deps => @deps, :build => stub(:with? => false))
    assert_equal [@bar, @baz, @qux], Dependency.expand(@f)
  end

  def test_expand_keeps_recommendeds_by_default
    @foo.expects(:recommended?).returns(true)
    @f = stub(:deps => @deps, :build => stub(:with? => true))
    assert_equal @deps, Dependency.expand(@f)
  end

  def test_merges_repeated_deps_with_differing_options
    @foo2 = build_dep(:foo, ['option'])
    @baz2 = build_dep(:baz, ['option'])
    @deps << @foo2 << @baz2
    deps = [@foo2, @bar, @baz2, @qux]
    assert_equal deps, Dependency.expand(@f)
  end
end