summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/mixlib/shellout/helper.rb3
-rw-r--r--spec/mixlib/shellout/helper_spec.rb30
2 files changed, 32 insertions, 1 deletions
diff --git a/lib/mixlib/shellout/helper.rb b/lib/mixlib/shellout/helper.rb
index 50ee702..c7091d4 100644
--- a/lib/mixlib/shellout/helper.rb
+++ b/lib/mixlib/shellout/helper.rb
@@ -16,6 +16,7 @@
# limitations under the License.
require_relative "../shellout"
+require "chef-utils"
require "chef-utils/dsl/path_sanity"
require "chef-utils/internal"
@@ -153,7 +154,7 @@ module Mixlib
end
def __shell_out_command(*args, **options)
- if __config.target_mode?
+ if __transport_connection
FakeShellOut.new(args, options, __transport_connection.run_command(args.join(" "))) # FIXME: train should accept run_command(*args)
else
cmd = if options.empty?
diff --git a/spec/mixlib/shellout/helper_spec.rb b/spec/mixlib/shellout/helper_spec.rb
new file mode 100644
index 0000000..977568a
--- /dev/null
+++ b/spec/mixlib/shellout/helper_spec.rb
@@ -0,0 +1,30 @@
+require "spec_helper"
+require "mixlib/shellout/helper"
+require "logger"
+
+describe Mixlib::ShellOut::Helper do
+ class TestClass
+ include Mixlib::ShellOut::Helper
+
+ # this is a hash-like object
+ def __config
+ {}
+ end
+
+ # this is a train transport connection or nil
+ def __transport_connection
+ nil
+ end
+
+ # this is a logger-like object
+ def __log
+ Logger.new(IO::NULL)
+ end
+ end
+
+ let(:test_class) { TestClass.new }
+
+ it "works to run a trivial ruby command" do
+ expect(test_class.shell_out("ruby -e 'exit 0'")).to be_kind_of(Mixlib::ShellOut)
+ end
+end