summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-01-28 20:22:37 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-01-28 20:22:37 +0000
commitc07494ff770d7e6432fed4e48e36f5b801b05f8d (patch)
treeb90875b7d9df11b1d93dc29beced90b98785babc
parent992424462d5a7b1380de6a1e375b19d4c49163d8 (diff)
downloadpuppet-c07494ff770d7e6432fed4e48e36f5b801b05f8d.tar.gz
puppet-c07494ff770d7e6432fed4e48e36f5b801b05f8d.tar.xz
puppet-c07494ff770d7e6432fed4e48e36f5b801b05f8d.zip
Fixing #441.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2104 980ebf18-57e1-0310-9a29-db15c13687c0
-rwxr-xr-xlib/puppet/provider/service/base.rb6
-rwxr-xr-xtest/providers/service/base.rb52
2 files changed, 54 insertions, 4 deletions
diff --git a/lib/puppet/provider/service/base.rb b/lib/puppet/provider/service/base.rb
index 89bee741c..9099fc730 100755
--- a/lib/puppet/provider/service/base.rb
+++ b/lib/puppet/provider/service/base.rb
@@ -93,10 +93,8 @@ Puppet::Type.type(:service).provide :base do
# for the process in the process table.
# This method will generally not be overridden by submodules.
def stop
- if @model[:stop]
- return @model[:stop]
- elsif self.respond_to?(:stopcmd)
- texecute(:stop, self.stopcmd)
+ if @model[:stop] or self.respond_to?(:stopcmd)
+ ucommand(:stop)
else
pid = getpid
unless pid
diff --git a/test/providers/service/base.rb b/test/providers/service/base.rb
new file mode 100755
index 000000000..0de6c806b
--- /dev/null
+++ b/test/providers/service/base.rb
@@ -0,0 +1,52 @@
+#!/usr/bin/env ruby
+#
+# Created by Luke A. Kanies on 2007-01-28.
+# Copyright (c) 2007. All rights reserved.
+
+$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
+
+require 'puppettest'
+
+class TestBaseServiceProvider < Test::Unit::TestCase
+ include PuppetTest
+
+ def test_base
+ running = tempfile()
+
+ commands = {}
+ %w{touch rm test}.each do |c|
+ path = %x{which #{c}}.chomp
+ if path == ""
+ $stderr.puts "Cannot find '#{c}'; cannot test base service provider"
+ return
+ end
+ commands[c.to_sym] = path
+ end
+ service = Puppet::Type.type(:service).create(
+ :name => "yaytest", :provider => :base,
+ :start => "%s %s" % [commands[:touch], running],
+ :status => "%s -f %s" % [commands[:test], running],
+ :stop => "%s %s" % [commands[:rm], running]
+ )
+
+ provider = service.provider
+ assert(provider, "did not get base provider")
+
+ assert_nothing_raised do
+ provider.start
+ end
+ assert(FileTest.exists?(running), "start was not called correctly")
+ assert_nothing_raised do
+ assert_equal(:running, provider.status, "status was not returned correctly")
+ end
+ assert_nothing_raised do
+ provider.stop
+ end
+ assert(! FileTest.exists?(running), "stop was not called correctly")
+ assert_nothing_raised do
+ assert_equal(:stopped, provider.status, "status was not returned correctly")
+ end
+ end
+end
+
+# $Id$ \ No newline at end of file