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

class LanguageModuleDependencyTests < Homebrew::TestCase
  parallelize_me!

  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_eql x, y
    refute_equal x.hash, y.hash
  end

  def test_differing_module_and_import_name
    mod_name = "foo"
    import_name = "bar"
    l = LanguageModuleDependency.new(:python, mod_name, import_name)
    assert_includes l.message, mod_name
    assert_includes l.the_test, "import #{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