test/mission_test.rb in bond-0.1.1 vs test/mission_test.rb in bond-0.1.3
- old
+ new
@@ -2,48 +2,59 @@
class Bond::MissionTest < Test::Unit::TestCase
before(:all) {|e| Bond.debrief(:readline_plugin=>valid_readline_plugin) }
context "mission" do
- before(:each) {|e| Bond.agent.instance_eval("@missions = []") }
+ before(:each) {|e| Bond.agent.reset }
test "completes" do
- Bond.complete(:on=>/bling/) {|e| %w{ab cd fg hi}}
- Bond.complete(:method=>'cool') {|e| [] }
- complete('some bling f').should == %w{fg}
+ complete(:on=>/bling/) {|e| %w{ab cd fg hi}}
+ complete(:method=>'cool') {|e| [] }
+ tabtab('some bling f').should == %w{fg}
end
test "with method completes" do
- Bond.complete(:on=>/bling/) {|e| [] }
- Bond.complete(:method=>'cool') {|e| %w{ab cd ef gd} }
- complete('cool c').should == %w{cd}
+ complete(:on=>/bling/) {|e| [] }
+ complete(:method=>'cool') {|e| %w{ab cd ef gd} }
+ tabtab('cool c').should == %w{cd}
end
test "with method and quoted argument completes" do
- Bond.complete(:on=>/bling/) {|e| [] }
- Bond.complete(:method=>'cool') {|e| %w{ab cd ef ad} }
- complete('cool "a').should == %w{ab ad}
+ complete(:on=>/bling/) {|e| [] }
+ complete(:method=>'cool') {|e| %w{ab cd ef ad} }
+ tabtab('cool "a').should == %w{ab ad}
end
test "with string method completes exact matches" do
- Bond.complete(:method=>'cool?') {|e| [] }
- Bond.complete(:method=>'cool') {|e| %w{ab cd ef gd} }
- complete('cool c').should == %w{cd}
+ complete(:method=>'cool?') {|e| [] }
+ complete(:method=>'cool') {|e| %w{ab cd ef gd} }
+ tabtab('cool c').should == %w{cd}
end
test "with regex method completes multiple methods" do
- Bond.complete(:method=>/cool|ls/) {|e| %w{ab cd ef ad}}
- complete("cool a").should == %w{ab ad}
- complete("ls c").should == %w{cd}
+ complete(:method=>/cool|ls/) {|e| %w{ab cd ef ad}}
+ tabtab("cool a").should == %w{ab ad}
+ tabtab("ls c").should == %w{cd}
end
test "with regexp condition completes" do
- Bond.complete(:on=>/\s*'([^']+)$/, :search=>false) {|e| %w{coco for puffs}.grep(/#{e.matched[1]}/) }
- complete("require 'ff").should == ['puffs']
+ complete(:on=>/\s*'([^']+)$/, :search=>false) {|e| %w{coco for puffs}.grep(/#{e.matched[1]}/) }
+ tabtab("require 'ff").should == ['puffs']
end
test "with non-string completions completes" do
- Bond.complete(:on=>/.*/) { [:one,:two,:three] }
- complete('ok ').should == %w{one two three}
+ complete(:on=>/.*/) { [:one,:two,:three] }
+ tabtab('ok ').should == %w{one two three}
+ end
+
+ test "with symbol action completes" do
+ eval %[module ::Bond::Actions; def blah(input); %w{one two three}; end; end]
+ complete(:method=>'blah', :action=>:blah)
+ tabtab('blah ').should == %w{one two three}
+ end
+
+ test "with invalid action prints error" do
+ complete(:on=>/bling/) {|e| raise "whoops" }
+ capture_stderr { tabtab('bling') }.should =~ /bling.*whoops/m
end
end
test "default_mission set to a valid mission if irb doesn't exist" do
Object.expects(:const_defined?).with(:IRB).returns(false)