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

# XXX: Figure out what env file needs to require hardware
require 'hardware'

class LanguageModuleDependencyTests < Test::Unit::TestCase
  def assert_deps_fail(spec)
    l = LanguageModuleDependency.new(*spec.shift.reverse)
    assert !l.satisfied?
  end

  def assert_deps_pass(spec)
    l = LanguageModuleDependency.new(*spec.shift.reverse)
    assert l.satisfied?
  end

  def test_unique_deps_are_not_eql
    x = LanguageModuleDependency.new(:node, "less")
    y = LanguageModuleDependency.new(:node, "coffee-script")
    assert 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("jruby")
    def test_bad_jruby_deps
      assert_deps_fail "notapackage" => :jruby
    end

    def test_good_jruby_deps
      assert_deps_pass "date" => :jruby
    end
  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