Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge pull request #163 from jeremyroman/master

CreateLink ignores :symbolic
  • Loading branch information...
commit 7fcd37392ea36988baec7c1fb350e32c19d4d822 2 parents 02896a6 + f7744a3
Brian Donovan authored
View
2  lib/thor/actions/create_link.rb
@@ -41,7 +41,7 @@ def invoke!
invoke_with_conflict_check do
FileUtils.mkdir_p(File.dirname(destination))
# Create a symlink by default
- config[:symbolic] ||= true
+ config[:symbolic] = true if config[:symbolic].nil?
File.unlink(destination) if exists?
if config[:symbolic]
File.symlink(render, destination)
View
78 spec/actions/create_link_spec.rb
@@ -0,0 +1,78 @@
+require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
+require 'thor/actions'
+require 'tempfile'
+
+describe Thor::Actions::CreateLink do
+ before(:each) do
+ ::FileUtils.rm_rf(destination_root)
+ end
+
+ def create_link(destination=nil, config={}, options={})
+ @base = MyCounter.new([1,2], options, { :destination_root => destination_root })
+ @base.stub!(:file_name).and_return('rdoc')
+
+ @tempfile = Tempfile.new("config.rb")
+ @action = Thor::Actions::CreateLink.new(@base, destination, @tempfile.path,
+ { :verbose => !@silence }.merge(config))
+ end
+
+ def invoke!
+ capture(:stdout){ @action.invoke! }
+ end
+
+ def silence!
+ @silence = true
+ end
+
+ describe "#invoke!" do
+ it "creates a symbolic link for :symbolic => true" do
+ create_link("doc/config.rb", :symbolic => true)
+ invoke!
+ destination_path = File.join(destination_root, "doc/config.rb")
+ File.exists?(destination_path).should be_true
+ File.symlink?(destination_path).should be_true
+ end
+
+ it "creates a hard link for :symbolic => false" do
+ create_link("doc/config.rb", :symbolic => false)
+ invoke!
+ destination_path = File.join(destination_root, "doc/config.rb")
+ File.exists?(destination_path).should be_true
+ File.symlink?(destination_path).should be_false
+ end
+
+ it "creates a symbolic link by default" do
+ create_link("doc/config.rb")
+ invoke!
+ destination_path = File.join(destination_root, "doc/config.rb")
+ File.exists?(destination_path).should be_true
+ File.symlink?(destination_path).should be_true
+ end
+
+ it "does not create a link if pretending" do
+ create_link("doc/config.rb", {}, :pretend => true)
+ invoke!
+ File.exists?(File.join(destination_root, "doc/config.rb")).should be_false
+ end
+
+ it "shows created status to the user" do
+ create_link("doc/config.rb")
+ invoke!.should == " create doc/config.rb\n"
+ end
+
+ it "does not show any information if log status is false" do
+ silence!
+ create_link("doc/config.rb")
+ invoke!.should be_empty
+ end
+ end
+
+ describe "#identical?" do
+ it "returns true if the destination link exists and is identical" do
+ create_link("doc/config.rb")
+ @action.identical?.should be_false
+ invoke!
+ @action.identical?.should be_true
+ end
+ end
+end
Please sign in to comment.
Something went wrong with that request. Please try again.