mirror of
https://github.com/capistrano/capistrano
synced 2023-03-27 23:21:18 -04:00
9047a756fe
git-svn-id: http://svn.rubyonrails.org/rails/tools/capistrano@6706 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
62 lines
No EOL
2.1 KiB
Ruby
62 lines
No EOL
2.1 KiB
Ruby
require "#{File.dirname(__FILE__)}/../../utils"
|
|
require 'capistrano/configuration/actions/inspect'
|
|
|
|
class ConfigurationActionsInspectTest < Test::Unit::TestCase
|
|
class MockConfig
|
|
include Capistrano::Configuration::Actions::Inspect
|
|
end
|
|
|
|
def setup
|
|
@config = MockConfig.new
|
|
@config.stubs(:logger).returns(stub_everything)
|
|
end
|
|
|
|
def test_stream_should_pass_options_through_to_run
|
|
@config.expects(:invoke_command).with("tail -f foo.log", :once => true)
|
|
@config.stream("tail -f foo.log", :once => true)
|
|
end
|
|
|
|
def test_stream_should_emit_stdout_via_puts
|
|
@config.expects(:invoke_command).yields(mock("channel"), :out, "something streamed")
|
|
@config.expects(:puts).with("something streamed")
|
|
@config.expects(:warn).never
|
|
@config.stream("tail -f foo.log")
|
|
end
|
|
|
|
def test_stream_should_emit_stderr_via_warn
|
|
ch = mock("channel")
|
|
ch.expects(:[]).with(:server).returns(server("capistrano"))
|
|
@config.expects(:invoke_command).yields(ch, :err, "something streamed")
|
|
@config.expects(:puts).never
|
|
@config.expects(:warn).with("[err :: capistrano] something streamed")
|
|
@config.stream("tail -f foo.log")
|
|
end
|
|
|
|
def test_capture_should_pass_options_merged_with_once_to_run
|
|
@config.expects(:invoke_command).with("hostname", :foo => "bar", :once => true)
|
|
@config.capture("hostname", :foo => "bar")
|
|
end
|
|
|
|
def test_capture_with_stderr_result_should_raise_capture_error
|
|
@config.expects(:invoke_command).yields(mock("channel"), :err, "boom")
|
|
assert_raises(Capistrano::CaptureError) { @config.capture("hostname") }
|
|
end
|
|
|
|
def test_capture_with_stdout_should_aggregate_and_return_stdout
|
|
config_expects_invoke_command_to_loop_with(mock("channel"), "foo", "bar", "baz")
|
|
assert_equal "foobarbaz", @config.capture("hostname")
|
|
end
|
|
|
|
private
|
|
|
|
def config_expects_invoke_command_to_loop_with(channel, *output)
|
|
class <<@config
|
|
attr_accessor :script, :channel
|
|
def invoke_command(*args)
|
|
script.each { |item| yield channel, :out, item }
|
|
end
|
|
end
|
|
@config.channel = channel
|
|
@config.script = output
|
|
end
|
|
end |