libgems 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. data/ChangeLog +5811 -0
  2. data/History.txt +887 -0
  3. data/LICENSE.txt +51 -0
  4. data/README.md +87 -0
  5. data/Rakefile +113 -0
  6. data/lib/gauntlet_libgems.rb +50 -0
  7. data/lib/libgems.rb +1246 -0
  8. data/lib/libgems/builder.rb +102 -0
  9. data/lib/libgems/command.rb +534 -0
  10. data/lib/libgems/command_manager.rb +182 -0
  11. data/lib/libgems/commands/build_command.rb +53 -0
  12. data/lib/libgems/commands/cert_command.rb +86 -0
  13. data/lib/libgems/commands/check_command.rb +80 -0
  14. data/lib/libgems/commands/cleanup_command.rb +106 -0
  15. data/lib/libgems/commands/contents_command.rb +98 -0
  16. data/lib/libgems/commands/dependency_command.rb +195 -0
  17. data/lib/libgems/commands/environment_command.rb +133 -0
  18. data/lib/libgems/commands/fetch_command.rb +67 -0
  19. data/lib/libgems/commands/generate_index_command.rb +133 -0
  20. data/lib/libgems/commands/help_command.rb +172 -0
  21. data/lib/libgems/commands/install_command.rb +178 -0
  22. data/lib/libgems/commands/list_command.rb +35 -0
  23. data/lib/libgems/commands/lock_command.rb +110 -0
  24. data/lib/libgems/commands/mirror_command.rb +111 -0
  25. data/lib/libgems/commands/outdated_command.rb +33 -0
  26. data/lib/libgems/commands/owner_command.rb +75 -0
  27. data/lib/libgems/commands/pristine_command.rb +93 -0
  28. data/lib/libgems/commands/push_command.rb +56 -0
  29. data/lib/libgems/commands/query_command.rb +280 -0
  30. data/lib/libgems/commands/rdoc_command.rb +91 -0
  31. data/lib/libgems/commands/search_command.rb +31 -0
  32. data/lib/libgems/commands/server_command.rb +86 -0
  33. data/lib/libgems/commands/sources_command.rb +157 -0
  34. data/lib/libgems/commands/specification_command.rb +125 -0
  35. data/lib/libgems/commands/stale_command.rb +27 -0
  36. data/lib/libgems/commands/uninstall_command.rb +83 -0
  37. data/lib/libgems/commands/unpack_command.rb +121 -0
  38. data/lib/libgems/commands/update_command.rb +160 -0
  39. data/lib/libgems/commands/which_command.rb +86 -0
  40. data/lib/libgems/config_file.rb +345 -0
  41. data/lib/libgems/custom_require.rb +44 -0
  42. data/lib/libgems/defaults.rb +101 -0
  43. data/lib/libgems/dependency.rb +227 -0
  44. data/lib/libgems/dependency_installer.rb +286 -0
  45. data/lib/libgems/dependency_list.rb +208 -0
  46. data/lib/libgems/doc_manager.rb +242 -0
  47. data/lib/libgems/errors.rb +35 -0
  48. data/lib/libgems/exceptions.rb +91 -0
  49. data/lib/libgems/ext.rb +18 -0
  50. data/lib/libgems/ext/builder.rb +56 -0
  51. data/lib/libgems/ext/configure_builder.rb +25 -0
  52. data/lib/libgems/ext/ext_conf_builder.rb +24 -0
  53. data/lib/libgems/ext/rake_builder.rb +39 -0
  54. data/lib/libgems/format.rb +81 -0
  55. data/lib/libgems/gem_openssl.rb +92 -0
  56. data/lib/libgems/gem_path_searcher.rb +100 -0
  57. data/lib/libgems/gem_runner.rb +79 -0
  58. data/lib/libgems/gemcutter_utilities.rb +49 -0
  59. data/lib/libgems/indexer.rb +720 -0
  60. data/lib/libgems/install_update_options.rb +125 -0
  61. data/lib/libgems/installer.rb +604 -0
  62. data/lib/libgems/local_remote_options.rb +135 -0
  63. data/lib/libgems/old_format.rb +153 -0
  64. data/lib/libgems/package.rb +97 -0
  65. data/lib/libgems/package/f_sync_dir.rb +23 -0
  66. data/lib/libgems/package/tar_header.rb +266 -0
  67. data/lib/libgems/package/tar_input.rb +222 -0
  68. data/lib/libgems/package/tar_output.rb +144 -0
  69. data/lib/libgems/package/tar_reader.rb +106 -0
  70. data/lib/libgems/package/tar_reader/entry.rb +141 -0
  71. data/lib/libgems/package/tar_writer.rb +241 -0
  72. data/lib/libgems/package_task.rb +126 -0
  73. data/lib/libgems/platform.rb +183 -0
  74. data/lib/libgems/remote_fetcher.rb +414 -0
  75. data/lib/libgems/require_paths_builder.rb +18 -0
  76. data/lib/libgems/requirement.rb +153 -0
  77. data/lib/libgems/security.rb +814 -0
  78. data/lib/libgems/server.rb +872 -0
  79. data/lib/libgems/source_index.rb +597 -0
  80. data/lib/libgems/source_info_cache.rb +395 -0
  81. data/lib/libgems/source_info_cache_entry.rb +56 -0
  82. data/lib/libgems/spec_fetcher.rb +337 -0
  83. data/lib/libgems/specification.rb +1487 -0
  84. data/lib/libgems/test_utilities.rb +147 -0
  85. data/lib/libgems/text.rb +65 -0
  86. data/lib/libgems/uninstaller.rb +278 -0
  87. data/lib/libgems/user_interaction.rb +527 -0
  88. data/lib/libgems/validator.rb +240 -0
  89. data/lib/libgems/version.rb +316 -0
  90. data/lib/libgems/version_option.rb +65 -0
  91. data/lib/rbconfig/datadir.rb +20 -0
  92. data/test/bogussources.rb +8 -0
  93. data/test/data/gem-private_key.pem +27 -0
  94. data/test/data/gem-public_cert.pem +20 -0
  95. data/test/fake_certlib/openssl.rb +7 -0
  96. data/test/foo/discover.rb +0 -0
  97. data/test/gem_installer_test_case.rb +97 -0
  98. data/test/gem_package_tar_test_case.rb +132 -0
  99. data/test/gemutilities.rb +605 -0
  100. data/test/insure_session.rb +43 -0
  101. data/test/mockgemui.rb +56 -0
  102. data/test/plugin/exception/libgems_plugin.rb +2 -0
  103. data/test/plugin/load/libgems_plugin.rb +1 -0
  104. data/test/plugin/standarderror/libgems_plugin.rb +2 -0
  105. data/test/private_key.pem +27 -0
  106. data/test/public_cert.pem +20 -0
  107. data/test/rubygems_plugin.rb +21 -0
  108. data/test/simple_gem.rb +66 -0
  109. data/test/test_config.rb +12 -0
  110. data/test/test_gem.rb +780 -0
  111. data/test/test_gem_builder.rb +27 -0
  112. data/test/test_gem_command.rb +178 -0
  113. data/test/test_gem_command_manager.rb +207 -0
  114. data/test/test_gem_commands_build_command.rb +74 -0
  115. data/test/test_gem_commands_cert_command.rb +124 -0
  116. data/test/test_gem_commands_check_command.rb +18 -0
  117. data/test/test_gem_commands_contents_command.rb +156 -0
  118. data/test/test_gem_commands_dependency_command.rb +216 -0
  119. data/test/test_gem_commands_environment_command.rb +144 -0
  120. data/test/test_gem_commands_fetch_command.rb +76 -0
  121. data/test/test_gem_commands_generate_index_command.rb +135 -0
  122. data/test/test_gem_commands_install_command.rb +315 -0
  123. data/test/test_gem_commands_list_command.rb +36 -0
  124. data/test/test_gem_commands_lock_command.rb +68 -0
  125. data/test/test_gem_commands_mirror_command.rb +60 -0
  126. data/test/test_gem_commands_outdated_command.rb +40 -0
  127. data/test/test_gem_commands_owner_command.rb +105 -0
  128. data/test/test_gem_commands_pristine_command.rb +108 -0
  129. data/test/test_gem_commands_push_command.rb +81 -0
  130. data/test/test_gem_commands_query_command.rb +426 -0
  131. data/test/test_gem_commands_server_command.rb +59 -0
  132. data/test/test_gem_commands_sources_command.rb +209 -0
  133. data/test/test_gem_commands_specification_command.rb +139 -0
  134. data/test/test_gem_commands_stale_command.rb +38 -0
  135. data/test/test_gem_commands_uninstall_command.rb +83 -0
  136. data/test/test_gem_commands_unpack_command.rb +199 -0
  137. data/test/test_gem_commands_update_command.rb +207 -0
  138. data/test/test_gem_commands_which_command.rb +66 -0
  139. data/test/test_gem_config_file.rb +287 -0
  140. data/test/test_gem_dependency.rb +149 -0
  141. data/test/test_gem_dependency_installer.rb +661 -0
  142. data/test/test_gem_dependency_list.rb +230 -0
  143. data/test/test_gem_doc_manager.rb +31 -0
  144. data/test/test_gem_ext_configure_builder.rb +84 -0
  145. data/test/test_gem_ext_ext_conf_builder.rb +173 -0
  146. data/test/test_gem_ext_rake_builder.rb +81 -0
  147. data/test/test_gem_format.rb +70 -0
  148. data/test/test_gem_gem_path_searcher.rb +78 -0
  149. data/test/test_gem_gem_runner.rb +45 -0
  150. data/test/test_gem_gemcutter_utilities.rb +103 -0
  151. data/test/test_gem_indexer.rb +673 -0
  152. data/test/test_gem_install_update_options.rb +68 -0
  153. data/test/test_gem_installer.rb +857 -0
  154. data/test/test_gem_local_remote_options.rb +97 -0
  155. data/test/test_gem_package_tar_header.rb +130 -0
  156. data/test/test_gem_package_tar_input.rb +112 -0
  157. data/test/test_gem_package_tar_output.rb +97 -0
  158. data/test/test_gem_package_tar_reader.rb +46 -0
  159. data/test/test_gem_package_tar_reader_entry.rb +109 -0
  160. data/test/test_gem_package_tar_writer.rb +144 -0
  161. data/test/test_gem_package_task.rb +59 -0
  162. data/test/test_gem_platform.rb +264 -0
  163. data/test/test_gem_remote_fetcher.rb +740 -0
  164. data/test/test_gem_requirement.rb +292 -0
  165. data/test/test_gem_server.rb +356 -0
  166. data/test/test_gem_silent_ui.rb +113 -0
  167. data/test/test_gem_source_index.rb +461 -0
  168. data/test/test_gem_spec_fetcher.rb +410 -0
  169. data/test/test_gem_specification.rb +1334 -0
  170. data/test/test_gem_stream_ui.rb +218 -0
  171. data/test/test_gem_text.rb +43 -0
  172. data/test/test_gem_uninstaller.rb +146 -0
  173. data/test/test_gem_validator.rb +63 -0
  174. data/test/test_gem_version.rb +181 -0
  175. data/test/test_gem_version_option.rb +89 -0
  176. data/test/test_kernel.rb +59 -0
  177. metadata +402 -0
@@ -0,0 +1,27 @@
1
+ require File.expand_path('../gemutilities', __FILE__)
2
+ require 'libgems/builder'
3
+
4
+ class TestGemBuilder < RubyGemTestCase
5
+
6
+ def test_build
7
+ builder = LibGems::Builder.new quick_gem('a')
8
+
9
+ use_ui @ui do
10
+ Dir.chdir @tempdir do
11
+ builder.build
12
+ end
13
+ end
14
+
15
+ assert_match %r|Successfully built RubyGem\n Name: a|, @ui.output
16
+ end
17
+
18
+ def test_build_validates
19
+ builder = LibGems::Builder.new LibGems::Specification.new
20
+
21
+ assert_raises LibGems::InvalidSpecificationException do
22
+ builder.build
23
+ end
24
+ end
25
+
26
+ end
27
+
@@ -0,0 +1,178 @@
1
+ require File.expand_path('../gemutilities', __FILE__)
2
+ require 'libgems/command'
3
+
4
+ class LibGems::Command
5
+ public :parser
6
+ end
7
+
8
+ class TestGemCommand < RubyGemTestCase
9
+
10
+ def setup
11
+ super
12
+
13
+ @xopt = nil
14
+
15
+ LibGems::Command.common_options.clear
16
+ LibGems::Command.common_options << [
17
+ ['-x', '--exe', 'Execute'], lambda do |*a|
18
+ @xopt = true
19
+ end
20
+ ]
21
+
22
+ @cmd_name = 'doit'
23
+ @cmd = LibGems::Command.new @cmd_name, 'summary'
24
+ end
25
+
26
+ def test_self_add_specific_extra_args
27
+ added_args = %w[--all]
28
+ @cmd.add_option '--all' do |v,o| end
29
+
30
+ LibGems::Command.add_specific_extra_args @cmd_name, added_args
31
+
32
+ assert_equal added_args, LibGems::Command.specific_extra_args(@cmd_name)
33
+
34
+ h = @cmd.add_extra_args []
35
+
36
+ assert_equal added_args, h
37
+ end
38
+
39
+ def test_self_add_specific_extra_args_unknown
40
+ added_args = %w[--definitely_not_there]
41
+
42
+ LibGems::Command.add_specific_extra_args @cmd_name, added_args
43
+
44
+ assert_equal added_args, LibGems::Command.specific_extra_args(@cmd_name)
45
+
46
+ h = @cmd.add_extra_args []
47
+
48
+ assert_equal [], h
49
+ end
50
+
51
+ def test_basic_accessors
52
+ assert_equal "doit", @cmd.command
53
+ assert_equal "gem doit", @cmd.program_name
54
+ assert_equal "summary", @cmd.summary
55
+ end
56
+
57
+ def test_common_option_in_class
58
+ assert Array === LibGems::Command.common_options
59
+ end
60
+
61
+ def test_defaults
62
+ @cmd.add_option('-h', '--help [COMMAND]', 'Get help on COMMAND') do |value, options|
63
+ options[:help] = value
64
+ end
65
+
66
+ @cmd.defaults = { :help => true }
67
+
68
+ @cmd.when_invoked do |options|
69
+ assert options[:help], "Help options should default true"
70
+ end
71
+
72
+ use_ui @ui do
73
+ @cmd.invoke
74
+ end
75
+
76
+ assert_match %r|Usage: gem doit|, @ui.output
77
+ end
78
+
79
+ def test_invoke
80
+ done = false
81
+ @cmd.when_invoked { done = true }
82
+
83
+ use_ui @ui do
84
+ @cmd.invoke
85
+ end
86
+
87
+ assert done
88
+ end
89
+
90
+ def test_invode_with_bad_options
91
+ use_ui @ui do
92
+ @cmd.when_invoked do true end
93
+
94
+ ex = assert_raises OptionParser::InvalidOption do
95
+ @cmd.invoke('-zzz')
96
+ end
97
+
98
+ assert_match(/invalid option:/, ex.message)
99
+ end
100
+ end
101
+
102
+ def test_invoke_with_common_options
103
+ @cmd.when_invoked do true end
104
+
105
+ use_ui @ui do
106
+ @cmd.invoke "-x"
107
+ end
108
+
109
+ assert @xopt, "Should have done xopt"
110
+ end
111
+
112
+ # Returning false from the command handler invokes the usage output.
113
+ def test_invoke_with_help
114
+ done = false
115
+
116
+ use_ui @ui do
117
+ @cmd.add_option('-h', '--help [COMMAND]', 'Get help on COMMAND') do |value, options|
118
+ options[:help] = true
119
+ done = true
120
+ end
121
+
122
+ @cmd.invoke('--help')
123
+
124
+ assert done
125
+ end
126
+
127
+ assert_match(/Usage/, @ui.output)
128
+ assert_match(/gem doit/, @ui.output)
129
+ assert_match(/\[options\]/, @ui.output)
130
+ assert_match(/-h/, @ui.output)
131
+ assert_match(/--help \[COMMAND\]/, @ui.output)
132
+ assert_match(/Get help on COMMAND/, @ui.output)
133
+ assert_match(/-x/, @ui.output)
134
+ assert_match(/--exe/, @ui.output)
135
+ assert_match(/Execute/, @ui.output)
136
+ assert_match(/Common Options:/, @ui.output)
137
+ end
138
+
139
+ def test_invoke_with_options
140
+ @cmd.add_option('-h', '--help [COMMAND]', 'Get help on COMMAND') do |value, options|
141
+ options[:help] = true
142
+ end
143
+
144
+ @cmd.when_invoked do |opts|
145
+ assert opts[:help]
146
+ end
147
+
148
+ use_ui @ui do
149
+ @cmd.invoke '-h'
150
+ end
151
+
152
+ assert_match %r|Usage: gem doit|, @ui.output
153
+ end
154
+
155
+ def test_option_recognition
156
+ @cmd.add_option('-h', '--help [COMMAND]', 'Get help on COMMAND') do |value, options|
157
+ options[:help] = true
158
+ end
159
+ @cmd.add_option('-f', '--file FILE', 'File option') do |value, options|
160
+ options[:help] = true
161
+ end
162
+ assert @cmd.handles?(['-x'])
163
+ assert @cmd.handles?(['-h'])
164
+ assert @cmd.handles?(['-h', 'command'])
165
+ assert @cmd.handles?(['--help', 'command'])
166
+ assert @cmd.handles?(['-f', 'filename'])
167
+ assert @cmd.handles?(['--file=filename'])
168
+ refute @cmd.handles?(['-z'])
169
+ refute @cmd.handles?(['-f'])
170
+ refute @cmd.handles?(['--toothpaste'])
171
+
172
+ args = ['-h', 'command']
173
+ @cmd.handles?(args)
174
+ assert_equal ['-h', 'command'], args
175
+ end
176
+
177
+ end
178
+
@@ -0,0 +1,207 @@
1
+ require File.expand_path('../gemutilities', __FILE__)
2
+ require 'libgems/command_manager'
3
+
4
+ class TestGemCommandManager < RubyGemTestCase
5
+
6
+ def setup
7
+ super
8
+
9
+ @command_manager = LibGems::CommandManager.instance
10
+ end
11
+
12
+ def test_run_interrupt
13
+ LibGems.load_plugins
14
+
15
+ use_ui @ui do
16
+ assert_raises MockGemUi::TermError do
17
+ @command_manager.run 'interrupt'
18
+ end
19
+ assert_equal '', ui.output
20
+ assert_match "Unknown command", ui.error
21
+ end
22
+ end
23
+
24
+ def test_run_crash_command
25
+ @command_manager.register_command :crash
26
+ use_ui @ui do
27
+ assert_raises MockGemUi::TermError do
28
+ @command_manager.run 'crash'
29
+ end
30
+ assert_equal '', ui.output
31
+ err = ui.error.split("\n").first
32
+ assert_match "ERROR: Loading command: crash", err
33
+ end
34
+ end
35
+
36
+ def test_process_args_bad_arg
37
+ use_ui @ui do
38
+ assert_raises(MockGemUi::TermError) {
39
+ @command_manager.process_args("--bad-arg")
40
+ }
41
+ end
42
+
43
+ assert_match(/invalid option: --bad-arg/i, @ui.error)
44
+ end
45
+
46
+ def test_process_args_install
47
+ #capture all install options
48
+ use_ui @ui do
49
+ check_options = nil
50
+ @command_manager['install'].when_invoked do |options|
51
+ check_options = options
52
+ true
53
+ end
54
+
55
+ #check defaults
56
+ @command_manager.process_args("install")
57
+ assert_equal false, check_options[:test]
58
+ assert_equal true, check_options[:generate_rdoc]
59
+ assert_equal false, check_options[:force]
60
+ assert_equal :both, check_options[:domain]
61
+ assert_equal true, check_options[:wrappers]
62
+ assert_equal LibGems::Requirement.default, check_options[:version]
63
+ assert_equal nil, check_options[:install_dir]
64
+ assert_equal nil, check_options[:bin_dir]
65
+
66
+ #check settings
67
+ check_options = nil
68
+ @command_manager.process_args(
69
+ "install --force --test --local --rdoc --install-dir . --version 3.0 --no-wrapper --bindir . ")
70
+ assert_equal true, check_options[:test]
71
+ assert_equal true, check_options[:generate_rdoc]
72
+ assert_equal true, check_options[:force]
73
+ assert_equal :local, check_options[:domain]
74
+ assert_equal false, check_options[:wrappers]
75
+ assert_equal LibGems::Requirement.new('3.0'), check_options[:version]
76
+ assert_equal Dir.pwd, check_options[:install_dir]
77
+ assert_equal Dir.pwd, check_options[:bin_dir]
78
+
79
+ #check remote domain
80
+ check_options = nil
81
+ @command_manager.process_args("install --remote")
82
+ assert_equal :remote, check_options[:domain]
83
+
84
+ #check both domain
85
+ check_options = nil
86
+ @command_manager.process_args("install --both")
87
+ assert_equal :both, check_options[:domain]
88
+
89
+ #check both domain
90
+ check_options = nil
91
+ @command_manager.process_args("install --both")
92
+ assert_equal :both, check_options[:domain]
93
+ end
94
+ end
95
+
96
+ def test_process_args_uninstall
97
+ #capture all uninstall options
98
+ check_options = nil
99
+ @command_manager['uninstall'].when_invoked do |options|
100
+ check_options = options
101
+ true
102
+ end
103
+
104
+ #check defaults
105
+ @command_manager.process_args("uninstall")
106
+ assert_equal LibGems::Requirement.default, check_options[:version]
107
+
108
+ #check settings
109
+ check_options = nil
110
+ @command_manager.process_args("uninstall foobar --version 3.0")
111
+ assert_equal "foobar", check_options[:args].first
112
+ assert_equal LibGems::Requirement.new('3.0'), check_options[:version]
113
+ end
114
+
115
+ def test_process_args_check
116
+ #capture all check options
117
+ check_options = nil
118
+ @command_manager['check'].when_invoked do |options|
119
+ check_options = options
120
+ true
121
+ end
122
+
123
+ #check defaults
124
+ @command_manager.process_args("check")
125
+ assert_equal false, check_options[:verify]
126
+ assert_equal false, check_options[:alien]
127
+
128
+ #check settings
129
+ check_options = nil
130
+ @command_manager.process_args("check --verify foobar --alien")
131
+ assert_equal "foobar", check_options[:verify]
132
+ assert_equal true, check_options[:alien]
133
+ end
134
+
135
+ def test_process_args_build
136
+ #capture all build options
137
+ check_options = nil
138
+ @command_manager['build'].when_invoked do |options|
139
+ check_options = options
140
+ true
141
+ end
142
+
143
+ #check defaults
144
+ @command_manager.process_args("build")
145
+ #NOTE: Currently no defaults
146
+
147
+ #check settings
148
+ check_options = nil
149
+ @command_manager.process_args("build foobar.rb")
150
+ assert_equal 'foobar.rb', check_options[:args].first
151
+ end
152
+
153
+ def test_process_args_query
154
+ #capture all query options
155
+ check_options = nil
156
+ @command_manager['query'].when_invoked do |options|
157
+ check_options = options
158
+ true
159
+ end
160
+
161
+ #check defaults
162
+ @command_manager.process_args("query")
163
+ assert_equal(//, check_options[:name])
164
+ assert_equal :local, check_options[:domain]
165
+ assert_equal false, check_options[:details]
166
+
167
+ #check settings
168
+ check_options = nil
169
+ @command_manager.process_args("query --name foobar --local --details")
170
+ assert_equal(/foobar/i, check_options[:name])
171
+ assert_equal :local, check_options[:domain]
172
+ assert_equal true, check_options[:details]
173
+
174
+ #remote domain
175
+ check_options = nil
176
+ @command_manager.process_args("query --remote")
177
+ assert_equal :remote, check_options[:domain]
178
+
179
+ #both (local/remote) domains
180
+ check_options = nil
181
+ @command_manager.process_args("query --both")
182
+ assert_equal :both, check_options[:domain]
183
+ end
184
+
185
+ def test_process_args_update
186
+ #capture all update options
187
+ check_options = nil
188
+ @command_manager['update'].when_invoked do |options|
189
+ check_options = options
190
+ true
191
+ end
192
+
193
+ #check defaults
194
+ @command_manager.process_args("update")
195
+ assert_equal true, check_options[:generate_rdoc]
196
+
197
+ #check settings
198
+ check_options = nil
199
+ @command_manager.process_args("update --force --test --rdoc --install-dir .")
200
+ assert_equal true, check_options[:test]
201
+ assert_equal true, check_options[:generate_rdoc]
202
+ assert_equal true, check_options[:force]
203
+ assert_equal Dir.pwd, check_options[:install_dir]
204
+ end
205
+
206
+ end
207
+
@@ -0,0 +1,74 @@
1
+ require File.expand_path('../gemutilities', __FILE__)
2
+ require 'libgems/commands/build_command'
3
+ require 'libgems/format'
4
+
5
+ class TestGemCommandsBuildCommand < RubyGemTestCase
6
+
7
+ def setup
8
+ super
9
+
10
+ @gem = quick_gem 'some_gem' do |s|
11
+ s.rubyforge_project = 'example'
12
+ end
13
+
14
+ @cmd = LibGems::Commands::BuildCommand.new
15
+ end
16
+
17
+ def test_execute
18
+ gemspec_file = File.join(@tempdir, @gem.spec_name)
19
+
20
+ File.open gemspec_file, 'w' do |gs|
21
+ gs.write @gem.to_ruby
22
+ end
23
+
24
+ util_test_build_gem @gem, gemspec_file
25
+ end
26
+
27
+ def test_execute_yaml
28
+ gemspec_file = File.join(@tempdir, @gem.spec_name)
29
+
30
+ File.open gemspec_file, 'w' do |gs|
31
+ gs.write @gem.to_yaml
32
+ end
33
+
34
+ util_test_build_gem @gem, gemspec_file
35
+ end
36
+
37
+ def test_execute_bad_gem
38
+ @cmd.options[:args] = %w[some_gem]
39
+ use_ui @ui do
40
+ @cmd.execute
41
+ end
42
+
43
+ assert_equal '', @ui.output
44
+ assert_equal "ERROR: Gemspec file not found: some_gem\n", @ui.error
45
+ end
46
+
47
+ def util_test_build_gem(gem, gemspec_file)
48
+ @cmd.options[:args] = [gemspec_file]
49
+
50
+ use_ui @ui do
51
+ Dir.chdir @tempdir do
52
+ @cmd.execute
53
+ end
54
+ end
55
+
56
+ output = @ui.output.split "\n"
57
+ assert_equal " Successfully built RubyGem", output.shift
58
+ assert_equal " Name: some_gem", output.shift
59
+ assert_equal " Version: 2", output.shift
60
+ assert_equal " File: some_gem-2.gem", output.shift
61
+ assert_equal [], output
62
+ assert_equal '', @ui.error
63
+
64
+ gem_file = File.join @tempdir, gem.file_name
65
+ assert File.exist?(gem_file)
66
+
67
+ spec = LibGems::Format.from_file_by_path(gem_file).spec
68
+
69
+ assert_equal "some_gem", spec.name
70
+ assert_equal "this is a summary", spec.summary
71
+ end
72
+
73
+ end
74
+