1require 'rubygems/test_case'
2require 'rubygems/commands/lock_command'
3
4class TestGemCommandsLockCommand < Gem::TestCase
5
6  def setup
7    super
8
9    @a1 = quick_gem 'a', '1'
10    @b1 = quick_gem 'b', '1' do |s|
11      s.add_runtime_dependency 'a'
12    end
13
14    @d1 = quick_gem 'd', '1' do |s|
15      s.add_runtime_dependency 'z'
16    end
17
18    @cmd = Gem::Commands::LockCommand.new
19  end
20
21  def test_execute
22    @cmd.handle_options %w[b-1]
23
24    use_ui @ui do
25      @cmd.execute
26    end
27
28    expected = <<-EXPECTED
29require 'rubygems'
30gem 'b', '= 1'
31gem 'a', '= 1'
32    EXPECTED
33
34    assert_equal expected, @ui.output
35    assert_equal '', @ui.error
36  end
37
38  def test_execute_missing_dependency
39    @cmd.handle_options %w[d-1]
40
41    use_ui @ui do
42      @cmd.execute
43    end
44
45    expected = <<-EXPECTED
46require 'rubygems'
47gem 'd', '= 1'
48# Unable to satisfy 'z (>= 0)' from currently installed gems
49    EXPECTED
50
51    assert_equal expected, @ui.output
52    assert_equal '', @ui.error
53  end
54
55  def test_execute_strict
56    @cmd.handle_options %w[c-1 --strict]
57
58    e = assert_raises Gem::Exception do
59      use_ui @ui do
60        @cmd.execute
61      end
62    end
63
64    assert_equal 'Could not find gem c-1, try using the full name', e.message
65  end
66
67end
68
69