Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

142 lines (118 sloc) 4.07 kb
require File.join(File.dirname(__FILE__), 'test_helper')
describe "Bond" do
describe "start" do
def start(options={}, &block)
Bond.start({:readline=>valid_readline}.merge(options), &block)
end
before { M.instance_eval("@started = @agent = @config = nil"); M.expects(:load_completions) }
it "prints error if readline doesn't have all required methods" do
capture_stderr {
start :readline=>Module.new{ def self.setup(arg); end }
}.should =~ /Invalid/
end
it "prints error if readline symbol is invalid" do
capture_stderr {
start :readline => :blah
}.should =~ /Invalid.*'blah'/
end
it "prints no error if valid readline" do
capture_stderr { start }.should == ''
end
it 'prints no error if valid readline symbol' do
capture_stderr { start :readline => :ruby }.should == ''
Bond.config[:readline].should == Bond::Ruby
end
it "sets default mission" do
start :default_mission=>lambda {|e| %w{1 2 3}}
tab('1').should == ['1']
end
it "sets default search" do
start :default_search=>:anywhere
complete(:on=>/blah/) { %w{all_quiet on_the western_front}}
tab('blah qu').should == ["all_quiet"]
end
it "defines completion in block" do
start { complete(:on=>/blah/) { %w{all_quiet on_the western_front}} }
tab('blah all').should == ["all_quiet"]
end
it "sets proc eval_binding" do
bdg = binding
start :eval_binding => lambda { bdg }
Mission.expects(:eval).with(anything, bdg).returns([])
tab("'blah'.").should == []
end
it "status can be checked with started?" do
Bond.started?.should == false
start
Bond.started?.should == true
end
after_all { reset }
end
describe "start with :gems" do
before {
File.stubs(:exists?).returns(true)
M.stubs(:load_file)
}
it "attempts to load gem" do
M.stubs(:load_dir)
M.expects(:gem).twice
start(:gems=>%w{one two})
end
it "rescues nonexistent gem" do
M.stubs(:load_dir)
M.expects(:gem).raises(LoadError)
should.not.raise { start(:gems=>%w{blah}) }
end
it "rescues nonexistent method 'gem'" do
M.stubs(:load_dir)
M.expects(:gem).raises(NoMethodError)
should.not.raise { start(:gems=>%w{blah}) }
end
it "prints error if gem completion not found" do
M.stubs(:load_dir)
M.expects(:find_gem_file).returns(nil)
capture_stderr { start(:gems=>%w{invalid}) }.should =~ /No completions.*'invalid'/
end
it "loads gem completion file" do
M.expects(:load_dir)
M.expects(:load_dir).with(File.join($:[0], 'awesome', '..', 'bond'))
M.expects(:load_dir)
M.expects(:gem)
start(:gems=>%w{awesome})
end
after_all { reset }
end
it "prints error if Readline setup fails" do
Bond::Readline.expects(:setup).raises('WTF')
capture_stderr { Bond.start(:readline=>Bond::Readline) }.should =~ /Error.*Failed Readline.*'WTF'/
M.debrief :readline=>valid_readline
end
it "start prints error for failed completion file" do
Rc.stubs(:module_eval).raises('wtf')
capture_stderr { Bond.start }.should =~ /Bond Error: Completion file.*with:\nwtf/
end
it "reset clears existing missions" do
complete(:on=>/blah/) {[]}
Bond.agent.missions.size.should.not == 0
reset
Bond.agent.missions.size.should == 0
end
describe "restart" do
def start(options={}, &block)
Bond.start({:readline=>valid_readline}.merge(options), &block)
end
it "deletes previous config" do
start :blah=>''
Bond.config[:blah].should.not == nil
Bond.restart({:readline=>valid_readline})
Bond.config[:blah].should == nil
end
it "deletes previous method completions" do
start
complete(:method=>'blah') { [] }
MethodMission.actions['blah'].should.not == nil
Bond.restart({:readline=>valid_readline})
MethodMission.actions['blah'].should == nil
end
end
end
Jump to Line
Something went wrong with that request. Please try again.