sashimi 0.1.7 → 0.2.0
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.
- data/CHANGELOG +66 -0
- data/README +24 -26
- data/Rakefile +10 -0
- data/lib/sashimi/commands.rb +5 -1
- data/lib/sashimi/core_ext/array.rb +22 -0
- data/lib/sashimi/core_ext/class.rb +2 -2
- data/lib/sashimi/core_ext/string.rb +13 -0
- data/lib/sashimi/plugin.rb +3 -4
- data/lib/sashimi/repositories/abstract_repository.rb +121 -101
- data/lib/sashimi/repositories/git_repository.rb +9 -4
- data/lib/sashimi/repositories/svn_repository.rb +9 -4
- data/lib/sashimi/version.rb +2 -2
- data/lib/sashimi.rb +23 -0
- data/sashimi.gemspec +2 -2
- data/test/test_helper.rb +112 -30
- data/test/unit/core_ext/array_test.rb +22 -0
- data/test/unit/core_ext/class_test.rb +10 -3
- data/test/unit/core_ext/string_test.rb +20 -0
- data/test/unit/plugin_test.rb +4 -5
- data/test/unit/repositories/abstract_repository_test.rb +254 -79
- data/test/unit/repositories/git_repository_test.rb +1 -1
- data/test/unit/repositories/svn_repository_test.rb +2 -2
- data/test/unit/version_test.rb +1 -1
- metadata +8 -2
@@ -2,137 +2,312 @@ require 'test/unit'
|
|
2
2
|
require 'test/test_helper'
|
3
3
|
|
4
4
|
class AbstractRepositoryTest < Test::Unit::TestCase
|
5
|
+
include Sashimi
|
6
|
+
|
5
7
|
def test_initialize
|
6
|
-
assert repository
|
7
|
-
assert repository.plugin.name
|
8
|
-
assert repository.plugin.url
|
8
|
+
assert repository.plugin
|
9
9
|
end
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
assert_match(/\.rails\/plugins$/, repository.local_repository_path)
|
11
|
+
def test_plugins_path
|
12
|
+
assert_equal 'sashimi_test/.rails/plugins', repository.class.plugins_path
|
14
13
|
end
|
15
14
|
|
16
15
|
def test_cache_file
|
17
|
-
assert_equal
|
16
|
+
assert_equal cache_file, repository.class.cache_file
|
18
17
|
end
|
19
|
-
|
20
|
-
def
|
21
|
-
assert_equal
|
18
|
+
|
19
|
+
def test_plugins_names
|
20
|
+
assert_equal cached_plugins.keys.sort, repository.class.plugins_names
|
22
21
|
end
|
23
|
-
|
24
|
-
|
22
|
+
|
23
|
+
def test_temp_suffix
|
24
|
+
assert_equal '-tmp', AbstractRepository::TEMP_SUFFIX
|
25
|
+
end
|
26
|
+
|
27
|
+
### INSTANTIATE
|
28
|
+
|
29
|
+
def test_instantiate_repository
|
30
|
+
assert_kind_of GitRepository, repository.class.instantiate_repository(plugin)
|
31
|
+
assert_kind_of GitRepository, repository.class.instantiate_repository(create_plugin('sashimi', plugin.url))
|
32
|
+
end
|
33
|
+
|
25
34
|
def test_should_instantiate_repository_by_url
|
26
|
-
|
27
|
-
|
35
|
+
assert_equal SvnRepository, AbstractRepository.instantiate_repository_by_url(create_plugin(nil, 'http://svn.com'))
|
36
|
+
assert_equal GitRepository, AbstractRepository.instantiate_repository_by_url(plugin)
|
28
37
|
end
|
29
38
|
|
30
39
|
def test_should_instantiate_repository_by_cache
|
31
|
-
|
32
|
-
|
40
|
+
assert repository.class.instantiate_repository_by_cache(create_plugin('sashimi', plugin.url))
|
41
|
+
end
|
42
|
+
|
43
|
+
### COMMANDS
|
44
|
+
|
45
|
+
# ADD
|
46
|
+
def test_should_add_plugin_to_rails_app
|
47
|
+
with_path rails_app_path do
|
48
|
+
repository.add
|
49
|
+
assert_path_exists "vendor/plugins/#{repository.plugin.name}"
|
33
50
|
end
|
34
51
|
end
|
35
52
|
|
36
|
-
def
|
37
|
-
|
53
|
+
def test_should_raise_exception_on_adding_missing_plugin
|
54
|
+
with_path rails_app_path do
|
55
|
+
assert_raise PluginNotFound do
|
56
|
+
create_repository('unexistent').add
|
57
|
+
end
|
58
|
+
end
|
38
59
|
end
|
39
60
|
|
40
|
-
#
|
41
|
-
def
|
42
|
-
|
43
|
-
|
61
|
+
# UNINSTALL
|
62
|
+
def test_should_uninstall_plugin_from_repository
|
63
|
+
repository.uninstall
|
64
|
+
with_path plugins_path do
|
65
|
+
assert_path_not_exists repository.plugin.name
|
44
66
|
end
|
67
|
+
assert_not repository.class.plugins_names.include?(repository.plugin.name)
|
45
68
|
end
|
46
69
|
|
47
|
-
def
|
48
|
-
|
49
|
-
|
70
|
+
def test_should_raise_exception_on_uninstalling_missing_plugin
|
71
|
+
assert_raise PluginNotFound do
|
72
|
+
create_repository('unexistent').uninstall
|
50
73
|
end
|
51
74
|
end
|
52
75
|
|
53
|
-
#
|
54
|
-
def
|
55
|
-
repository.
|
56
|
-
assert_equal(repository.class.find_home, Dir.pwd)
|
76
|
+
# LIST
|
77
|
+
def test_should_list_installed_plugins
|
78
|
+
assert_equal cached_plugins, repository.class.list
|
57
79
|
end
|
80
|
+
|
81
|
+
### SCM
|
58
82
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
assert_equal
|
83
|
+
uses_mocha 'AbstractRepositoryTestSCM' do
|
84
|
+
def test_guess_version_control_system
|
85
|
+
File.expects(:exists?).with('.git').returns true
|
86
|
+
assert_equal :git, repository.class.guess_version_control_system
|
87
|
+
|
88
|
+
File.expects(:exists?).with('.git').returns false
|
89
|
+
assert_equal :svn, repository.class.guess_version_control_system
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_scm_command
|
93
|
+
File.stubs(:exists?).with('.git').returns true
|
94
|
+
Kernel.expects(:system).with('git add file.rb')
|
95
|
+
repository.class.scm_command('add', 'file.rb')
|
63
96
|
end
|
97
|
+
|
98
|
+
def test_scm_add
|
99
|
+
File.stubs(:exists?).with('.git').returns true
|
100
|
+
Kernel.expects(:system).with('git add file.rb')
|
101
|
+
repository.class.scm_add('file.rb')
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_scm_remove
|
105
|
+
File.stubs(:exists?).with('.git').returns true
|
106
|
+
Kernel.expects(:system).with('git rm file.rb')
|
107
|
+
repository.class.scm_remove('file.rb')
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_under_version_control
|
111
|
+
Dir.expects(:glob).with(".{git,svn}").returns %w(.git)
|
112
|
+
assert repository.class.under_version_control?
|
113
|
+
end
|
64
114
|
end
|
65
115
|
|
66
|
-
def
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
116
|
+
def test_git_url
|
117
|
+
assert repository.class.git_url?(plugin.url)
|
118
|
+
assert repository.class.git_url?(plugin.url.gsub('git:', 'http:'))
|
119
|
+
assert_not repository.class.git_url?('http://repository.com/plugin/trunk')
|
120
|
+
end
|
121
|
+
|
122
|
+
### PATH
|
123
|
+
|
124
|
+
uses_mocha 'AbstractRepositoryTestPath' do
|
125
|
+
def test_local_repository_path
|
126
|
+
AbstractRepository.expects(:find_home).returns '/Users/luca'
|
127
|
+
File.stubs(:SEPARATOR).returns '/'
|
128
|
+
expected = [ repository.class.find_home, repository.class.plugins_path ].to_path
|
129
|
+
assert_equal expected, repository.local_repository_path
|
130
|
+
end
|
131
|
+
|
132
|
+
def _ignore_test_find_home
|
133
|
+
flunk
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_with_path
|
137
|
+
old_path = Dir.pwd
|
138
|
+
repository.with_path 'test' do
|
139
|
+
assert_equal [old_path, 'test'].to_path, Dir.pwd
|
140
|
+
end
|
141
|
+
assert_equal old_path, Dir.pwd
|
71
142
|
end
|
72
143
|
end
|
73
144
|
|
74
|
-
def
|
75
|
-
|
76
|
-
repository.
|
77
|
-
create_repository('plugin', '').copy_plugin_to_rails_app
|
78
|
-
assert File.exists?(File.join('vendor', 'plugins', 'plugin', 'about.yml'))
|
145
|
+
def test_path_to_rails_app
|
146
|
+
with_path rails_app_path do
|
147
|
+
assert_equal Dir.pwd, repository.class.path_to_rails_app
|
79
148
|
end
|
80
149
|
end
|
81
150
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
assert_equal(repository.local_repository_path, Dir.pwd)
|
87
|
-
assert File.exists?(repository.cache_file)
|
151
|
+
def test_absolute_rails_plugins_path
|
152
|
+
with_path rails_app_path do
|
153
|
+
expected = "#{Dir.pwd}/vendor/plugins".to_path
|
154
|
+
assert_equal expected, repository.class.absolute_rails_plugins_path
|
88
155
|
end
|
89
156
|
end
|
157
|
+
|
158
|
+
def test_rails_plugins_path
|
159
|
+
assert_equal 'vendor/plugins'.to_path, repository.class.rails_plugins_path
|
160
|
+
end
|
161
|
+
|
162
|
+
def test_plugin_path
|
163
|
+
expected = [ plugins_path, repository.plugin.name ].to_path
|
164
|
+
assert_equal expected, repository.plugin_path
|
165
|
+
end
|
166
|
+
|
167
|
+
### FILES
|
168
|
+
|
169
|
+
uses_mocha 'AbstractRepositoryTestFile' do
|
170
|
+
def _ignore_test_copy_plugin_and_remove_hidden_folders
|
171
|
+
flunk
|
172
|
+
end
|
173
|
+
|
174
|
+
def test_update_rails_plugins
|
175
|
+
AbstractRepository.expects(:under_version_control?).returns true
|
176
|
+
AbstractRepository.expects(:update_versioned_rails_plugins)
|
177
|
+
AbstractRepository.update_rails_plugins plugin.name
|
178
|
+
|
179
|
+
AbstractRepository.expects(:under_version_control?).returns false
|
180
|
+
AbstractRepository.expects(:update_unversioned_rails_plugins)
|
181
|
+
AbstractRepository.update_rails_plugins plugin.name
|
182
|
+
end
|
183
|
+
|
184
|
+
def _ignore_test_update_unversioned_rails_plugins
|
185
|
+
FileUtils.stubs(:rm_rf) # because of teardown
|
186
|
+
FileUtils.expects(:rm_rf).with 'sashimi'
|
187
|
+
FileUtils.stubs(:cd)
|
188
|
+
AbstractRepository.expects(:instantiate_repository_by_cache).returns GitRepository
|
189
|
+
GitRepository.stubs(:cache_content).returns({ 'sashimi' => nil })
|
190
|
+
Plugin.expects(:add)
|
191
|
+
FileUtils.expects(:cp_r).with [ plugins_path, repository.plugin.name ].to_path,
|
192
|
+
[ repository.class.rails_plugins_path, repository.temp_plugin_name ].to_path
|
193
|
+
FileUtils.expects(:mv).with [ repository.rails_plugins_path, repository.temp_plugin_name ].to_path,
|
194
|
+
[ repository.rails_plugins_path, repository.plugin.name ].to_path
|
195
|
+
|
196
|
+
AbstractRepository.update_unversioned_rails_plugins 'sashimi'
|
197
|
+
end
|
198
|
+
|
199
|
+
def _ignore_test_update_versioned_rails_plugins
|
200
|
+
flunk
|
201
|
+
end
|
202
|
+
|
203
|
+
def _ignore_test_files_scheduled_for_add
|
204
|
+
flunk
|
205
|
+
end
|
206
|
+
|
207
|
+
def _ignore_test_files_scheduled_for_remove
|
208
|
+
flunk
|
209
|
+
end
|
210
|
+
|
211
|
+
def test_remove_temp_folder
|
212
|
+
with_path rails_app_path do
|
213
|
+
FileUtils.expects(:rm_rf).with [ repository.absolute_rails_plugins_path,
|
214
|
+
repository.temp_plugin_name].to_path
|
215
|
+
repository.remove_temp_folder
|
216
|
+
FileUtils.stubs(:rm_rf) # because of teardown
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
220
|
+
def test_prepare_installation
|
221
|
+
FileUtils.expects(:mkdir_p).with repository.local_repository_path
|
222
|
+
FileUtils.expects(:touch).with [ repository.local_repository_path, cache_file ].to_path
|
223
|
+
repository.prepare_installation
|
224
|
+
end
|
90
225
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
226
|
+
def test_copy_plugin_to_rails_app
|
227
|
+
FileUtils.expects(:mkdir_p).with repository.absolute_rails_plugins_path
|
228
|
+
FileUtils.expects(:cp_r).with [ repository.local_repository_path, repository.plugin.name ].to_path,
|
229
|
+
[ repository.absolute_rails_plugins_path, repository.temp_plugin_name ].to_path
|
230
|
+
repository.copy_plugin_to_rails_app
|
95
231
|
end
|
96
232
|
end
|
233
|
+
|
234
|
+
def _ignore_test_remove_hidden_folders
|
235
|
+
flunk
|
236
|
+
end
|
237
|
+
|
238
|
+
### CACHE
|
239
|
+
|
240
|
+
def test_cache_content
|
241
|
+
assert_equal cached_plugins, repository.class.cache_content
|
242
|
+
end
|
97
243
|
|
98
|
-
def
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
244
|
+
def test_should_add_a_new_plugin_to_cache
|
245
|
+
with_clear_cache do
|
246
|
+
with_path local_repository_path do
|
247
|
+
create_plugin_directory('brand_new')
|
248
|
+
plugin = create_plugin(nil, 'git://github.com/jodosha/brand_new.git')
|
249
|
+
repository.add_to_cache(plugin)
|
250
|
+
assert_equal cached_plugins.merge(plugin.to_hash), repository.class.cache_content
|
251
|
+
end
|
103
252
|
end
|
104
253
|
end
|
105
254
|
|
106
|
-
def
|
107
|
-
|
108
|
-
|
109
|
-
|
255
|
+
def test_should_merge_an_existent_plugin_into_cache
|
256
|
+
with_clear_cache do
|
257
|
+
with_path local_repository_path do
|
258
|
+
repository.add_to_cache(plugin)
|
259
|
+
assert_equal cached_plugins.merge(plugin.to_hash), repository.class.cache_content
|
260
|
+
end
|
110
261
|
end
|
111
262
|
end
|
112
263
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
264
|
+
def test_remove_from_cache
|
265
|
+
with_clear_cache do
|
266
|
+
with_path local_repository_path do
|
267
|
+
repository.remove_from_cache
|
268
|
+
assert_not repository.class.plugins_names.include?(plugin.name)
|
269
|
+
end
|
118
270
|
end
|
119
271
|
end
|
120
272
|
|
121
|
-
def
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
273
|
+
def test_write_to_cache
|
274
|
+
with_clear_cache do
|
275
|
+
with_path plugins_path do
|
276
|
+
repository.write_to_cache(plugin.to_hash)
|
277
|
+
assert_equal plugin.to_hash, repository.class.cache_content
|
278
|
+
end
|
126
279
|
end
|
127
280
|
end
|
128
281
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
282
|
+
### OTHER
|
283
|
+
|
284
|
+
def test_should_load_about_yml
|
285
|
+
assert_not_empty repository.about.keys
|
133
286
|
end
|
134
|
-
|
135
|
-
def
|
136
|
-
|
287
|
+
|
288
|
+
def test_should_return_empty_hash_for_unexistent_about_yml
|
289
|
+
assert_nothing_raised Exception do
|
290
|
+
assert_empty create_repository('plug-in').about.keys
|
291
|
+
end
|
292
|
+
end
|
293
|
+
|
294
|
+
def test_temp_plugin_name
|
295
|
+
assert_equal repository.plugin.name + AbstractRepository::TEMP_SUFFIX,
|
296
|
+
repository.temp_plugin_name
|
297
|
+
end
|
298
|
+
|
299
|
+
uses_mocha 'AbstractRepositoryTestOther' do
|
300
|
+
def test_should_run_install_hook
|
301
|
+
File.expects(:exists?).returns true
|
302
|
+
Kernel.expects(:load)
|
303
|
+
repository.run_install_hook
|
304
|
+
end
|
305
|
+
|
306
|
+
def test_should_not_raise_exception_running_install_hook_with_missing_file
|
307
|
+
assert_nothing_raised Exception do
|
308
|
+
Kernel.expects(:load).never
|
309
|
+
create_repository('plug-in').run_install_hook
|
310
|
+
end
|
311
|
+
end
|
137
312
|
end
|
138
313
|
end
|
@@ -20,7 +20,7 @@ class GitRepositoryTest < Test::Unit::TestCase
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def test_should_create_git_repository
|
23
|
-
|
23
|
+
repository.with_path plugins_path do
|
24
24
|
FileUtils.mkdir_p('sashimi')
|
25
25
|
Kernel.expects(:system).with('git clone git://github.com/jodosha/sashimi.git')
|
26
26
|
GitRepository.new(plugin).install
|
@@ -19,8 +19,8 @@ class SvnRepositoryTest < Test::Unit::TestCase
|
|
19
19
|
assert_raise(Errno::ENOENT) { repository.install }
|
20
20
|
end
|
21
21
|
|
22
|
-
def
|
23
|
-
|
22
|
+
def test_should_create_svn_repository
|
23
|
+
repository.with_path plugins_path do
|
24
24
|
FileUtils.mkdir_p('sashimi')
|
25
25
|
Kernel.expects(:system).with('svn co http://dev.repository.com/svn/sashimi/trunk sashimi')
|
26
26
|
SvnRepository.new(create_plugin(nil, 'http://dev.repository.com/svn/sashimi/trunk')).install
|
data/test/unit/version_test.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sashimi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luca Guidi
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-07-14 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -39,7 +39,9 @@ files:
|
|
39
39
|
- lib/sashimi.rb
|
40
40
|
- lib/sashimi/commands.rb
|
41
41
|
- lib/sashimi/core_ext.rb
|
42
|
+
- lib/sashimi/core_ext/array.rb
|
42
43
|
- lib/sashimi/core_ext/class.rb
|
44
|
+
- lib/sashimi/core_ext/string.rb
|
43
45
|
- lib/sashimi/plugin.rb
|
44
46
|
- lib/sashimi/repositories.rb
|
45
47
|
- lib/sashimi/repositories/abstract_repository.rb
|
@@ -49,7 +51,9 @@ files:
|
|
49
51
|
- sashimi.gemspec
|
50
52
|
- setup.rb
|
51
53
|
- test/test_helper.rb
|
54
|
+
- test/unit/core_ext/array_test.rb
|
52
55
|
- test/unit/core_ext/class_test.rb
|
56
|
+
- test/unit/core_ext/string_test.rb
|
53
57
|
- test/unit/plugin_test.rb
|
54
58
|
- test/unit/repositories/abstract_repository_test.rb
|
55
59
|
- test/unit/repositories/git_repository_test.rb
|
@@ -82,7 +86,9 @@ signing_key:
|
|
82
86
|
specification_version: 2
|
83
87
|
summary: Rails plugins manager
|
84
88
|
test_files:
|
89
|
+
- test/unit/core_ext/array_test.rb
|
85
90
|
- test/unit/core_ext/class_test.rb
|
91
|
+
- test/unit/core_ext/string_test.rb
|
86
92
|
- test/unit/plugin_test.rb
|
87
93
|
- test/unit/repositories/abstract_repository_test.rb
|
88
94
|
- test/unit/repositories/git_repository_test.rb
|