test/unit/local_tests.rb in dk-0.1.0 vs test/unit/local_tests.rb in dk-0.1.1

- old
+ new

@@ -48,11 +48,11 @@ @cmd = @cmd_class.new(Scmd, @cmd_str, @opts) end should have_readers :scmd, :cmd_str - should have_imeths :to_s, :run + should have_imeths :to_s, :start, :wait, :stop, :run should have_imeths :stdout, :stderr, :success?, :output_lines should "build an scmd with the cmd str and any given :env option" do assert_equal @scmd_spy, subject.scmd assert_equal [@cmd_str, { :env => @opts[:env] }], @scmd_new_called_with @@ -65,18 +65,59 @@ should "know its cmd str" do assert_equal @cmd_str, subject.cmd_str assert_equal subject.cmd_str, subject.to_s end - should "demeter its scmd" do + should "demeter its scmd starts" do + assert_false @scmd_spy.start_called? + + input = Factory.string + subject.start(input) + assert_true @scmd_spy.start_called? + assert_equal input, @scmd_spy.start_calls.last.input + + wait_timeout = Factory.integer(10) + subject.wait(wait_timeout) + assert_true @scmd_spy.wait_called? + assert_equal wait_timeout, @scmd_spy.wait_calls.last.timeout + + stop_timeout = Factory.integer(10) + subject.stop(stop_timeout) + assert_true @scmd_spy.stop_called? + assert_equal stop_timeout, @scmd_spy.stop_calls.last.timeout + + assert_equal @scmd_spy.pid, subject.pid + assert_equal @scmd_spy.stdout, subject.stdout + assert_equal @scmd_spy.stderr, subject.stderr + assert_equal @scmd_spy.running?, subject.running? + assert_equal @scmd_spy.success?, subject.success? + end + + should "demeter its scmd timeout errors" do + scmd_timeout_error_message = Factory.string + Assert.stub(@scmd_spy, :wait) do + raise Scmd::TimeoutError, scmd_timeout_error_message + end + + subject.start + wait_timeout = Factory.integer(10) + e = assert_raises { subject.wait(wait_timeout) } + + assert_equal Dk::CmdTimeoutError, e.class + assert_equal scmd_timeout_error_message, e.message + end + + should "demeter its scmd runs" do assert_false @scmd_spy.run_called? input = Factory.string subject.run(input) assert_true @scmd_spy.run_called? assert_equal input, @scmd_spy.run_calls.last.input + assert_equal @scmd_spy.pid, subject.pid assert_equal @scmd_spy.stdout, subject.stdout assert_equal @scmd_spy.stderr, subject.stderr + assert_equal @scmd_spy.running?, subject.running? assert_equal @scmd_spy.success?, subject.success? end should "know its output lines" do stdout_lines = subject.stdout.to_s.split("\n")