sashimi 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,41 @@
1
+ * *v0.1.6*
2
+
3
+ * Tagged v0.1.6
4
+
5
+ * Prepare for v0.1.6
6
+
7
+ * Massive changelog
8
+
9
+ * Added rubyforge project reference to gemspec
10
+
11
+ * Added sashimi*.gem to .gitignore
12
+
13
+ * Removed AbstractRepository#cache_file, now uses cattr_accessor
14
+
15
+ * Updated annotation for AbstractRepository public methods in test/test_helper.rb
16
+
17
+ * Introduced Class#class_method_proxy in order to make available annotated class methods as private methods
18
+
19
+ Example:
20
+ class Repository
21
+ def self.path
22
+ @@path
23
+ end
24
+
25
+ class_method_proxy :path
26
+ end
27
+
28
+ Produces:
29
+ # Proxy method for <tt>Repository#path</tt>
30
+ def path
31
+ self.class.path
32
+ end
33
+ private :path
34
+
35
+ * Improved tests for repositories system calls
36
+
37
+
38
+
1
39
  * *v0.1.5*
2
40
 
3
41
  * Tagged v0.1.5
data/lib/sashimi.rb CHANGED
@@ -6,6 +6,7 @@ require 'yaml'
6
6
  require 'fileutils'
7
7
  require 'rubygems'
8
8
  require 'activesupport'
9
+ require 'sashimi/core_ext'
9
10
  require 'sashimi/plugin'
10
11
  require 'sashimi/repositories'
11
12
  require 'sashimi/version'
@@ -13,6 +13,8 @@ module Sashimi
13
13
  class AbstractRepository
14
14
  @@local_repository_sub_path = File.join('.rails', 'plugins')
15
15
  @@cache_file = '.plugins'
16
+ cattr_accessor :cache_file
17
+
16
18
  attr_accessor :plugin
17
19
 
18
20
  def initialize(plugin)
@@ -117,10 +119,6 @@ module Sashimi
117
119
  @local_repository_path ||= File.join(find_home, @@local_repository_sub_path)
118
120
  end
119
121
 
120
- def cache_file #:nodoc:
121
- @@cache_file
122
- end
123
-
124
122
  # Return the path to the Rails app where the user launched sashimi command.
125
123
  def path_to_rails_app
126
124
  $rails_app
@@ -234,52 +232,16 @@ module Sashimi
234
232
  FileUtils.rm_rf(plugin.name+'-tmp')
235
233
  end
236
234
 
235
+ class_method_proxy :change_dir, :change_dir_to_local_repository,
236
+ :change_dir_to_absolute_plugins_dir, :local_repository_path,
237
+ :cache_file, :cache_content, :plugins_dir, :path_to_rails_app
238
+
237
239
  private
238
- # Proxy for <tt>AbstractRepository#change_dir</tt>
239
- def change_dir(dir)
240
- self.class.change_dir(dir)
241
- end
242
-
243
- # Proxy for <tt>AbstractRepository#change_dir_to_local_repository</tt>
244
- def change_dir_to_local_repository
245
- self.class.change_dir_to_local_repository
246
- end
247
-
248
- # Proxy for <tt>AbstractRepository#change_dir_to_absolute_plugins_dir</tt>
249
- def change_dir_to_absolute_plugins_dir
250
- self.class.change_dir_to_absolute_plugins_dir
251
- end
252
-
253
240
  # Change the current directory with the plugin one
254
241
  def change_dir_to_plugin_path
255
242
  change_dir(File.join(local_repository_path, plugin.name || plugin.guess_name))
256
243
  end
257
244
 
258
- # Proxy for <tt>AbstractRepository#local_repository_path</tt>
259
- def local_repository_path
260
- self.class.local_repository_path
261
- end
262
-
263
- # Proxy for <tt>AbstractRepository#cache_file</tt>
264
- def cache_file
265
- self.class.cache_file
266
- end
267
-
268
- # Proxy for <tt>AbstractRepository#cache_content</tt>
269
- def cache_content
270
- self.class.cache_content
271
- end
272
-
273
- # Proxy for <tt>AbstractRepository#plugins_dir</tt>
274
- def plugins_dir
275
- self.class.plugins_dir
276
- end
277
-
278
- # Proxy for <tt>AbstractRepository#path_to_rails_app</tt>
279
- def path_to_rails_app
280
- self.class.path_to_rails_app
281
- end
282
-
283
245
  # Prepare the plugin installation
284
246
  def prepare_installation
285
247
  FileUtils.mkdir_p(local_repository_path)
@@ -3,14 +3,14 @@ module Sashimi
3
3
  def install
4
4
  prepare_installation
5
5
  puts plugin.guess_name.titleize + "\n\n"
6
- system("git clone #{plugin.url}")
6
+ Kernel.system("git clone #{plugin.url}")
7
7
  add_to_cache(plugin.to_hash)
8
8
  end
9
9
 
10
10
  def update
11
11
  puts plugin.name.titleize + "\n\n"
12
12
  change_dir_to_plugin_path
13
- system('git pull')
13
+ Kernel.system('git pull')
14
14
  end
15
15
  end
16
16
  end
@@ -3,14 +3,14 @@ module Sashimi
3
3
  def install
4
4
  prepare_installation
5
5
  puts plugin.guess_name.titleize + "\n\n"
6
- system("svn co #{plugin.url} #{plugin.guess_name}")
6
+ Kernel.system("svn co #{plugin.url} #{plugin.guess_name}")
7
7
  add_to_cache(plugin.to_hash)
8
8
  end
9
9
 
10
10
  def update
11
11
  puts plugin.name.titleize + "\n\n"
12
12
  change_dir_to_plugin_path
13
- system("svn up")
13
+ Kernel.system("svn up")
14
14
  end
15
15
  end
16
16
  end
data/sashimi.gemspec CHANGED
@@ -1,13 +1,14 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "sashimi"
3
- s.version = "0.1.5"
4
- s.date = "2008-05-20"
3
+ s.version = "0.1.6"
4
+ s.date = "2008-06-23"
5
5
  s.summary = "Rails plugins manager"
6
6
  s.author = "Luca Guidi"
7
7
  s.email = "guidi.luca@gmail.com"
8
8
  s.homepage = "http://lucaguidi.com/pages/sashimi"
9
9
  s.description = "Sashimi is a local repository for Rails plugins."
10
10
  s.has_rdoc = true
11
+ s.rubyforge_project = %q{sashimi}
11
12
  s.executables = [ 'sashimi' ]
12
13
  s.files = ["CHANGELOG", "MIT-LICENSE", "Rakefile", "README", "sashimi.gemspec", "setup.rb", "bin/sashimi", "lib/sashimi/commands.rb", "lib/sashimi/plugin.rb", "lib/sashimi/repositories/abstract_repository.rb", "lib/sashimi/repositories/git_repository.rb", "lib/sashimi/repositories/svn_repository.rb", "lib/sashimi/repositories.rb", "lib/sashimi.rb", "test/test_helper.rb", "test/unit/plugin_test.rb", "test/unit/repositories/abstract_repository_test.rb", "test/unit/repositories/git_repository_test.rb", "test/unit/repositories/svn_repository_test.rb"]
13
14
  s.test_files = ["test/unit/plugin_test.rb", "test/unit/repositories/abstract_repository_test.rb", "test/unit/repositories/git_repository_test.rb", "test/unit/repositories/svn_repository_test.rb"]
data/test/test_helper.rb CHANGED
@@ -65,9 +65,24 @@ end
65
65
  module Sashimi
66
66
  class AbstractRepository
67
67
  @@local_repository_sub_path = 'sashimi_test/.rails/plugins'
68
- public :local_repository_path, :change_dir, :prepare_installation,
69
- :cache_file, :add_to_cache, :remove_from_cache,
70
- :cache_content, :change_dir_to_local_repository,
71
- :change_dir_to_plugin_path, :plugins_dir, :copy_plugin_to_rails_app
68
+ public :add_to_cache, :cache_content, :cache_file,
69
+ :change_dir, :change_dir_to_absolute_plugins_dir,
70
+ :change_dir_to_local_repository, :change_dir_to_plugin_path,
71
+ :copy_plugin_to_rails_app, :local_repository_path, :path_to_rails_app,
72
+ :plugins_dir, :prepare_installation, :remove_from_cache,
73
+ :remove_hidden_folders, :rename_temp_folder, :run_install_hook,
74
+ :write_to_cache
72
75
  end
73
76
  end
77
+
78
+ # Thanks to Rails Core Team
79
+ def uses_mocha(description)
80
+ require 'rubygems'
81
+ require 'mocha'
82
+ yield
83
+ rescue LoadError
84
+ $stderr.puts "Skipping #{description} tests. `gem install mocha` and try again."
85
+ end
86
+
87
+ def puts(message) #shut-up!
88
+ end
@@ -5,4 +5,28 @@ class GitRepositoryTest < Test::Unit::TestCase
5
5
  def test_type
6
6
  assert_equal('git', GitRepository.new(nil).scm_type)
7
7
  end
8
- end
8
+
9
+ uses_mocha 'test_git_system_calls_for_install_and_update_process' do
10
+ def test_should_raise_exception_for_unexistent_repository
11
+ Kernel.expects(:system).with('git clone unexistent').raises(Errno::ENOENT)
12
+ repository = GitRepository.new(create_plugin(nil, 'unexistent'))
13
+ assert_raise(Errno::ENOENT) { repository.install }
14
+ end
15
+
16
+ def test_should_raise_exception_for_non_repository_url
17
+ Kernel.expects(:system).with('git clone http://github.com/jodosha.git').raises(Errno::ENOENT)
18
+ repository = GitRepository.new(create_plugin(nil, 'http://github.com/jodosha.git'))
19
+ assert_raise(Errno::ENOENT) { repository.install }
20
+ end
21
+
22
+ def test_should_create_git_repository
23
+ initialize_repository_for_test do
24
+ FileUtils.mkdir_p('sashimi')
25
+ Kernel.expects(:system).with('git clone git://github.com/jodosha/sashimi.git')
26
+ GitRepository.new(plugin).install
27
+ File.expects(:exists?).with('.git').returns(true)
28
+ assert File.exists?('.git')
29
+ end
30
+ end
31
+ end
32
+ end
@@ -5,4 +5,28 @@ class SvnRepositoryTest < Test::Unit::TestCase
5
5
  def test_type
6
6
  assert_equal('svn', SvnRepository.new(nil).scm_type)
7
7
  end
8
- end
8
+
9
+ uses_mocha 'test_svn_system_calls_for_install_and_update_process' do
10
+ def test_should_raise_exception_for_unexistent_repository
11
+ Kernel.expects(:system).with('svn co unexistent unexistent').raises(Errno::ENOENT)
12
+ repository = SvnRepository.new(create_plugin(nil, 'unexistent'))
13
+ assert_raise(Errno::ENOENT) { repository.install }
14
+ end
15
+
16
+ def test_should_raise_exception_for_non_repository_url
17
+ Kernel.expects(:system).with('svn co http://sushistarweb.com sushistarweb.com').raises(Errno::ENOENT)
18
+ repository = SvnRepository.new(create_plugin(nil, 'http://sushistarweb.com'))
19
+ assert_raise(Errno::ENOENT) { repository.install }
20
+ end
21
+
22
+ def test_should_create_git_repository
23
+ initialize_repository_for_test do
24
+ FileUtils.mkdir_p('sashimi')
25
+ Kernel.expects(:system).with('svn co http://dev.repository.com/svn/sashimi/trunk sashimi')
26
+ SvnRepository.new(create_plugin(nil, 'http://dev.repository.com/svn/sashimi/trunk')).install
27
+ File.expects(:exists?).with('.svn').returns(true)
28
+ assert File.exists?('.svn')
29
+ end
30
+ end
31
+ end
32
+ end
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.1.5
4
+ version: 0.1.6
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-05-20 00:00:00 +02:00
12
+ date: 2008-06-23 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -71,7 +71,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
71
  version:
72
72
  requirements: []
73
73
 
74
- rubyforge_project:
74
+ rubyforge_project: sashimi
75
75
  rubygems_version: 1.1.1
76
76
  signing_key:
77
77
  specification_version: 2