Commit f38a24bd4e0b8c6b7a0c6e441442a1eba9141e5a

auto-expand relative paths passed into Git#status

Commit diff

Support/lib/git.rb

 
206206
207207 def status(file_or_dir = nil, options = {})
208208 file_or_dir = file_or_dir.flatten.first if file_or_dir.is_a?(Array)
209 file_or_dir = file_or_dir.dup if file_or_dir
210209
211210 results = parse_status(command("status"))
212211
213212 if file_or_dir
214 file_or_dir << "/" if File.directory?(file_or_dir) unless /\/$/.match(file_or_dir)
213 file_or_dir = path_for(file_or_dir).dup
214 file_or_dir << "/" if File.directory?(file_or_dir) && file_or_dir[-1..-1] != "/"
215215 results.select do |status|
216216 if is_a_path?(status[:path]) && /^#{Regexp.escape(status[:path])}/i.match(file_or_dir)
217217 # promote this status on down and keep it if it's the parent folder of our target file_or_dir
toggle raw diff

Support/spec/lib/commands/status_spec.rb

 
6969 @result[:display].should == "dir/subfolder/"
7070 end
7171
72 it "should auto-expand the path when filtering to a relative path" do
73 File.should_receive(:directory?).with("/base/dir/subfolder").and_return(true)
74 @results = @git.status("dir/subfolder")
75 @results.should have(1).result
76 @result = @results.first
77 @result[:path].should == "/base/dir/subfolder/"
78 @result[:display].should == "dir/subfolder/"
79 end
80
7281 it "should parse a status document correctly" do
7382 result = @git.parse_status_hash(fixture_file("status_output.txt"))
7483 result.should == {"dir/"=>"?",
toggle raw diff