PageRenderTime 48ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/test/rubygems/test_gem_commands_dependency_command.rb

https://github.com/fizx/ruby
Ruby | 230 lines | 159 code | 71 blank | 0 comment | 1 complexity | cb64fb0ad5c162ea02379fd76ab7cc12 MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-3.0, GPL-2.0, BSD-3-Clause
  1. require_relative 'gemutilities'
  2. require 'rubygems/commands/dependency_command'
  3. class TestGemCommandsDependencyCommand < RubyGemTestCase
  4. def setup
  5. super
  6. @cmd = Gem::Commands::DependencyCommand.new
  7. @cmd.options[:domain] = :local
  8. util_setup_fake_fetcher
  9. end
  10. def test_execute
  11. quick_gem 'foo' do |gem|
  12. gem.add_dependency 'bar', '> 1'
  13. end
  14. Gem.source_index = nil
  15. @cmd.options[:args] = %w[foo]
  16. use_ui @ui do
  17. @cmd.execute
  18. end
  19. assert_equal "Gem foo-2\n bar (> 1, runtime)\n\n", @ui.output
  20. assert_equal '', @ui.error
  21. end
  22. def test_execute_no_args
  23. Gem.source_index = nil
  24. @cmd.options[:args] = []
  25. use_ui @ui do
  26. @cmd.execute
  27. end
  28. expected = <<-EOF
  29. Gem a-1
  30. Gem a-2
  31. Gem a-3.a
  32. Gem a_evil-9
  33. Gem b-2
  34. Gem c-1.2
  35. Gem pl-1-x86-linux
  36. EOF
  37. assert_equal expected, @ui.output
  38. assert_equal '', @ui.error
  39. end
  40. def test_execute_no_match
  41. @cmd.options[:args] = %w[foo]
  42. assert_raises MockGemUi::TermError do
  43. use_ui @ui do
  44. @cmd.execute
  45. end
  46. end
  47. assert_equal "No gems found matching foo (>= 0)\n", @ui.output
  48. assert_equal '', @ui.error
  49. end
  50. def test_execute_pipe_format
  51. quick_gem 'foo' do |gem|
  52. gem.add_dependency 'bar', '> 1'
  53. end
  54. @cmd.options[:args] = %w[foo]
  55. @cmd.options[:pipe_format] = true
  56. use_ui @ui do
  57. @cmd.execute
  58. end
  59. assert_equal "bar --version '> 1'\n", @ui.output
  60. assert_equal '', @ui.error
  61. end
  62. def test_execute_regexp
  63. Gem.source_index = nil
  64. @cmd.options[:args] = %w[/[ab]/]
  65. use_ui @ui do
  66. @cmd.execute
  67. end
  68. expected = <<-EOF
  69. Gem a-1
  70. Gem a-2
  71. Gem a-3.a
  72. Gem a_evil-9
  73. Gem b-2
  74. EOF
  75. assert_equal expected, @ui.output
  76. assert_equal '', @ui.error
  77. end
  78. def test_execute_reverse
  79. quick_gem 'foo' do |gem|
  80. gem.add_dependency 'bar', '> 1'
  81. end
  82. quick_gem 'baz' do |gem|
  83. gem.add_dependency 'foo'
  84. end
  85. Gem.source_index = nil
  86. @cmd.options[:args] = %w[foo]
  87. @cmd.options[:reverse_dependencies] = true
  88. use_ui @ui do
  89. @cmd.execute
  90. end
  91. expected = <<-EOF
  92. Gem foo-2
  93. bar (> 1, runtime)
  94. Used by
  95. baz-2 (foo (>= 0, runtime))
  96. EOF
  97. assert_equal expected, @ui.output
  98. assert_equal '', @ui.error
  99. end
  100. def test_execute_reverse_remote
  101. @cmd.options[:args] = %w[foo]
  102. @cmd.options[:reverse_dependencies] = true
  103. @cmd.options[:domain] = :remote
  104. assert_raises MockGemUi::TermError do
  105. use_ui @ui do
  106. @cmd.execute
  107. end
  108. end
  109. expected = <<-EOF
  110. ERROR: Only reverse dependencies for local gems are supported.
  111. EOF
  112. assert_equal '', @ui.output
  113. assert_equal expected, @ui.error
  114. end
  115. def test_execute_remote
  116. foo = quick_gem 'foo' do |gem|
  117. gem.add_dependency 'bar', '> 1'
  118. end
  119. @fetcher = Gem::FakeFetcher.new
  120. Gem::RemoteFetcher.fetcher = @fetcher
  121. util_setup_spec_fetcher foo
  122. FileUtils.rm File.join(@gemhome, 'specifications',
  123. "#{foo.full_name}.gemspec")
  124. @cmd.options[:args] = %w[foo]
  125. @cmd.options[:domain] = :remote
  126. use_ui @ui do
  127. @cmd.execute
  128. end
  129. assert_equal "Gem foo-2\n bar (> 1, runtime)\n\n", @ui.output
  130. assert_equal '', @ui.error
  131. end
  132. def test_execute_remote_legacy
  133. foo = quick_gem 'foo' do |gem|
  134. gem.add_dependency 'bar', '> 1'
  135. end
  136. @fetcher = Gem::FakeFetcher.new
  137. Gem::RemoteFetcher.fetcher = @fetcher
  138. Gem::SpecFetcher.fetcher = nil
  139. si = util_setup_source_info_cache foo
  140. @fetcher.data["#{@gem_repo}yaml"] = YAML.dump si
  141. @fetcher.data["#{@gem_repo}Marshal.#{Gem.marshal_version}"] =
  142. si.dump
  143. @fetcher.data.delete "#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"
  144. FileUtils.rm File.join(@gemhome, 'specifications',
  145. "#{foo.full_name}.gemspec")
  146. @cmd.options[:args] = %w[foo]
  147. @cmd.options[:domain] = :remote
  148. use_ui @ui do
  149. @cmd.execute
  150. end
  151. assert_equal "Gem foo-2\n bar (> 1, runtime)\n\n", @ui.output
  152. expected = <<-EOF
  153. WARNING: RubyGems 1.2+ index not found for:
  154. \t#{@gem_repo}
  155. RubyGems will revert to legacy indexes degrading performance.
  156. EOF
  157. assert_equal expected, @ui.error
  158. end
  159. end