diff options
author | Luke Kanies <luke@madstop.com> | 2007-11-24 18:20:40 -0600 |
---|---|---|
committer | Luke Kanies <luke@madstop.com> | 2007-11-24 18:20:40 -0600 |
commit | 7eb09abebb91a567b081a651fce179acfadfb7c0 (patch) | |
tree | e51b71ee063fd3855b3ddc89a50f237fb2e427e0 | |
parent | 525682bc66557788445dba0ce432095755df1cc5 (diff) | |
download | puppet-7eb09abebb91a567b081a651fce179acfadfb7c0.tar.gz puppet-7eb09abebb91a567b081a651fce179acfadfb7c0.tar.xz puppet-7eb09abebb91a567b081a651fce179acfadfb7c0.zip |
Implementing the test for setting the Rails
log level.
-rw-r--r-- | lib/puppet/rails.rb | 45 | ||||
-rwxr-xr-x[-rw-r--r--] | spec/unit/rails.rb | 59 |
2 files changed, 64 insertions, 40 deletions
diff --git a/lib/puppet/rails.rb b/lib/puppet/rails.rb index 2af41f9f6..a1192bf20 100644 --- a/lib/puppet/rails.rb +++ b/lib/puppet/rails.rb @@ -8,29 +8,30 @@ module Puppet::Rails def self.connect # This global init does not work for testing, because we remove # the state dir on every test. - unless ActiveRecord::Base.connected? - Puppet.settings.use(:main, :rails, :puppetmasterd) - - ActiveRecord::Base.logger = Logger.new(Puppet[:railslog]) - begin - loglevel = Logger.const_get(Puppet[:rails_loglevel].upcase) - ActiveRecord::Base.logger.level = loglevel - rescue => detail - Puppet.warning "'%s' is not a valid Rails log level; using debug" % Puppet[:rails_loglevel] - ActiveRecord::Base.logger.level = Logger::DEBUG - end - ActiveRecord::Base.allow_concurrency = true - ActiveRecord::Base.verify_active_connections! - - begin - ActiveRecord::Base.establish_connection(database_arguments()) - rescue => detail - if Puppet[:trace] - puts detail.backtrace - end - raise Puppet::Error, "Could not connect to database: %s" % detail - end + return if ActiveRecord::Base.connected? + + Puppet.settings.use(:main, :rails, :puppetmasterd) + + ActiveRecord::Base.logger = Logger.new(Puppet[:railslog]) + begin + loglevel = Logger.const_get(Puppet[:rails_loglevel].upcase) + ActiveRecord::Base.logger.level = loglevel + rescue => detail + Puppet.warning "'%s' is not a valid Rails log level; using debug" % Puppet[:rails_loglevel] + ActiveRecord::Base.logger.level = Logger::DEBUG end + + ActiveRecord::Base.allow_concurrency = true + ActiveRecord::Base.verify_active_connections! + + begin + ActiveRecord::Base.establish_connection(database_arguments()) + rescue => detail + if Puppet[:trace] + puts detail.backtrace + end + raise Puppet::Error, "Could not connect to database: %s" % detail + end end # The arguments for initializing the database connection. diff --git a/spec/unit/rails.rb b/spec/unit/rails.rb index 426479fce..ad32cac86 100644..100755 --- a/spec/unit/rails.rb +++ b/spec/unit/rails.rb @@ -4,19 +4,38 @@ require File.dirname(__FILE__) + '/../spec_helper' require 'puppet/rails' describe Puppet::Rails, "when initializing any connection" do + confine Puppet.features.rails? => "Cannot test without ActiveRecord" + it "should use settings" do Puppet.settings.expects(:use).with(:main, :rails, :puppetmasterd) Puppet::Rails.connect end - it "should set up a logger" do - ActiveRecord::Base.expects(:logger=) + it "should set up a logger with the appropriate Rails log file" do + logger = mock 'logger' + Logger.expects(:new).with(Puppet[:railslog]).returns(logger) + ActiveRecord::Base.expects(:logger=).with(logger) Puppet::Rails.connect end - it "should set the log level" + it "should set the log level to whatever the value is in the settings" do + Puppet.settings.stubs(:use) + Puppet.settings.stubs(:value).with(:rails_loglevel).returns("debug") + Puppet.settings.stubs(:value).with(:railslog).returns("/my/file") + logger = mock 'logger' + Logger.stubs(:new).returns(logger) + ActiveRecord::Base.stubs(:logger).returns(logger) + logger.expects(:level=).with(Logger::DEBUG) + + ActiveRecord::Base.stubs(:allow_concurrency=) + ActiveRecord::Base.stubs(:verify_active_connections!) + ActiveRecord::Base.stubs(:establish_connection) + Puppet::Rails.stubs(:database_arguments) + + Puppet::Rails.connect + end it "should set ActiveRecord::Base.allow_concurrency" do ActiveRecord::Base.expects(:allow_concurrency=).with(true) @@ -39,6 +58,8 @@ describe Puppet::Rails, "when initializing any connection" do end describe Puppet::Rails, "when initializing a sqlite3 connection" do + confine Puppet.features.rails? => "Cannot test without ActiveRecord" + it "should provide the adapter, log_level, and dbfile arguments" do Puppet.settings.expects(:value).with(:dbadapter).returns("sqlite3") Puppet.settings.expects(:value).with(:rails_loglevel).returns("testlevel") @@ -53,14 +74,16 @@ describe Puppet::Rails, "when initializing a sqlite3 connection" do end describe Puppet::Rails, "when initializing a mysql or postgresql connection" do + confine Puppet.features.rails? => "Cannot test without ActiveRecord" + it "should provide the adapter, log_level, and host, username, password, and database arguments" do - Puppet.settings.expects(:value).with(:dbadapter).returns("mysql") - Puppet.settings.expects(:value).with(:rails_loglevel).returns("testlevel") - Puppet.settings.expects(:value).with(:dbserver).returns("testserver") - Puppet.settings.expects(:value).with(:dbuser).returns("testuser") - Puppet.settings.expects(:value).with(:dbpassword).returns("testpassword") - Puppet.settings.expects(:value).with(:dbname).returns("testname") - Puppet.settings.expects(:value).with(:dbsocket).returns("") + Puppet.settings.stubs(:value).with(:dbadapter).returns("mysql") + Puppet.settings.stubs(:value).with(:rails_loglevel).returns("testlevel") + Puppet.settings.stubs(:value).with(:dbserver).returns("testserver") + Puppet.settings.stubs(:value).with(:dbuser).returns("testuser") + Puppet.settings.stubs(:value).with(:dbpassword).returns("testpassword") + Puppet.settings.stubs(:value).with(:dbname).returns("testname") + Puppet.settings.stubs(:value).with(:dbsocket).returns("") Puppet::Rails.database_arguments.should == { :adapter => "mysql", @@ -73,13 +96,13 @@ describe Puppet::Rails, "when initializing a mysql or postgresql connection" do end it "should provide the adapter, log_level, and host, username, password, database, and socket arguments" do - Puppet.settings.expects(:value).with(:dbadapter).returns("mysql") - Puppet.settings.expects(:value).with(:rails_loglevel).returns("testlevel") - Puppet.settings.expects(:value).with(:dbserver).returns("testserver") - Puppet.settings.expects(:value).with(:dbuser).returns("testuser") - Puppet.settings.expects(:value).with(:dbpassword).returns("testpassword") - Puppet.settings.expects(:value).with(:dbname).returns("testname") - Puppet.settings.expects(:value).with(:dbsocket).returns("testsocket") + Puppet.settings.stubs(:value).with(:dbadapter).returns("mysql") + Puppet.settings.stubs(:value).with(:rails_loglevel).returns("testlevel") + Puppet.settings.stubs(:value).with(:dbserver).returns("testserver") + Puppet.settings.stubs(:value).with(:dbuser).returns("testuser") + Puppet.settings.stubs(:value).with(:dbpassword).returns("testpassword") + Puppet.settings.stubs(:value).with(:dbname).returns("testname") + Puppet.settings.stubs(:value).with(:dbsocket).returns("testsocket") Puppet::Rails.database_arguments.should == { :adapter => "mysql", @@ -91,4 +114,4 @@ describe Puppet::Rails, "when initializing a mysql or postgresql connection" do :socket => "testsocket" } end -end
\ No newline at end of file +end |