diff options
author | Asutosh Palai <asupalai@gmail.com> | 2016-06-22 00:39:34 +0530 |
---|---|---|
committer | Asutosh Palai <asupalai@gmail.com> | 2016-07-03 09:40:59 +0530 |
commit | 4c2ec5ef0d0e45bb08576d45bb3d5043f6656cc6 (patch) | |
tree | b1af80a977ac56aa86214127eee76f3c60781a6f /spec/plugins/command_spec.rb | |
parent | 267002b2374d01a63041d8494b80a33df9c13f9a (diff) | |
download | bundler-4c2ec5ef0d0e45bb08576d45bb3d5043f6656cc6.tar.gz |
Few correction from suggestions
Diffstat (limited to 'spec/plugins/command_spec.rb')
-rw-r--r-- | spec/plugins/command_spec.rb | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/spec/plugins/command_spec.rb b/spec/plugins/command_spec.rb new file mode 100644 index 0000000000..71e87a5b01 --- /dev/null +++ b/spec/plugins/command_spec.rb @@ -0,0 +1,81 @@ +# frozen_string_literal: true +require "spec_helper" + +describe "command plugins" do + before do + build_repo2 do + build_plugin "command-mah" do |s| + s.write "plugins.rb", <<-RUBY + module Mah + class Plugin < Bundler::Plugin::API + command "mahcommand" # declares the command + + def exec(command, args) + puts "MahHello" + end + end + end + RUBY + end + end + + bundle "plugin install command-mah --source file://#{gem_repo2}" + end + + it "executes without arguments" do + expect(out).to include("Installed plugin command-mah") + + bundle "mahcommand" + expect(out).to eq("MahHello") + end + + it "accepts the arguments" do + build_repo2 do + build_plugin "the-echoer" do |s| + s.write "plugins.rb", <<-RUBY + module Resonance + class Echoer + # Another method to declare the command + Bundler::Plugin::API.command "echo", self + + def exec(command, args) + puts "You gave me \#{args.join(", ")}" + end + end + end + RUBY + end + end + + bundle "plugin install the-echoer --source file://#{gem_repo2}" + expect(out).to include("Installed plugin the-echoer") + + bundle "echo tacos tofu lasange", "no-color" => false + expect(out).to eq("You gave me tacos, tofu, lasange") + end + + it "raises error on redeclaration of command" do + build_repo2 do + build_plugin "copycat" do |s| + s.write "plugins.rb", <<-RUBY + module CopyCat + class Cheater < Bundler::Plugin::API + command "mahcommand", self + + def exec(command, args) + end + end + end + RUBY + end + end + + bundle "plugin install copycat --source file://#{gem_repo2}" + + expect(out).not_to include("Installed plugin copycat") + + expect(out).to include("Failed to install plugin") + + expect(out).to include("Command(s) `mahcommand` declared by copycat are already registered.") + end +end |