aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test/test_language_module_dependency.rb
blob: d6f67ff31f4b0f27febcd1d0761ba9e1b4b07bae (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
require 'testing_env'
require 'requirements/language_module_dependency'

class LanguageModuleDependencyTests < Homebrew::TestCase
  def assert_deps_fail(spec)
    refute_predicate LanguageModuleDependency.new(*spec.shift.reverse), :satisfied?
  end

  def assert_deps_pass(spec)
    assert_predicate LanguageModuleDependency.new(*spec.shift.reverse), :satisfied?
  end

  def test_unique_deps_are_not_eql
    x = LanguageModuleDependency.new(:node, "less")
    y = LanguageModuleDependency.new(:node, "coffee-script")
    refute_equal x.hash, y.hash
    assert !x.eql?(y)
    assert !y.eql?(x)
  end

  def test_differing_module_and_import_name
    mod_name = "foo"
    import_name = "bar"
    l = LanguageModuleDependency.new(:python, mod_name, import_name)
    assert l.message.include?(mod_name)
    assert l.the_test.one? { |c| c.include?(import_name) }
  end

  def test_bad_perl_deps
    assert_deps_fail "notapackage" => :perl
  end

  def test_good_perl_deps
    assert_deps_pass "ENV" => :perl
  end

  def test_bad_python_deps
    assert_deps_fail "notapackage" => :python
  end

  def test_good_python_deps
    assert_deps_pass "datetime" => :python
  end

  def test_bad_ruby_deps
    assert_deps_fail "notapackage" => :ruby
  end

  def test_good_ruby_deps
    assert_deps_pass "date" => :ruby
  end

  if which("rbx")
    def test_bad_rubinius_deps
      assert_deps_fail "notapackage" => :rbx
    end

    def test_good_rubinius_deps
      assert_deps_pass "date" => :rbx
    end
  end

  if which("csc")
    def test_bad_chicken_deps
      assert_deps_fail "notapackage" => :chicken
    end

    def test_good_chicken_deps
      assert_deps_pass "extras" => :chicken
    end
  end

  if which("node")
    def test_bad_node_deps
      assert_deps_fail "notapackage" => :node
    end

    def test_good_node_deps
      assert_deps_pass "util" => :node
    end
  end
end