relevance-grit 0.8.1 → 0.8.3
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.
- data/History.txt +6 -0
- data/grit.gemspec +1 -1
- data/lib/grit/git.rb +14 -10
- data/lib/grit.rb +3 -0
- data/test/test_git.rb +19 -1
- metadata +1 -1
data/History.txt
CHANGED
data/grit.gemspec
CHANGED
data/lib/grit/git.rb
CHANGED
@@ -56,16 +56,18 @@ module Grit
|
|
56
56
|
|
57
57
|
call = "#{prefix}#{Git.git_binary} --git-dir='#{self.git_dir}' #{cmd.to_s.gsub(/_/, '-')} #{(opt_args + ext_args).join(' ')}#{postfix}"
|
58
58
|
Grit.log(call) if Grit.debug
|
59
|
-
response = timeout ? sh(call) : wild_sh(call)
|
59
|
+
response, err = timeout ? sh(call) : wild_sh(call)
|
60
60
|
Grit.log(response) if Grit.debug
|
61
|
+
Grit.log(err) if Grit.debug
|
61
62
|
response
|
62
63
|
end
|
63
64
|
|
64
65
|
def sh(command)
|
65
|
-
ret, pid = nil, nil
|
66
|
-
Open4.popen4(command) do |id, _,
|
66
|
+
ret, pid, err = nil, nil, nil
|
67
|
+
Open4.popen4(command) do |id, _, stdout, stderr|
|
67
68
|
pid = id
|
68
|
-
ret = Timeout.timeout(self.class.git_timeout) {
|
69
|
+
ret = Timeout.timeout(self.class.git_timeout) { stdout.read }
|
70
|
+
err = stderr.read
|
69
71
|
@bytes_read += ret.size
|
70
72
|
|
71
73
|
if @bytes_read > 5242880 # 5.megabytes
|
@@ -74,9 +76,9 @@ module Grit
|
|
74
76
|
raise GitTimeout.new(command, bytes)
|
75
77
|
end
|
76
78
|
end
|
77
|
-
ret
|
79
|
+
[ret, err]
|
78
80
|
rescue Errno::ECHILD
|
79
|
-
ret
|
81
|
+
[ret, err]
|
80
82
|
rescue Object => e
|
81
83
|
Process.kill('KILL', pid) rescue nil
|
82
84
|
bytes = @bytes_read
|
@@ -85,12 +87,14 @@ module Grit
|
|
85
87
|
end
|
86
88
|
|
87
89
|
def wild_sh(command)
|
88
|
-
ret = nil
|
89
|
-
Open4.popen4(command) {|pid, _,
|
90
|
-
ret =
|
90
|
+
ret, err = nil, nil
|
91
|
+
Open4.popen4(command) {|pid, _, stdout, stderr|
|
92
|
+
ret = stdout.read
|
93
|
+
err = stderr.read
|
91
94
|
}
|
95
|
+
[ret, err]
|
92
96
|
rescue Errno::ECHILD
|
93
|
-
ret
|
97
|
+
[ret, err]
|
94
98
|
end
|
95
99
|
|
96
100
|
# Transform Ruby style options into git command line options
|
data/lib/grit.rb
CHANGED
@@ -28,8 +28,11 @@ require 'grit/repo'
|
|
28
28
|
require 'grit/index'
|
29
29
|
|
30
30
|
module Grit
|
31
|
+
|
31
32
|
class << self
|
33
|
+
# Set +debug+ to true to log all git calls and responses
|
32
34
|
attr_accessor :debug
|
35
|
+
# The standard +logger+ for debugging git calls - this defaults to a plain STDOUT logger
|
33
36
|
attr_accessor :logger
|
34
37
|
def log(str)
|
35
38
|
logger.debug { str }
|
data/test/test_git.rb
CHANGED
@@ -5,10 +5,28 @@ class TestGit < Test::Unit::TestCase
|
|
5
5
|
@git = Git.new(File.join(File.dirname(__FILE__), *%w[..]))
|
6
6
|
end
|
7
7
|
|
8
|
+
def teardown
|
9
|
+
Grit.debug = false
|
10
|
+
end
|
11
|
+
|
8
12
|
def test_method_missing
|
9
13
|
assert_match(/^git version [\w\.]*$/, @git.version)
|
10
14
|
end
|
11
15
|
|
16
|
+
def test_logs_stderr
|
17
|
+
Grit.debug = true
|
18
|
+
Grit.stubs(:log)
|
19
|
+
Grit.expects(:log).with(includes("git: 'bad' is not a git-command"))
|
20
|
+
@git.bad
|
21
|
+
end
|
22
|
+
|
23
|
+
def testl_logs_stderr_when_skipping_timeout
|
24
|
+
Grit.debug = true
|
25
|
+
Grit.stubs(:log)
|
26
|
+
Grit.expects(:log).with(includes("git: 'bad' is not a git-command"))
|
27
|
+
@git.bad :timeout => false
|
28
|
+
end
|
29
|
+
|
12
30
|
def test_transform_options
|
13
31
|
assert_equal ["-s"], @git.transform_options({:s => true})
|
14
32
|
assert_equal ["-s '5'"], @git.transform_options({:s => 5})
|
@@ -46,7 +64,7 @@ class TestGit < Test::Unit::TestCase
|
|
46
64
|
|
47
65
|
def test_works_fine_if_quick
|
48
66
|
output = 'output'
|
49
|
-
Open4.expects(:popen4).yields( nil, nil, mock(:read => output), nil )
|
67
|
+
Open4.expects(:popen4).yields( nil, nil, mock(:read => output), stub(:read => nil) )
|
50
68
|
assert_equal output, @git.something
|
51
69
|
end
|
52
70
|
end
|