You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltacloud.apache.org by mf...@apache.org on 2013/04/10 21:38:22 UTC

[6/6] git commit: Core: Refactor how we load the driver source file (DTACLOUD-540)

Core: Refactor how we load the driver source file (DTACLOUD-540)

The current way how we load the driver using #driver helper
will exit silently (with nil) if 'NameError' is raised while
the *Driver#new.

For example, if you require MockDriver but you don't require the
mock_initialize.rb file, you get 'NameError' exception for not existing
MOCK_STORAGE constant.


Project: http://git-wip-us.apache.org/repos/asf/deltacloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltacloud/commit/5a19b0df
Tree: http://git-wip-us.apache.org/repos/asf/deltacloud/tree/5a19b0df
Diff: http://git-wip-us.apache.org/repos/asf/deltacloud/diff/5a19b0df

Branch: refs/heads/master
Commit: 5a19b0df5a34a761a1a7475e0a873ad23a36c472
Parents: a88c1f1
Author: Michal Fojtik <mf...@redhat.com>
Authored: Wed Apr 10 11:22:25 2013 +0200
Committer: Michal fojtik <mf...@redhat.com>
Committed: Wed Apr 10 21:31:36 2013 +0200

----------------------------------------------------------------------
 server/lib/deltacloud/helpers/driver_helper.rb |   11 ++++-------
 server/tests/deltacloud/drivers_test.rb        |    2 +-
 2 files changed, 5 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltacloud/blob/5a19b0df/server/lib/deltacloud/helpers/driver_helper.rb
----------------------------------------------------------------------
diff --git a/server/lib/deltacloud/helpers/driver_helper.rb b/server/lib/deltacloud/helpers/driver_helper.rb
index 1c52894..3f4f89b 100644
--- a/server/lib/deltacloud/helpers/driver_helper.rb
+++ b/server/lib/deltacloud/helpers/driver_helper.rb
@@ -45,19 +45,16 @@ module Deltacloud::Helpers
     end
 
     def driver_class
-      begin
-        m = Deltacloud::Drivers.const_get(driver_class_name)
-        m.const_get(driver_class_name + "Driver").new
-      rescue NameError
-        nil
-      end
+      m = Deltacloud::Drivers.const_get(driver_class_name)
+      m.const_get(driver_class_name + "Driver").new
     end
 
     def driver
       $:.unshift File.join(File.dirname(__FILE__), '..', '..')
       begin
-        require_relative(driver_source_name) unless driver_class
         driver_class
+      rescue NameError => e
+        require_relative(driver_source_name) ? retry : raise(LoadError.new(e.message))
       rescue LoadError => e
         raise "[ERROR] The driver '#{driver_name}' is unknown or not installed (#{driver_source_name})\n" +
           "\n#{e.message}\n"

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/5a19b0df/server/tests/deltacloud/drivers_test.rb
----------------------------------------------------------------------
diff --git a/server/tests/deltacloud/drivers_test.rb b/server/tests/deltacloud/drivers_test.rb
index 8142fe1..fd3126d 100644
--- a/server/tests/deltacloud/drivers_test.rb
+++ b/server/tests/deltacloud/drivers_test.rb
@@ -64,7 +64,7 @@ describe Deltacloud::Helpers::Drivers do
   it 'should throw an exception on unknown driver' do
     begin
       Thread.current[:driver] = 'unknown'
-      Proc.new { @helper.driver }.must_raise RuntimeError
+      Proc.new { @helper.driver }.must_raise LoadError
     ensure
       Thread.current[:driver] = 'mock'
     end