dotify 0.5.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
1
  module Dotify
2
2
  class NonValidShell < StandardError; end
3
+ class UnitDoesNotExist < StandardError; end
3
4
  end
@@ -1,4 +1,3 @@
1
- require 'dotify'
2
1
  require 'thor/actions'
3
2
  require 'thor/shell'
4
3
 
@@ -7,55 +6,51 @@ Dotify::Config.load_config!
7
6
  module Dotify
8
7
  class Files
9
8
  class << self
10
- include Thor::Shell
11
- include Thor::Actions
9
+ # All
10
+ #
11
+ # Pulls an array of Units from the home
12
+ # directory.
13
+ def all
14
+ @all ||= List.home
15
+ end
12
16
 
17
+ # Linked files are those files which have a
18
+ # symbolic link pointing to the Dotify file.
13
19
  def linked
14
- @linked ||= FileList.dotify
15
- return @linked unless block_given?
16
- @linked.each {|d| yield(d, filename(d)) }
20
+ links = self.all.select { |f| f.linked? }
21
+ return links unless block_given?
22
+ links.each {|u| yield u }
17
23
  end
18
24
 
25
+ # Unlinked files are, of course, the opposite
26
+ # of linked files. These are Dotify files which
27
+ # Have no home dir files that are linked to them.
19
28
  def unlinked
20
- linked = self.linked.map { |d| filename(d) }
21
- installed = self.installed.map {|i| filename(i)}
22
- unlinked = (linked - installed).map{|f| dotfile(f) }
23
- return unlinked unless block_given?
24
- unlinked.each {|u| yield(u, filename(u)) }
25
- end
26
-
27
- def installed
28
- linked = self.linked.map { |f| filename(f) }
29
- installed = FileList.home.select do |d|
30
- linked.include?(filename(d))
31
- end
32
- return installed unless block_given?
33
- installed.each {|i| yield(i, filename(i)) }
29
+ unl = self.all.select { |f| !f.linked? }
30
+ return unl unless block_given?
31
+ unl.each {|u| yield u }
34
32
  end
35
33
 
34
+ # Uninstalled dotfiles are the dotfiles in the home
35
+ # directory that have not been loaded into Dotify or
36
+ # linked to the corresponding Dotify path.
36
37
  def uninstalled
37
- linked = self.linked.map { |f| filename(f) }
38
- installed = FileList.home.select do |d|
39
- !linked.include?(filename(d))
40
- end
41
- return installed unless block_given?
42
- installed.each {|i| yield(i, filename(i)) }
38
+ uni = self.all.select { |f| !f.added? && !f.linked? }
39
+ return uni unless block_given?
40
+ uni.each {|u| yield u }
43
41
  end
44
42
 
45
43
  def filename(file)
46
- %r{([^<>:"\/\\\|\?\*]*)\Z}.match(file).to_s
47
- end
48
-
49
- def template?(file)
50
- filename(file).match(/(tt|erb)\Z/) ? true : false
44
+ File.basename(file)
51
45
  end
52
46
 
53
- def dotfile(file)
54
- File.join(Config.home, filename(file))
47
+ def dotfile(file = nil)
48
+ file.nil? ? Config.home : File.join(Config.home, filename(file))
55
49
  end
50
+ alias :home :dotfile
56
51
 
57
- def dotify(file)
58
- File.join(Config.path, filename(file))
52
+ def dotify(file = nil)
53
+ file.nil? ? Config.path : File.join(Config.path, filename(file))
59
54
  end
60
55
 
61
56
  def link_dotfile(file)
@@ -63,7 +58,7 @@ module Dotify
63
58
  end
64
59
 
65
60
  def unlink_dotfile(file)
66
- FileUtils.rm_rf File.join(Config.home, filename(file))
61
+ FileUtils.rm_rf dotfile(file)
67
62
  end
68
63
 
69
64
  end
@@ -0,0 +1,36 @@
1
+ require 'dotify'
2
+
3
+ module Dotify
4
+ class List
5
+ class << self
6
+
7
+ def home
8
+ result = units(Files.dotfile('.*'))
9
+ filter_ignore_files!(result, :dotfiles)
10
+ end
11
+
12
+ def dotify
13
+ result = units(Files.dotify('.*'))
14
+ filter_ignore_files!(result, :dotify)
15
+ end
16
+
17
+ def units(glob)
18
+ filter_dot_directories! Dir[glob].map{ |file| Unit.new(file) }
19
+ end
20
+
21
+ def filter_dot_directories!(units)
22
+ [*units].delete_if { |f| %w[. ..].include? f.filename }
23
+ end
24
+
25
+ def filter_ignore_files!(units, ignore)
26
+ ignoring = Config.ignore(ignore)
27
+ [*units].delete_if { |f| ignoring.include?(f.filename) }
28
+ end
29
+
30
+ def filenames(units)
31
+ units.map(&:filename)
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,91 @@
1
+ require 'dotify/errors'
2
+
3
+ module Dotify
4
+
5
+ class NoSymlink; end
6
+
7
+ module Actions
8
+
9
+ # Link the file from the home directory into Dotify
10
+ def link
11
+ return false if !in_home_dir? || linked?
12
+ if in_home_dir? && !in_dotify?
13
+ FileUtils.cp_r(self.dotfile, self.dotify, :verbose => false)
14
+ end
15
+ FileUtils.rm_rf(self.dotfile, :verbose => false)
16
+ FileUtils.ln_sf(self.dotify, self.dotfile, :verbose => false)
17
+ return true
18
+ end
19
+
20
+ # Unlink the file from Dotify and replace it into the home directory.
21
+ def unlink
22
+ return false unless linked?
23
+ FileUtils.rm_rf(self.dotfile, :verbose => false)
24
+ FileUtils.cp_r(self.dotify, self.dotfile, :verbose => false)
25
+ FileUtils.rm_rf(self.dotify, :verbose => false)
26
+ return true
27
+ end
28
+
29
+ end
30
+
31
+ class Unit
32
+
33
+ include Actions
34
+
35
+ # Attributes on the file itself
36
+ attr_accessor :filename, :dotify, :dotfile
37
+
38
+ # Attributes about the file's status in the filesystem
39
+ attr_accessor :linked, :added
40
+
41
+ def initialize(file)
42
+ @filename = File.basename(file)
43
+ self
44
+ end
45
+
46
+ def dotify
47
+ @dotify ||= Files.dotify(@filename)
48
+ end
49
+
50
+ def dotfile
51
+ @dotfile ||= Files.dotfile(@filename)
52
+ end
53
+
54
+ def added?
55
+ in_dotify? && !linked_to_dotify?
56
+ end
57
+
58
+ def linked?
59
+ in_dotify? && linked_to_dotify?
60
+ end
61
+
62
+ def in_dotify?
63
+ File.exists?(dotify)
64
+ end
65
+
66
+ def in_home_dir?
67
+ File.exists?(dotfile)
68
+ end
69
+
70
+ def to_s
71
+ self.filename
72
+ end
73
+
74
+ def inspect
75
+ "#<Dotify::Unit @filename='#{@filename}' @added=#{added?} @linked=#{linked?}>"
76
+ end
77
+
78
+ def linked_to_dotify?
79
+ self.symlink == dotify
80
+ end
81
+
82
+ def symlink
83
+ begin
84
+ File.readlink dotfile
85
+ rescue
86
+ NoSymlink
87
+ end
88
+ end
89
+
90
+ end
91
+ end
@@ -1,3 +1,3 @@
1
1
  module Dotify
2
- VERSION = "0.5.1"
2
+ VERSION = "0.6.0"
3
3
  end
@@ -1,7 +1,69 @@
1
1
  require 'spec_helper'
2
- require 'dotify/cli'
3
2
  require 'thor'
4
3
 
5
- describe Dotify::CLI do
6
- # add unit tests at a future date
4
+ module Dotify
5
+ describe CLI do
6
+ let!(:cli) { CLI.new }
7
+ before do
8
+ Dotify.stub(:installed?).and_return true
9
+ cli.stub(:exec)
10
+ end
11
+
12
+ describe CLI, "#edit" do
13
+ let(:unit) { double('unit', :linked? => true, :dotify => '/tmp/dotify/.vimrc') }
14
+ before { Unit.stub(:new).and_return(unit) }
15
+ it "should open the editor with the passed file" do
16
+ cli.should_receive(:exec).with([Config.editor, unit.dotify].join(" "))
17
+ cli.edit('.vimrc')
18
+ end
19
+ it "should the editor with the passed file" do
20
+ cli.should_receive(:save)
21
+ cli.stub(:options).and_return({ :save => true })
22
+ cli.edit '.vimrc'
23
+ end
24
+ it "should not edit the file if it has not been linked" do
25
+ unit.stub(:linked?).and_return false
26
+ cli.should_receive(:say).with("'#{unit}' has not been linked by Dotify. Please run `dotify link #{unit}` to edit this file.", :blue)
27
+ cli.edit('.vimrc')
28
+ end
29
+ end
30
+
31
+ describe CLI, "#link" do
32
+ it "should loop through all unlinked files" do
33
+ Files.should_receive(:unlinked)
34
+ cli.link
35
+ end
36
+ it "should relink all of the files located in Dotify" do
37
+ Files.should_not_receive(:unlinked)
38
+ Files.should_receive(:linked)
39
+ cli.stub(:options).and_return({ :relink => true })
40
+ cli.link
41
+ end
42
+ it "attempt to link one single file" do
43
+ cli.should_receive(:link_file).with(an_instance_of(Unit), {})
44
+ cli.link('.vimrc')
45
+ end
46
+ it "should output a warning if Dotify is not installed" do
47
+ Dotify.stub(:installed?).and_return false
48
+ cli.should_receive(:not_setup_warning).once
49
+ cli.link
50
+ end
51
+ end
52
+
53
+ describe CLI, "#unlink" do
54
+ it "should loop through all unlinked files" do
55
+ Files.should_receive(:linked)
56
+ cli.unlink
57
+ end
58
+ it "attempt to link one single file" do
59
+ cli.should_receive(:unlink_file).with(an_instance_of(Unit), {})
60
+ cli.unlink('.vimrc')
61
+ end
62
+ it "should output a warning if Dotify is not installed" do
63
+ Dotify.stub(:installed?).and_return false
64
+ cli.should_receive(:not_setup_warning).once
65
+ cli.unlink
66
+ end
67
+ end
68
+ end
7
69
  end
@@ -1,67 +1,76 @@
1
1
  require 'spec_helper'
2
- require 'dotify/errors'
3
- require 'dotify/config'
4
2
 
5
- describe Dotify::Config do
6
- describe Dotify::Config, "#installed?" do
7
- it "should return false if Dotify has not been setup" do
8
- File.should_receive(:directory?).with(File.join(Dotify::Config.home, Dotify::Config.dirname)).and_return(false)
9
- Dotify::Config.installed?.should == false
10
- end
11
- it "should return true if Dotify has been setup" do
12
- File.should_receive(:directory?).with(File.join(Dotify::Config.home, Dotify::Config.dirname)).and_return(true)
13
- Dotify::Config.installed?.should == true
14
- end
15
- end
16
- describe "options" do
17
- before do
18
- Dotify::Config.stub(:config) do
19
- { :ignore => { :dotfiles => %w[.gemrc], :dotify => %w[.gitmodule] } }
3
+ module Dotify
4
+ describe Config do
5
+ before {
6
+ Config.unstub(:home)
7
+ Thor::Util.stub(:user_home).and_return '/home/tmp'
8
+ }
9
+ describe Config, "#installed?" do
10
+ it "should return true if Dotify has been setup" do
11
+ File.should_receive(:exists?).with(Config.path).and_return(true)
12
+ File.should_receive(:directory?).with(Config.path).and_return(true)
13
+ Config.installed?.should == true
20
14
  end
21
- end
22
- it "should be able to show the home path" do
23
- Dotify::Config.home.should == Thor::Util.user_home
24
- end
25
- it "should be able to show the dotify path" do
26
- Dotify::Config.path.should == File.join(Dotify::Config.home, '.dotify')
27
- end
28
- it "should set a default editor" do
29
- Dotify::Config.editor.should == Dotify::Config::EDITOR
30
- end
31
- it "should allow a custom editor" do
32
- Dotify::Config.stub(:config) do
33
- { :editor => 'subl' }
15
+ it "should return false if Dotify has not been setup" do
16
+ File.should_receive(:exists?).with(Config.path).and_return(true)
17
+ File.should_receive(:directory?).with(Config.path).and_return(false)
18
+ Config.installed?.should == false
34
19
  end
35
- Dotify::Config.editor.should == 'subl'
36
20
  end
37
- end
38
21
 
39
- describe Dotify::Config, "#file" do
40
- it "should return the right page" do
41
- Dotify::Config.stub(:home).and_return('/tmp')
42
- Dotify::Config.file.should == '/tmp/.dotrc'
22
+ describe Config, "#home" do
23
+ it "should return the home directory when called without a filename" do
24
+ Config.home.should == Thor::Util.user_home
25
+ end
43
26
  end
44
- end
45
27
 
46
- describe "ignore files" do
47
- before do
48
- Dotify::Config.stub(:config) do
49
- { :ignore => { :dotfiles => %w[.gemrc], :dotify => %w[.gitmodule] } }
28
+ describe "options" do
29
+ before do
30
+ Config.stub(:config) do
31
+ { :ignore => { :dotfiles => %w[.gemrc], :dotify => %w[.gitmodule] } }
32
+ end
33
+ end
34
+ it "should be able to show the dotify path" do
35
+ Config.path.should == File.join(Config.home, '.dotify')
36
+ end
37
+ it "should set a default editor" do
38
+ Config.editor.should == Config::EDITOR
39
+ end
40
+ it "should allow a custom editor" do
41
+ Config.stub(:config) do
42
+ { :editor => 'subl' }
43
+ end
44
+ Config.editor.should == 'subl'
50
45
  end
51
46
  end
52
- it "should have a default set of dotfiles" do
53
- Dotify::Config.stub(:config).and_return({})
54
- Dotify::Config.ignore(:dotify).should include '.git'
55
- Dotify::Config.ignore(:dotify).should include '.gitmodule'
56
- Dotify::Config.ignore(:dotfiles).should include '.dropbox'
57
- Dotify::Config.ignore(:dotfiles).should include '.Trash'
58
- Dotify::Config.ignore(:dotfiles).should include '.dotify'
59
- end
60
- it "should retrieve the list of dotfiles to ignore in the home directory" do
61
- Dotify::Config.ignore(:dotfiles).should include '.gemrc'
47
+
48
+ describe Config, "#file" do
49
+ it "should return the right page" do
50
+ Config.file.should == '/home/tmp/.dotrc'
51
+ end
62
52
  end
63
- it "should retrieve the list of dotify files to ignore" do
64
- Dotify::Config.ignore(:dotify).should include '.gitmodule'
53
+
54
+ describe "ignore files" do
55
+ before do
56
+ Config.stub(:config) do
57
+ { :ignore => { :dotfiles => %w[.gemrc], :dotify => %w[.gitmodule] } }
58
+ end
59
+ end
60
+ it "should have a default set of dotfiles" do
61
+ Config.stub(:config).and_return({})
62
+ Config.ignore(:dotify).should include '.git'
63
+ Config.ignore(:dotify).should include '.gitmodule'
64
+ Config.ignore(:dotfiles).should include '.dropbox'
65
+ Config.ignore(:dotfiles).should include '.Trash'
66
+ Config.ignore(:dotfiles).should include '.dotify'
67
+ end
68
+ it "should retrieve the list of dotfiles to ignore in the home directory" do
69
+ Config.ignore(:dotfiles).should include '.gemrc'
70
+ end
71
+ it "should retrieve the list of dotify files to ignore" do
72
+ Config.ignore(:dotify).should include '.gitmodule'
73
+ end
65
74
  end
66
75
  end
67
76
  end
@@ -1,156 +1,116 @@
1
1
  require 'spec_helper'
2
- require 'dotify/config'
3
- require 'dotify/files'
4
- require 'fileutils'
5
2
 
6
- describe Dotify::Files do
3
+ module Dotify
4
+ describe Files do
7
5
 
8
- describe "methods" do
9
- it "should respond to linked" do
10
- Dotify::Files.should respond_to :linked
11
- end
12
- it "should respond to installed" do
13
- Dotify::Files.should respond_to :installed
14
- end
15
- it "should respond to unlinked" do
16
- Dotify::Files.should respond_to :unlinked
17
- end
18
- end
19
-
20
- it "should split a filename correct" do
21
- Dotify::Files.filename("some/random/path/to/file.txt").should == 'file.txt'
22
- Dotify::Files.filename("another/path/no_extension").should == 'no_extension'
23
- end
24
-
25
- describe Dotify::Files, "#dotfile" do
26
- it "should return the path to the file when it is linked in the root" do
27
- Dotify::Config.stub(:home).and_return '/home'
28
- Dotify::Files.dotfile(".vimrc").should == '/home/.vimrc'
29
- Dotify::Files.dotfile("/spec/home/.bashrc").should == '/home/.bashrc'
6
+ let(:home_files) {
7
+ [
8
+ @bashrc = double('unit1', :filename => '.bashrc', :added? => true, :linked? => false),
9
+ @gitconfig = double('unit2', :filename => '.gitconfig', :added? => false, :linked? => false),
10
+ @vimrc = double('unit3', :filename => '.vimrc', :added? => true, :linked? => true),
11
+ ]
12
+ }
13
+ describe "methods" do
14
+ %w[all linked unlinked uninstalled].each do |name|
15
+ it "should respond to #{name}" do
16
+ Files.should respond_to name
17
+ end
18
+ end
30
19
  end
31
- end
32
20
 
33
- describe Dotify::Files, "#dotify" do
34
- it "should return the path to the file when it is linked in the root" do
35
- Dotify::Config.stub(:path).and_return '/tmp'
36
- Dotify::Files.dotify(".vimrc").should == '/tmp/.vimrc'
37
- Dotify::Files.dotify("/spec/home/.bashrc").should == '/tmp/.bashrc'
21
+ describe Files, "#all" do
22
+ it "should pull the right files from List.home" do
23
+ files = [stub, stub, stub]
24
+ List.stub(:home).and_return files
25
+ Files.all.should == files
26
+ end
38
27
  end
39
- end
40
28
 
41
- describe Dotify::Files, "#linked" do
42
- before do
43
- Dotify::FileList.stub(:dotify) do
44
- ['/spec/test/.bash_profile', '/spec/test/.bashrc', '/spec/test/.zshrc']
29
+ describe Files, "#linked" do
30
+ before do
31
+ Files.stub(:all).and_return home_files
32
+ end
33
+ let(:filenames) { Files.linked }
34
+ it "should return the right Units" do
35
+ filenames.should include @vimrc
36
+ filenames.should_not include @gitconfig
37
+ filenames.should_not include @bashrc
38
+ end
39
+ it "should yield the correct Units" do
40
+ expect { |b| Files.linked(&b) }.to yield_successive_args(*filenames)
45
41
  end
46
42
  end
47
- let!(:files) { Dotify::Files.linked }
48
- it "should return the list of dotfiles in the dotify path" do
49
- files.map! { |f| Dotify::Files.filename(f) }
50
- files.should include '.bash_profile'
51
- files.should include '.bashrc'
52
- files.should include '.zshrc'
53
- end
54
- it "shoud yield the files if a block is given" do
55
- yields = files.map { |f| [f, Dotify::Files.filename(f)] }
56
- expect { |b| Dotify::Files.linked(&b) }.to yield_successive_args(*yields)
57
- end
58
- end
59
43
 
60
- describe Dotify::Files, "#unlinked" do
61
- before do
62
- Dotify::Files.stub(:linked) do
63
- ['/spec/test/.vimrc', '/spec/test/.bashrc', '/spec/test/.zshrc']
44
+ describe Files, "#unlinked" do
45
+ before do
46
+ Files.stub(:all).and_return home_files
64
47
  end
65
- Dotify::Files.stub(:installed) do
66
- ['/root/test/.bashrc', '/root/test/.zshrc']
48
+ let(:filenames) { Files.unlinked }
49
+ it "should return the right Units" do
50
+ filenames.should include @gitconfig
51
+ filenames.should include @bashrc
52
+ filenames.should_not include @vimrc
53
+ end
54
+ it "should yield the correct Units" do
55
+ expect { |b| Files.unlinked(&b) }.to yield_successive_args(*filenames)
67
56
  end
68
57
  end
69
- it "should return the list of unlinked dotfiles in the root path" do
70
- unlinked = Dotify::Files.unlinked.map { |u| Dotify::Files.filename(u) }
71
- unlinked.should include '.vimrc'
72
- unlinked.should_not include '.bashrc'
73
- end
74
- it "shoud yield the unlinked files if a block is given" do
75
- unlinked = Dotify::Files.unlinked.map { |u| [u, Dotify::Files.filename(u)] }
76
- expect { |b| Dotify::Files.unlinked(&b) }.to yield_successive_args(*unlinked)
77
- end
78
- end
79
58
 
80
- describe Dotify::Files, "#installed" do
81
- before do
82
- Dotify::Files.stub(:linked) do
83
- %w[/spec/test/.zshrc /spec/test/.bashrc /spec/test/.vimrc /spec/test/.dotify]
59
+ describe Files, "#uninstalled" do
60
+ before do
61
+ Files.stub(:all).and_return home_files
84
62
  end
85
- Dotify::FileList.stub(:home) do
86
- %w[/root/test/.bashrc /root/test/.vimrc]
63
+ let(:filenames) { Files.uninstalled }
64
+ it "should return the right Units" do
65
+ filenames.should include @gitconfig
66
+ filenames.should_not include @bashrc
67
+ filenames.should_not include @vimrc
68
+ end
69
+ it "should yield the correct Units" do
70
+ expect { |b| Files.uninstalled(&b) }.to yield_successive_args(*filenames)
87
71
  end
88
72
  end
89
- it "should return the list of installed dotfiles in the root path" do
90
- installed = Dotify::Files.installed.map { |i| Dotify::Files.filename(i) }
91
- installed.should include '.vimrc'
92
- installed.should include '.bashrc'
93
- installed.should_not include '.zshrc'
94
- installed.should_not include '.dotify'
95
- end
96
- it "shoud yield the installed files if a block is given" do
97
- installed = Dotify::Files.installed.map { |i| [i, Dotify::Files.filename(i)] }
98
- expect { |b| Dotify::Files.installed(&b) }.to yield_successive_args(*installed)
73
+
74
+ it "should split a filename correct" do
75
+ Files.filename("some/random/path/to/file.txt").should == 'file.txt'
76
+ Files.filename("another/path/no_extension").should == 'no_extension'
99
77
  end
100
- end
101
78
 
102
- describe Dotify::Files, "#uninstalled" do
103
- before do
104
- Dotify::Files.stub(:linked) do
105
- %w[/spec/test/.zshrc /spec/test/.bashrc /spec/test/.vimrc /spec/test/.dotify]
79
+ describe Files, "#home" do
80
+ it "should point to the home directory" do
81
+ Files.home.should == '/tmp/home'
106
82
  end
107
- Dotify::FileList.stub(:home) do
108
- %w[/root/test/.zshrc /root/test/.bashrc /root/test/.pryrc /root/test/.dropbox]
83
+ it "should return a absolute path to the file in the home directory" do
84
+ Files.home(".vimrc").should == '/tmp/home/.vimrc'
85
+ Files.home("/spec/home/.bashrc").should == '/tmp/home/.bashrc'
109
86
  end
110
87
  end
111
- it "should return the list of uninstalled dotfiles in the root path" do
112
- uninstalled = Dotify::Files.uninstalled.map { |i| Dotify::Files.filename(i) }
113
- uninstalled.should_not include '.zshrc'
114
- uninstalled.should_not include '.bashrc'
115
- uninstalled.should include '.pryrc'
116
- uninstalled.should include '.dropbox'
117
- end
118
- it "shoud yield the installed files if a block is given" do
119
- uninstalled = Dotify::Files.uninstalled.map { |i| [i, Dotify::Files.filename(i)] }
120
- expect { |b| Dotify::Files.uninstalled(&b) }.to yield_successive_args(*uninstalled)
121
- end
122
- end
123
88
 
124
- describe Dotify::Files, "#template?" do
125
- it "should return true if the string given is a .tt or .erb template" do
126
- Dotify::Files.template?("testing.erb").should == true
127
- Dotify::Files.template?("testing.tt").should == true
128
- Dotify::Files.template?("/Users/fake/path/to/testing.tt").should == true
129
- Dotify::Files.template?("/Users/another/fake/path/to/testing.erb").should == true
130
- end
131
- it "should return false if the string given is not a .tt or .erb template" do
132
- Dotify::Files.template?(".tt.testing").should == false
133
- Dotify::Files.template?("erbit.txt").should == false
134
- Dotify::Files.template?(".erb.erbit.txt").should == false
135
- Dotify::Files.template?("/Users/fake/path/to/testing.txt").should == false
136
- Dotify::Files.template?("/Users/another/fake/path/to/testing.rb").should == false
89
+ describe Files, "#dotify" do
90
+ it "should point to the Dotify directory" do
91
+ Files.dotify.should == '/tmp/home/.dotify'
92
+ end
93
+ it "should return a absolute path to the file in Dotify" do
94
+ Files.dotify(".vimrc").should == '/tmp/home/.dotify/.vimrc'
95
+ Files.dotify("/spec/home/.bashrc").should == '/tmp/home/.dotify/.bashrc'
96
+ end
137
97
  end
138
- end
139
98
 
140
- describe Dotify::Files, "#link_dotfile" do
141
- it "should receive a file and link it into the root path" do
142
- first = File.join(Dotify::Config.path, ".vimrc")
143
- FileUtils.should_receive(:ln_s).with(Dotify::Files.filename(first), Dotify::Config.home).once
144
- Dotify::Files.link_dotfile first
99
+ describe Files, "#link_dotfile" do
100
+ it "should receive a file and link it into the root path" do
101
+ first = File.join(Config.path, ".vimrc")
102
+ FileUtils.should_receive(:ln_s).with(Files.filename(first), Config.home).once
103
+ Files.link_dotfile first
104
+ end
145
105
  end
146
- end
147
106
 
148
- describe Dotify::Files, "#unlink_dotfile" do
149
- it "should receive a file and remove it from the root" do
150
- first = "/spec/test/.file"
151
- FileUtils.stub(:rm_rf).with(File.join(Dotify::Config.home, Dotify::Files.filename(first))).once
152
- Dotify::Files.unlink_dotfile first
153
- FileUtils.unstub(:rm_rf)
107
+ describe Files, "#unlink_dotfile" do
108
+ it "should receive a file and remove it from the root" do
109
+ first = "/spec/test/.file"
110
+ FileUtils.stub(:rm_rf).with(File.join(Config.home, Files.filename(first))).once
111
+ Files.unlink_dotfile first
112
+ FileUtils.unstub(:rm_rf)
113
+ end
154
114
  end
155
115
  end
156
116
  end