git_hook-pre_receive 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -31,6 +31,11 @@ module Git
31
31
  runner.result
32
32
  end
33
33
 
34
+ def self.rm_r(file)
35
+ runner = Git::Runner.new("git rm -r \"#{file}\"")
36
+ runner.result
37
+ end
38
+
34
39
  def self.show(sha = nil)
35
40
  cmd = ['git show']
36
41
  cmd << " #{sha}" if sha
@@ -15,10 +15,10 @@ module Git
15
15
  if old_sha1 == '0' * 40
16
16
  result = Git::Command.diff_tree(new_sha1)
17
17
  result.delete_at(0)
18
- result.collect { |l| File.new(l) }
18
+ result.delete_if { |l| l['0000000... D'] != nil }.collect { |l| File.new(l) }
19
19
  else
20
20
  result = Git::Command.diff(old_sha1, new_sha1)
21
- result.collect { |l| File.new(l) }
21
+ result.delete_if { |l| l['0000000... D'] != nil }.collect { |l| File.new(l) }
22
22
  end
23
23
  end
24
24
  end
@@ -1,4 +1,4 @@
1
1
  #main Git
2
2
  module Git
3
- VERSION = '0.0.2'
3
+ VERSION = '0.1.0'
4
4
  end
data/spec/command_spec.rb CHANGED
@@ -79,6 +79,20 @@ describe Command do
79
79
  end
80
80
  end
81
81
 
82
+ context '#rm_r' do
83
+ it 'deletes files' do
84
+ git_init(git_repo)
85
+
86
+ create_file(File.join(git_repo, 'file.txt'))
87
+ git_add(git_repo, 'file.txt')
88
+ git_commit(git_repo)
89
+
90
+ Dir.chdir(::File.join(working_directory, git_repo)) do
91
+ expect(Command.rm_r('file.txt').last).to include('file.txt')
92
+ end
93
+ end
94
+ end
95
+
82
96
  context '#diff' do
83
97
  it 'diff values' do
84
98
  git_init(git_repo)
@@ -1,4 +1,6 @@
1
1
  # encoding: utf-8
2
+ require 'spec_helper'
3
+
2
4
  describe PreReceiveHookParser do
3
5
  let(:git_repo) { 'git_repo' }
4
6
 
@@ -60,5 +62,27 @@ describe PreReceiveHookParser do
60
62
  expect(parser.files.collect { |f| f.name }).to eq(%w{dir/file.txt})
61
63
  end
62
64
  end
65
+
66
+ it 'handles deleted directories as well' do
67
+ git_init(git_repo)
68
+
69
+ create_file(File.join(git_repo, 'dir/file.txt'), 'file to delete')
70
+ git_add(git_repo, 'dir/file.txt')
71
+ git_commit(git_repo)
72
+
73
+ git_rm_r(git_repo, 'dir/file.txt')
74
+
75
+ create_file(File.join(git_repo, 'file1.txt'), 'new file')
76
+ git_add(git_repo, 'file1.txt')
77
+
78
+ git_commit(git_repo, 'deleted objects')
79
+
80
+ commit = git_show(git_repo, nil).first.split(" ")[1]
81
+
82
+ Dir.chdir(::File.join(working_directory, git_repo)) do
83
+ parser = PreReceiveHookParser.new("#{commit}^ #{commit} /ref/asdf/asdf")
84
+ expect(parser.files.collect { |f| f.name }).to eq(%w{file1.txt})
85
+ end
86
+ end
63
87
  end
64
88
  end
data/spec/support/git.rb CHANGED
@@ -44,6 +44,12 @@ module Git
44
44
  Git::Command.diff_tree(new)
45
45
  end
46
46
  end
47
+
48
+ def git_rm_r(repo, file)
49
+ Dir.chdir(::File.join(working_directory, repo)) do
50
+ Git::Command.rm_r(file)
51
+ end
52
+ end
47
53
  end
48
54
  end
49
55
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_hook-pre_receive
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: