spec/shell/basic_spec.rb in thor-0.16.0 vs spec/shell/basic_spec.rb in thor-0.17.0

- old
+ new

@@ -8,59 +8,66 @@ end describe "#padding" do it "cannot be set to below zero" do shell.padding = 10 - shell.padding.should == 10 + expect(shell.padding).to eq(10) shell.padding = -1 - shell.padding.should == 0 + expect(shell.padding).to eq(0) end end describe "#ask" do it "prints a message to the user and gets the response" do $stdout.should_receive(:print).with("Should I overwrite it? ") $stdin.should_receive(:gets).and_return('Sure') - shell.ask("Should I overwrite it?").should == "Sure" + expect(shell.ask("Should I overwrite it?")).to eq("Sure") end + it "prints a message and returns nil if EOF is sent to stdin" do + $stdout.should_receive(:print).with(" ") + $stdin.should_receive(:gets).and_return(nil) + expect(shell.ask("")).to eq(nil) + end + + it "prints a message to the user with the available options and determines the correctness of the answer" do $stdout.should_receive(:print).with('What\'s your favorite Neopolitan flavor? ["strawberry", "chocolate", "vanilla"] ') $stdin.should_receive(:gets).and_return('chocolate') - shell.ask("What's your favorite Neopolitan flavor?", :limited_to => ["strawberry", "chocolate", "vanilla"]).should == "chocolate" + expect(shell.ask("What's your favorite Neopolitan flavor?", :limited_to => ["strawberry", "chocolate", "vanilla"])).to eq("chocolate") end it "prints a message to the user with the available options and reasks the question after an incorrect repsonse" do $stdout.should_receive(:print).with('What\'s your favorite Neopolitan flavor? ["strawberry", "chocolate", "vanilla"] ').twice $stdout.should_receive(:puts).with('Your response must be one of: ["strawberry", "chocolate", "vanilla"]. Please try again.') $stdin.should_receive(:gets).and_return('moose tracks', 'chocolate') - shell.ask("What's your favorite Neopolitan flavor?", :limited_to => ["strawberry", "chocolate", "vanilla"]).should == "chocolate" + expect(shell.ask("What's your favorite Neopolitan flavor?", :limited_to => ["strawberry", "chocolate", "vanilla"])).to eq("chocolate") end end describe "#yes?" do it "asks the user and returns true if the user replies yes" do $stdout.should_receive(:print).with("Should I overwrite it? ") $stdin.should_receive(:gets).and_return('y') - shell.yes?("Should I overwrite it?").should === true + expect(shell.yes?("Should I overwrite it?")).to be_true $stdout.should_receive(:print).with("Should I overwrite it? ") $stdin.should_receive(:gets).and_return('n') - shell.yes?("Should I overwrite it?").should_not === true + expect(shell.yes?("Should I overwrite it?")).not_to be_true end end describe "#no?" do it "asks the user and returns true if the user replies no" do $stdout.should_receive(:print).with("Should I overwrite it? ") $stdin.should_receive(:gets).and_return('n') - shell.no?("Should I overwrite it?").should === true + expect(shell.no?("Should I overwrite it?")).to be_true $stdout.should_receive(:print).with("Should I overwrite it? ") $stdin.should_receive(:gets).and_return('Yes') - shell.no?("Should I overwrite it?").should === false + expect(shell.no?("Should I overwrite it?")).to be_false end end describe "#say" do it "prints a message to the user" do @@ -71,10 +78,15 @@ it "prints a message to the user without new line if it ends with a whitespace" do $stdout.should_receive(:print).with("Running... ") shell.say("Running... ") end + it "does not use a new line with whitespace+newline embedded" do + $stdout.should_receive(:puts).with("It's \nRunning...") + shell.say("It's \nRunning...") + end + it "prints a message to the user without new line" do $stdout.should_receive(:print).with("Running...") shell.say("Running...", nil, false) end end @@ -125,12 +137,12 @@ @array = [1234567890] @array += ('a'..'e').to_a end it "prints in columns" do - content = capture(:stdout){ shell.print_in_columns(@array) } - content.rstrip.should == "1234567890 a b c d e" + content = capture(:stdout) { shell.print_in_columns(@array) } + expect(content.rstrip).to eq("1234567890 a b c d e") end end describe "#print_table" do before do @@ -139,54 +151,54 @@ @table << ["", "#0", "empty"] @table << ["xyz", "#786", "last three"] end it "prints a table" do - content = capture(:stdout){ shell.print_table(@table) } - content.should == <<-TABLE + content = capture(:stdout) { shell.print_table(@table) } + expect(content).to eq(<<-TABLE) abc #123 first three #0 empty xyz #786 last three TABLE end it "prints a table with indentation" do - content = capture(:stdout){ shell.print_table(@table, :indent => 2) } - content.should == <<-TABLE + content = capture(:stdout) { shell.print_table(@table, :indent => 2) } + expect(content).to eq(<<-TABLE) abc #123 first three #0 empty xyz #786 last three TABLE end it "uses maximum terminal width" do @table << ["def", "#456", "Lançam foo bar"] @table << ["ghi", "#789", "بالله عليكم"] shell.should_receive(:terminal_width).and_return(20) - content = capture(:stdout){ shell.print_table(@table, :indent => 2, :truncate => true) } - content.should == <<-TABLE + content = capture(:stdout) { shell.print_table(@table, :indent => 2, :truncate => true) } + expect(content).to eq(<<-TABLE) abc #123 firs... #0 empty xyz #786 last... def #456 Lanç... ghi #789 بالل... TABLE end it "honors the colwidth option" do - content = capture(:stdout){ shell.print_table(@table, :colwidth => 10)} - content.should == <<-TABLE + content = capture(:stdout) { shell.print_table(@table, :colwidth => 10)} + expect(content).to eq(<<-TABLE) abc #123 first three #0 empty xyz #786 last three TABLE end it "prints tables with implicit columns" do 2.times { @table.first.pop } - content = capture(:stdout){ shell.print_table(@table) } - content.should == <<-TABLE + content = capture(:stdout) { shell.print_table(@table) } + expect(content).to eq(<<-TABLE) abc #0 empty xyz #786 last three TABLE end @@ -194,36 +206,36 @@ it "prints a table with small numbers and right-aligns them" do table = [ ["Name", "Number", "Color"], ["Erik", 1, "green"] ] - content = capture(:stdout){ shell.print_table(table) } - content.should == <<-TABLE + content = capture(:stdout) { shell.print_table(table) } + expect(content).to eq(<<-TABLE) Name Number Color Erik 1 green TABLE end it "doesn't output extra spaces for right-aligned columns in the last column" do table = [ ["Name", "Number"], ["Erik", 1] ] - content = capture(:stdout){ shell.print_table(table) } - content.should == <<-TABLE + content = capture(:stdout) { shell.print_table(table) } + expect(content).to eq(<<-TABLE) Name Number Erik 1 TABLE end it "prints a table with big numbers" do table = [ ["Name", "Number", "Color"], ["Erik", 1234567890123, "green"] ] - content = capture(:stdout){ shell.print_table(table) } - content.should == <<-TABLE + content = capture(:stdout) { shell.print_table(table) } + expect(content).to eq(<<-TABLE) Name Number Color Erik 1234567890123 green TABLE end end @@ -236,51 +248,51 @@ end it "returns true if the user choose default option" do $stdout.stub!(:print) $stdin.should_receive(:gets).and_return('') - shell.file_collision('foo').should be_true + expect(shell.file_collision('foo')).to be_true end it "returns false if the user choose no" do $stdout.stub!(:print) $stdin.should_receive(:gets).and_return('n') - shell.file_collision('foo').should be_false + expect(shell.file_collision('foo')).to be_false end it "returns true if the user choose yes" do $stdout.stub!(:print) $stdin.should_receive(:gets).and_return('y') - shell.file_collision('foo').should be_true + expect(shell.file_collision('foo')).to be_true end it "shows help usage if the user choose help" do $stdout.stub!(:print) $stdin.should_receive(:gets).and_return('h') $stdin.should_receive(:gets).and_return('n') - help = capture(:stdout){ shell.file_collision('foo') } - help.should =~ /h \- help, show this help/ + help = capture(:stdout) { shell.file_collision('foo') } + expect(help).to match(/h \- help, show this help/) end it "quits if the user choose quit" do $stdout.stub!(:print) $stdout.should_receive(:puts).with('Aborting...') $stdin.should_receive(:gets).and_return('q') - lambda { + expect { shell.file_collision('foo') - }.should raise_error(SystemExit) + }.to raise_error(SystemExit) end it "always returns true if the user choose always" do $stdout.should_receive(:print).with('Overwrite foo? (enter "h" for help) [Ynaqh] ') $stdin.should_receive(:gets).and_return('a') - shell.file_collision('foo').should be_true + expect(shell.file_collision('foo')).to be_true $stdout.should_not_receive(:print) - shell.file_collision('foo').should be_true + expect(shell.file_collision('foo')).to be_true end describe "when a block is given" do it "displays diff options to the user" do $stdout.should_receive(:print).with('Overwrite foo? (enter "h" for help) [Ynaqdh] ') @@ -291,10 +303,10 @@ it "invokes the diff command" do $stdout.stub!(:print) $stdin.should_receive(:gets).and_return('d') $stdin.should_receive(:gets).and_return('n') shell.should_receive(:system).with(/diff -u/) - capture(:stdout){ shell.file_collision('foo'){ } } + capture(:stdout) { shell.file_collision('foo'){ } } end end end end