1require 'rubygems/test_case'
2require 'rubygems/commands/environment_command'
3
4class TestGemCommandsEnvironmentCommand < Gem::TestCase
5
6  def setup
7    super
8
9    @cmd = Gem::Commands::EnvironmentCommand.new
10  end
11
12  def test_execute
13    orig_sources = Gem.sources.dup
14    Gem.sources.replace %w[http://gems.example.com]
15    Gem.configuration['gemcutter_key'] = 'blah'
16
17    @cmd.send :handle_options, %w[]
18
19    use_ui @ui do
20      @cmd.execute
21    end
22
23    assert_match %r|RUBYGEMS VERSION: (\d\.)+\d|, @ui.output
24    assert_match %r|RUBY VERSION: \d\.\d\.\d \(.*\) \[.*\]|, @ui.output
25    assert_match %r|INSTALLATION DIRECTORY: #{Regexp.escape @gemhome}|,
26                 @ui.output
27    assert_match %r|RUBYGEMS PREFIX: |, @ui.output
28    assert_match %r|RUBY EXECUTABLE:.*#{Gem::ConfigMap[:ruby_install_name]}|,
29                 @ui.output
30    assert_match %r|EXECUTABLE DIRECTORY:|, @ui.output
31    assert_match %r|RUBYGEMS PLATFORMS:|, @ui.output
32    assert_match %r|- #{Gem::Platform.local}|, @ui.output
33    assert_match %r|GEM PATHS:|, @ui.output
34    assert_match %r|- #{Regexp.escape @gemhome}|, @ui.output
35    assert_match %r|GEM CONFIGURATION:|, @ui.output
36    assert_match %r|"gemcutter_key" => "\*\*\*\*"|, @ui.output
37    assert_match %r|:verbose => |, @ui.output
38    assert_match %r|REMOTE SOURCES:|, @ui.output
39    assert_equal '', @ui.error
40
41  ensure
42    Gem.sources.replace orig_sources
43  end
44
45  def test_execute_gemdir
46    @cmd.send :handle_options, %w[gemdir]
47
48    use_ui @ui do
49      @cmd.execute
50    end
51
52    assert_equal "#{@gemhome}\n", @ui.output
53    assert_equal '', @ui.error
54  end
55
56  def test_execute_gempath
57    @cmd.send :handle_options, %w[gempath]
58
59    use_ui @ui do
60      @cmd.execute
61    end
62
63    assert_equal "#{@gemhome}\n", @ui.output
64    assert_equal '', @ui.error
65  end
66
67  def test_execute_gempath_multiple
68    Gem.clear_paths
69    path = [@gemhome, "#{@gemhome}2"].join File::PATH_SEPARATOR
70    ENV['GEM_PATH'] = path
71
72    @cmd.send :handle_options, %w[gempath]
73
74    use_ui @ui do
75      @cmd.execute
76    end
77
78    assert_equal "#{Gem.path.join File::PATH_SEPARATOR}\n", @ui.output
79    assert_equal '', @ui.error
80  end
81
82  def test_execute_packageversion
83    @cmd.send :handle_options, %w[packageversion]
84
85    use_ui @ui do
86      @cmd.execute
87    end
88
89    assert_equal "#{Gem::RubyGemsPackageVersion}\n", @ui.output
90    assert_equal '', @ui.error
91  end
92
93  def test_execute_remotesources
94    orig_sources = Gem.sources.dup
95    Gem.sources.replace %w[http://gems.example.com]
96
97    @cmd.send :handle_options, %w[remotesources]
98
99    use_ui @ui do
100      @cmd.execute
101    end
102
103    assert_equal "http://gems.example.com\n", @ui.output
104    assert_equal '', @ui.error
105
106  ensure
107    Gem.sources.replace orig_sources
108  end
109
110  def test_execute_unknown
111    @cmd.send :handle_options, %w[unknown]
112
113    assert_raises Gem::CommandLineError do
114      use_ui @ui do
115        @cmd.execute
116      end
117    end
118
119    assert_equal '', @ui.output
120    assert_equal '', @ui.error
121  end
122
123  def test_execute_version
124    @cmd.send :handle_options, %w[version]
125
126    use_ui @ui do
127      @cmd.execute
128    end
129
130    assert_equal "#{Gem::VERSION}\n", @ui.output
131    assert_equal '', @ui.error
132  end
133
134  def test_execute_platform
135    @cmd.send :handle_options, %w[platform]
136
137    use_ui @ui do
138      @cmd.execute
139    end
140
141    assert_equal "#{Gem.platforms.join File::PATH_SEPARATOR}\n", @ui.output
142    assert_equal '', @ui.error
143  end
144end
145