Sha256: 63e51f59ee5407c6fb4367a60192c33537898c38cf15fd1d19346044dd667ead

Contents?: true

Size: 1.92 KB

Versions: 19

Compression:

Stored size: 1.92 KB

Contents

require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")

class Redcar::Command
  describe Executor do
    class FakeApp
      def repeat_event(event); end
      attr_accessor :history
    end
    
    before do
      Executor.stub!(:current_environment).and_return({:current_environment => 1})
      Redcar.app = FakeApp.new
      Redcar.app.history = History.new
    end
    
    describe "executing a command" do
      class MyCommand < Redcar::Command
        def environment(env)
          $spec_executor_env = env if env
        end

        def execute
          $spec_executor_ran_command = true
        end
      end

      before do
        $spec_executor_env         = nil
        $spec_executor_ran_command = false
        @command  = MyCommand.new
        @executor = Executor.new(@command)
      end
  
      it "should call execute on the Command" do
        @executor.execute
        $spec_executor_ran_command.should be_true
      end
    
      it "should add the command to the History" do
        @executor.execute
        Redcar.app.history.last.should == @command
      end
    
      it "should set the command environment" do
        @executor.execute
        $spec_executor_env.should == {:current_environment => 1}
      end
    end
    
    describe "executing command capturing errors" do
      class MyErrorCommand < Redcar::Command
        def execute
          raise "hell"
        end
      end
      
      before do
        @command = MyErrorCommand.new
        @executor = Executor.new(@command)
        $stdout = StringIO.new
      end
      
      after do
        $stdout = STDOUT
      end

      it "should capture the error" do
        lambda { @executor.execute }.should_not raise_error
      end
      
      it "should store the error in the class" do
        @executor.execute
        @command.error.should be_an_instance_of(RuntimeError)
        @command.error.message.should == "hell"
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 2 rubygems

Version Path
redcar-dev-0.12.17dev plugins/application/spec/application/command/executor_spec.rb
redcar-dev-0.12.16dev-java plugins/application/spec/application/command/executor_spec.rb
redcar-dev-0.12.15dev-java plugins/application/spec/application/command/executor_spec.rb
redcar-dev-0.12.14dev-java plugins/application/spec/application/command/executor_spec.rb
redcar-dev-0.12.13dev-java plugins/application/spec/application/command/executor_spec.rb
redcar-dev-0.12.12dev-java plugins/application/spec/application/command/executor_spec.rb
redcar-dev-0.12.11dev-java plugins/application/spec/application/command/executor_spec.rb
redcar-dev-0.12.10dev-java plugins/application/spec/application/command/executor_spec.rb
redcar-dev-0.12.9dev-java plugins/application/spec/application/command/executor_spec.rb
redcar-dev-0.12.8dev-java plugins/application/spec/application/command/executor_spec.rb
redcar-dev-0.12.7dev-java plugins/application/spec/application/command/executor_spec.rb
redcar-dev-0.12.6dev-java plugins/application/spec/application/command/executor_spec.rb
redcar-dev-0.12.4dev-java plugins/application/spec/application/command/executor_spec.rb
redcar-dev-0.12.3dev-java plugins/application/spec/application/command/executor_spec.rb
redcar-dev-0.12.1dev-java plugins/application/spec/application/command/executor_spec.rb
redcar-dev-0.12.0dev-java plugins/application/spec/application/command/executor_spec.rb
redcar-0.11 plugins/application/spec/application/command/executor_spec.rb
redcar-0.11.0dev plugins/application/spec/application/command/executor_spec.rb
redcar-0.10 plugins/application/spec/application/command/executor_spec.rb