PageRenderTime 47ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/Library/Homebrew/test/test_requirements.rb

https://bitbucket.org/destructuring/homebrew
Ruby | 154 lines | 116 code | 32 blank | 6 comment | 10 complexity | ddd609231b492820719ea3d60f5d98ba MD5 | raw file
  1. require 'testing_env'
  2. require 'test/testball'
  3. require 'dependencies'
  4. class DependencyCollector
  5. def find_requirement(klass)
  6. requirements.find do |req|
  7. klass === req
  8. end
  9. end
  10. end
  11. class RequirementTests < Test::Unit::TestCase
  12. def setup
  13. @d = DependencyCollector.new
  14. end
  15. def test_requirement_creation
  16. @d.add :x11
  17. assert_not_nil @d.find_requirement(X11Dependency)
  18. end
  19. def test_no_duplicate_requirements
  20. 2.times { @d.add :x11 }
  21. assert_equal 1, @d.requirements.length
  22. end
  23. end
  24. class RequirementTagTests < Test::Unit::TestCase
  25. def setup
  26. @d = DependencyCollector.new
  27. end
  28. def test_requirement_tags
  29. @d.add :x11 => '2.5.1'
  30. @d.add :xcode => :build
  31. assert_empty @d.find_requirement(X11Dependency).tags
  32. assert @d.find_requirement(XcodeDependency).build?
  33. end
  34. def test_x11_no_tag
  35. @d.add :x11
  36. assert_empty @d.find_requirement(X11Dependency).tags
  37. end
  38. def test_x11_min_version
  39. @d.add :x11 => '2.5.1'
  40. assert_equal '2.5.1', @d.find_requirement(X11Dependency).min_version
  41. end
  42. def test_x11_tag
  43. @d.add :x11 => :optional
  44. assert @d.find_requirement(X11Dependency).optional?
  45. end
  46. def test_x11_min_version_and_tag
  47. @d.add :x11 => ['2.5.1', :optional]
  48. dep = @d.find_requirement(X11Dependency)
  49. assert_equal '2.5.1', dep.min_version
  50. assert dep.optional?
  51. end
  52. end
  53. class ExternalDepsTests < Test::Unit::TestCase
  54. def check_deps_fail specs
  55. d = DependencyCollector.new
  56. specs.each do |key, value|
  57. d.add key => value
  58. end
  59. # Should have found a dep
  60. assert d.requirements.size == 1
  61. d.requirements do |req|
  62. assert !d.satisfied?
  63. end
  64. end
  65. def check_deps_pass specs
  66. d = DependencyCollector.new
  67. specs.each do |key, value|
  68. d.add key => value
  69. end
  70. # Should have found a dep
  71. assert d.requirements.size == 1
  72. d.requirements do |req|
  73. assert d.satisfied?
  74. end
  75. end
  76. def test_bad_perl_deps
  77. check_deps_fail "notapackage" => :perl
  78. end
  79. def test_good_perl_deps
  80. check_deps_pass "ENV" => :perl
  81. end
  82. def test_bad_python_deps
  83. check_deps_fail "notapackage" => :python
  84. end
  85. def test_good_python_deps
  86. check_deps_pass "datetime" => :python
  87. end
  88. def test_bad_ruby_deps
  89. check_deps_fail "notapackage" => :ruby
  90. end
  91. def test_good_ruby_deps
  92. check_deps_pass "date" => :ruby
  93. end
  94. # Only run these next two tests if jruby is installed.
  95. def test_bad_jruby_deps
  96. check_deps_fail "notapackage" => :jruby if which('jruby')
  97. end
  98. def test_good_jruby_deps
  99. check_deps_pass "date" => :jruby if which('jruby')
  100. end
  101. # Only run these next two tests if rubinius is installed.
  102. def test_bad_rubinius_deps
  103. check_deps_fail "notapackage" => :rbx if which('rbx')
  104. end
  105. def test_good_rubinius_deps
  106. check_deps_pass "date" => :rbx if which('rbx')
  107. end
  108. # Only run these next two tests if chicken scheme is installed.
  109. def test_bad_chicken_deps
  110. check_deps_fail "notapackage" => :chicken if which('csc')
  111. end
  112. def test_good_chicken_deps
  113. check_deps_pass "extras" => :chicken if which('csc')
  114. end
  115. # Only run these next two tests if node.js is installed.
  116. def test_bad_node_deps
  117. check_deps_fail "notapackage" => :node if which('node')
  118. end
  119. def test_good_node_deps
  120. check_deps_pass "util" => :node if which('node')
  121. end
  122. end