joelmoss-grit 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. data/API.txt +101 -0
  2. data/History.txt +49 -0
  3. data/LICENSE +22 -0
  4. data/README.md +210 -0
  5. data/VERSION.yml +4 -0
  6. data/examples/ex_add_commit.rb +13 -0
  7. data/examples/ex_index.rb +14 -0
  8. data/lib/grit.rb +68 -0
  9. data/lib/grit/actor.rb +36 -0
  10. data/lib/grit/blame.rb +61 -0
  11. data/lib/grit/blob.rb +126 -0
  12. data/lib/grit/commit.rb +242 -0
  13. data/lib/grit/commit_stats.rb +128 -0
  14. data/lib/grit/config.rb +44 -0
  15. data/lib/grit/diff.rb +70 -0
  16. data/lib/grit/errors.rb +7 -0
  17. data/lib/grit/git-ruby.rb +186 -0
  18. data/lib/grit/git-ruby/commit_db.rb +52 -0
  19. data/lib/grit/git-ruby/file_index.rb +193 -0
  20. data/lib/grit/git-ruby/git_object.rb +350 -0
  21. data/lib/grit/git-ruby/internal/file_window.rb +58 -0
  22. data/lib/grit/git-ruby/internal/loose.rb +137 -0
  23. data/lib/grit/git-ruby/internal/pack.rb +382 -0
  24. data/lib/grit/git-ruby/internal/raw_object.rb +37 -0
  25. data/lib/grit/git-ruby/object.rb +325 -0
  26. data/lib/grit/git-ruby/repository.rb +736 -0
  27. data/lib/grit/git.rb +148 -0
  28. data/lib/grit/index.rb +122 -0
  29. data/lib/grit/lazy.rb +33 -0
  30. data/lib/grit/merge.rb +45 -0
  31. data/lib/grit/ref.rb +99 -0
  32. data/lib/grit/repo.rb +565 -0
  33. data/lib/grit/ruby1.9.rb +7 -0
  34. data/lib/grit/status.rb +151 -0
  35. data/lib/grit/submodule.rb +88 -0
  36. data/lib/grit/tag.rb +66 -0
  37. data/lib/grit/tree.rb +123 -0
  38. data/lib/open3_detach.rb +46 -0
  39. data/test/bench/benchmarks.rb +126 -0
  40. data/test/helper.rb +18 -0
  41. data/test/profile.rb +21 -0
  42. data/test/suite.rb +6 -0
  43. data/test/test_actor.rb +35 -0
  44. data/test/test_blame.rb +32 -0
  45. data/test/test_blame_tree.rb +33 -0
  46. data/test/test_blob.rb +83 -0
  47. data/test/test_commit.rb +207 -0
  48. data/test/test_commit_stats.rb +33 -0
  49. data/test/test_commit_write.rb +20 -0
  50. data/test/test_config.rb +58 -0
  51. data/test/test_diff.rb +18 -0
  52. data/test/test_file_index.rb +56 -0
  53. data/test/test_git.rb +84 -0
  54. data/test/test_grit.rb +32 -0
  55. data/test/test_head.rb +47 -0
  56. data/test/test_index_status.rb +40 -0
  57. data/test/test_merge.rb +17 -0
  58. data/test/test_raw.rb +16 -0
  59. data/test/test_real.rb +19 -0
  60. data/test/test_reality.rb +17 -0
  61. data/test/test_remote.rb +14 -0
  62. data/test/test_repo.rb +347 -0
  63. data/test/test_rubygit.rb +188 -0
  64. data/test/test_rubygit_alt.rb +40 -0
  65. data/test/test_rubygit_index.rb +76 -0
  66. data/test/test_rubygit_iv2.rb +28 -0
  67. data/test/test_submodule.rb +69 -0
  68. data/test/test_tag.rb +67 -0
  69. data/test/test_tree.rb +101 -0
  70. metadata +141 -0
@@ -0,0 +1,17 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ # class TestTreeRecursion < Test::Unit::TestCase
4
+ # def test_
5
+ # r = Repo.new("/Users/tom/dev/god")
6
+ # t = r.tree("HEAD")
7
+ #
8
+ # recurse(t)
9
+ # end
10
+ #
11
+ # def recurse(tree, indent = "")
12
+ # tree.contents.each do |c|
13
+ # # puts "#{indent}#{c.name} (#{c.id})"
14
+ # recurse(c, indent + " ") if c.kind_of?(Tree)
15
+ # end
16
+ # end
17
+ # end
@@ -0,0 +1,14 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestRemote < Test::Unit::TestCase
4
+ def setup
5
+ @r = Repo.new(GRIT_REPO)
6
+ end
7
+
8
+ # inspect
9
+
10
+ def test_inspect
11
+ remote = @r.remotes.first
12
+ assert_equal %Q{#<Grit::Remote "#{remote.name}">}, remote.inspect
13
+ end
14
+ end
data/test/test_repo.rb ADDED
@@ -0,0 +1,347 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestRepo < Test::Unit::TestCase
4
+ def setup
5
+ @r = Repo.new(GRIT_REPO)
6
+ end
7
+
8
+ def create_temp_repo(clone_path)
9
+ filename = 'git_test' + Time.now.to_i.to_s + rand(300).to_s.rjust(3, '0')
10
+ tmp_path = File.join("/tmp/", filename)
11
+ FileUtils.mkdir_p(tmp_path)
12
+ FileUtils.cp_r(clone_path, tmp_path)
13
+ File.join(tmp_path, 'dot_git')
14
+ end
15
+
16
+ def test_update_refs_packed
17
+ gpath = create_temp_repo(File.join(File.dirname(__FILE__), *%w[dot_git]))
18
+ @git = Grit::Repo.new(gpath, :is_bare => true)
19
+
20
+ # new and existing
21
+ test = 'ac9a30f5a7f0f163bbe3b6f0abf18a6c83b06872'
22
+ master = 'ca8a30f5a7f0f163bbe3b6f0abf18a6c83b0687a'
23
+
24
+ @git.update_ref('testref', test)
25
+ new_t = @git.get_head('testref').commit.sha
26
+ assert new_t != master
27
+
28
+ @git.update_ref('master', test)
29
+ new_m = @git.get_head('master').commit.sha
30
+ assert new_m != master
31
+
32
+ old = @git.get_head('nonpack').commit.sha
33
+ @git.update_ref('nonpack', test)
34
+ newp = @git.get_head('nonpack').commit.sha
35
+ assert newp != old
36
+
37
+ FileUtils.rm_r(gpath)
38
+ end
39
+
40
+ # new
41
+
42
+ def test_new_should_raise_on_invalid_repo_location
43
+ assert_raise(InvalidGitRepositoryError) do
44
+ Repo.new("/tmp")
45
+ end
46
+ end
47
+
48
+ def test_new_should_raise_on_non_existant_path
49
+ assert_raise(NoSuchPathError) do
50
+ Repo.new("/foobar")
51
+ end
52
+ end
53
+
54
+ # descriptions
55
+
56
+ def test_description
57
+ assert_equal "Unnamed repository; edit this file to name it for gitweb.", @r.description
58
+ end
59
+
60
+ # refs
61
+
62
+ def test_refs_should_return_array_of_ref_objects
63
+ @r.refs.each do |ref|
64
+ assert ref.is_a?(Grit::Ref)
65
+ end
66
+ end
67
+
68
+ # heads
69
+
70
+ def test_current_head
71
+ @r = Repo.new(File.join(File.dirname(__FILE__), *%w[dot_git]), :is_bare => true)
72
+ head = @r.head
73
+ assert_equal Grit::Head, head.class
74
+ assert_equal 'master', head.name
75
+ assert_equal 'ca8a30f5a7f0f163bbe3b6f0abf18a6c83b0687a', @r.commits(head.name).first.id
76
+ end
77
+
78
+ def test_heads_should_return_array_of_head_objects
79
+ @r.heads.each do |head|
80
+ assert_equal Grit::Head, head.class
81
+ end
82
+ end
83
+
84
+ def test_heads_should_populate_head_data
85
+ @r = Repo.new(File.join(File.dirname(__FILE__), *%w[dot_git]), :is_bare => true)
86
+ head = @r.heads[1]
87
+
88
+ assert_equal 'test/master', head.name
89
+ assert_equal '2d3acf90f35989df8f262dc50beadc4ee3ae1560', head.commit.id
90
+ end
91
+
92
+ # branches
93
+
94
+ def test_branches
95
+ # same as heads
96
+ end
97
+
98
+ # commits
99
+
100
+ def test_commits
101
+ Git.any_instance.expects(:rev_list).returns(fixture('rev_list'))
102
+
103
+ commits = @r.commits('master', 10)
104
+
105
+ c = commits[0]
106
+ assert_equal '4c8124ffcf4039d292442eeccabdeca5af5c5017', c.id
107
+ assert_equal ["634396b2f541a9f2d58b00be1a07f0c358b999b3"], c.parents.map { |p| p.id }
108
+ assert_equal "672eca9b7f9e09c22dcb128c283e8c3c8d7697a4", c.tree.id
109
+ assert_equal "Tom Preston-Werner", c.author.name
110
+ assert_equal "tom@mojombo.com", c.author.email
111
+ assert_equal Time.at(1191999972), c.authored_date
112
+ assert_equal "Tom Preston-Werner", c.committer.name
113
+ assert_equal "tom@mojombo.com", c.committer.email
114
+ assert_equal Time.at(1191999972), c.committed_date
115
+ assert_equal "implement Grit#heads", c.message
116
+
117
+ c = commits[1]
118
+ assert_equal [], c.parents
119
+
120
+ c = commits[2]
121
+ assert_equal ["6e64c55896aabb9a7d8e9f8f296f426d21a78c2c", "7f874954efb9ba35210445be456c74e037ba6af2"], c.parents.map { |p| p.id }
122
+ assert_equal "Merge branch 'site'\n\n * Some other stuff\n * just one more", c.message
123
+ assert_equal "Merge branch 'site'", c.short_message
124
+ end
125
+
126
+ # commit_count
127
+
128
+ def test_commit_count
129
+ Git.any_instance.expects(:rev_list).with({}, 'master').returns(fixture('rev_list_count'))
130
+
131
+ assert_equal 655, @r.commit_count('master')
132
+ end
133
+
134
+ # commit
135
+
136
+ def test_commit
137
+ commit = @r.commit('634396b2f541a9f2d58b00be1a07f0c358b999b3')
138
+
139
+ assert_equal "634396b2f541a9f2d58b00be1a07f0c358b999b3", commit.id
140
+ end
141
+
142
+ # tree
143
+
144
+ def test_tree
145
+ Git.any_instance.expects(:ls_tree).returns(fixture('ls_tree_a'))
146
+ tree = @r.tree('master')
147
+
148
+ assert_equal 4, tree.contents.select { |c| c.instance_of?(Blob) }.size
149
+ assert_equal 3, tree.contents.select { |c| c.instance_of?(Tree) }.size
150
+ end
151
+
152
+ # blob
153
+
154
+ def test_blob
155
+ Git.any_instance.expects(:cat_file).returns(fixture('cat_file_blob'))
156
+ blob = @r.blob("abc")
157
+ assert_equal "Hello world", blob.data
158
+ end
159
+
160
+ # init_bare
161
+
162
+ def test_init_bare
163
+ Git.any_instance.expects(:init).returns(true)
164
+ Repo.expects(:new).with("/foo/bar.git", {})
165
+ Repo.init_bare("/foo/bar.git")
166
+ end
167
+
168
+ def test_init_bare_with_options
169
+ Git.any_instance.expects(:init).with(
170
+ :template => "/baz/sweet").returns(true)
171
+ Repo.expects(:new).with("/foo/bar.git", {})
172
+ Repo.init_bare("/foo/bar.git", :template => "/baz/sweet")
173
+ end
174
+
175
+ # fork_bare
176
+
177
+ def test_fork_bare
178
+ Git.any_instance.expects(:clone).with(
179
+ {:bare => true, :shared => true},
180
+ "#{absolute_project_path}/.git",
181
+ "/foo/bar.git").returns(nil)
182
+ Repo.expects(:new)
183
+
184
+ @r.fork_bare("/foo/bar.git")
185
+ end
186
+
187
+ def test_fork_bare_with_options
188
+ Git.any_instance.expects(:clone).with(
189
+ {:bare => true, :shared => true, :template => '/awesome'},
190
+ "#{absolute_project_path}/.git",
191
+ "/foo/bar.git").returns(nil)
192
+ Repo.expects(:new)
193
+
194
+ @r.fork_bare("/foo/bar.git", :template => '/awesome')
195
+ end
196
+
197
+ # diff
198
+
199
+ def test_diff
200
+ Git.any_instance.expects(:diff).with({}, 'master^', 'master', '--')
201
+ @r.diff('master^', 'master')
202
+
203
+ Git.any_instance.expects(:diff).with({}, 'master^', 'master', '--', 'foo/bar')
204
+ @r.diff('master^', 'master', 'foo/bar')
205
+
206
+ Git.any_instance.expects(:diff).with({}, 'master^', 'master', '--', 'foo/bar', 'foo/baz')
207
+ @r.diff('master^', 'master', 'foo/bar', 'foo/baz')
208
+ end
209
+
210
+ # commit_diff
211
+
212
+ def test_diff
213
+ Git.any_instance.expects(:diff).returns(fixture('diff_p'))
214
+ diffs = @r.commit_diff('master')
215
+
216
+ assert_equal 15, diffs.size
217
+ end
218
+
219
+ # init bare
220
+
221
+ # archive
222
+
223
+ def test_archive_tar
224
+ #@r.archive_tar -- no assertion being done here
225
+ end
226
+
227
+ # archive_tar_gz
228
+
229
+ def test_archive_tar_gz
230
+ #@r.archive_tar_gz -- again, no assertion
231
+ end
232
+
233
+ # enable_daemon_serve
234
+
235
+ def test_enable_daemon_serve
236
+ FileUtils.expects(:touch).with(File.join(@r.path, 'git-daemon-export-ok'))
237
+ @r.enable_daemon_serve
238
+ end
239
+
240
+ # disable_daemon_serve
241
+
242
+ def test_disable_daemon_serve
243
+ FileUtils.expects(:rm_f).with(File.join(@r.path, 'git-daemon-export-ok'))
244
+ @r.disable_daemon_serve
245
+ end
246
+
247
+ def test_gc_auto
248
+ Git.any_instance.expects(:gc).with({:auto => true})
249
+ @r.gc_auto
250
+ end
251
+
252
+ # alternates
253
+
254
+ def test_alternates_with_two_alternates
255
+ File.expects(:exist?).with("#{absolute_project_path}/.git/objects/info/alternates").returns(true)
256
+ File.expects(:read).returns("/path/to/repo1/.git/objects\n/path/to/repo2.git/objects\n")
257
+
258
+ assert_equal ["/path/to/repo1/.git/objects", "/path/to/repo2.git/objects"], @r.alternates
259
+ end
260
+
261
+ def test_alternates_no_file
262
+ File.expects(:exist?).returns(false)
263
+
264
+ assert_equal [], @r.alternates
265
+ end
266
+
267
+ # alternates=
268
+
269
+ def test_alternates_setter_ok
270
+ alts = %w{/path/to/repo.git/objects /path/to/repo2.git/objects}
271
+
272
+ alts.each do |alt|
273
+ File.expects(:exist?).with(alt).returns(true)
274
+ end
275
+
276
+ File.any_instance.expects(:write).with(alts.join("\n"))
277
+
278
+ assert_nothing_raised do
279
+ @r.alternates = alts
280
+ end
281
+ end
282
+
283
+ def test_alternates_setter_bad
284
+ alts = %w{/path/to/repo.git/objects}
285
+
286
+ alts.each do |alt|
287
+ File.expects(:exist?).with(alt).returns(false)
288
+ end
289
+
290
+ File.any_instance.expects(:write).never
291
+
292
+ assert_raise RuntimeError do
293
+ @r.alternates = alts
294
+ end
295
+ end
296
+
297
+ def test_alternates_setter_empty
298
+ File.any_instance.expects(:write)
299
+ @r.alternates = []
300
+ end
301
+
302
+ # inspect
303
+
304
+ def test_inspect
305
+ assert_equal %Q{#<Grit::Repo "#{File.expand_path(GRIT_REPO)}/.git">}, @r.inspect
306
+ end
307
+
308
+ # log
309
+
310
+ def test_log
311
+ Git.any_instance.expects(:log).times(2).with({:pretty => 'raw'}, 'master').returns(fixture('rev_list'))
312
+
313
+ assert_equal '4c8124ffcf4039d292442eeccabdeca5af5c5017', @r.log.first.id
314
+ assert_equal 'ab25fd8483882c3bda8a458ad2965d2248654335', @r.log.last.id
315
+ end
316
+
317
+ def test_log_with_path_and_options
318
+ Git.any_instance.expects(:log).with({:pretty => 'raw', :max_count => 1}, 'master', '--', 'file.rb').returns(fixture('rev_list'))
319
+ @r.log('master', 'file.rb', :max_count => 1)
320
+ end
321
+
322
+ # commit_deltas_from
323
+
324
+ def test_commit_deltas_from_nothing_new
325
+ other_repo = Repo.new(GRIT_REPO)
326
+ @r.git.expects(:rev_list).with({}, "master").returns(fixture("rev_list_delta_b"))
327
+ other_repo.git.expects(:rev_list).with({}, "master").returns(fixture("rev_list_delta_a"))
328
+
329
+ delta_blobs = @r.commit_deltas_from(other_repo)
330
+ assert_equal 0, delta_blobs.size
331
+ end
332
+
333
+ def test_commit_deltas_from_when_other_has_new
334
+ other_repo = Repo.new(GRIT_REPO)
335
+ @r.git.expects(:rev_list).with({}, "master").returns(fixture("rev_list_delta_a"))
336
+ other_repo.git.expects(:rev_list).with({}, "master").returns(fixture("rev_list_delta_b"))
337
+ %w[
338
+ 4c8124ffcf4039d292442eeccabdeca5af5c5017
339
+ 634396b2f541a9f2d58b00be1a07f0c358b999b3
340
+ ab25fd8483882c3bda8a458ad2965d2248654335
341
+ ].each do |ref|
342
+ Commit.expects(:find_all).with(other_repo, ref, :max_count => 1).returns([stub()])
343
+ end
344
+ delta_blobs = @r.commit_deltas_from(other_repo)
345
+ assert_equal 3, delta_blobs.size
346
+ end
347
+ end
@@ -0,0 +1,188 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+ require 'tempfile'
3
+
4
+ class TestRubyGit < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @git = Git.new(File.join(File.dirname(__FILE__), *%w[dot_git]))
8
+ @commit_sha = '5e3ee1198672257164ce3fe31dea3e40848e68d5'
9
+ @tree_sha = 'cd7422af5a2e0fff3e94d6fb1a8fff03b2841881'
10
+ @blob_sha = '4232d073306f01cf0b895864e5a5cfad7dd76fce'
11
+ end
12
+
13
+ def test_init_gitdir
14
+ tf = Tempfile.new('gitdir')
15
+ temppath = tf.path
16
+ tf.unlink
17
+
18
+ git = Git.new(temppath)
19
+ git.init({})
20
+ assert File.exists?(File.join(temppath, 'config'))
21
+ end
22
+
23
+ def test_log_merge
24
+ c1 = '420eac97a826bfac8724b6b0eef35c20922124b7'
25
+ c2 = '30e367cef2203eba2b341dc9050993b06fd1e108'
26
+ out = @git.rev_list({:pretty => 'raw', :max_count => 10}, 'master')
27
+ assert_match "commit #{c1}", out
28
+ assert_match "commit #{c2}", out
29
+ end
30
+
31
+ def test_log_max_count
32
+ out = @git.rev_list({:max_count => 10}, 'master')
33
+ assert_equal 10, out.split("\n").size
34
+ end
35
+
36
+ def test_diff
37
+ commit1 = '2d3acf90f35989df8f262dc50beadc4ee3ae1560'
38
+ commit2 = '420eac97a826bfac8724b6b0eef35c20922124b7'
39
+ out = @git.diff({}, commit1, commit2)
40
+ assert_match 'index 6afcf64..9e78ddf 100644', out
41
+ end
42
+
43
+ def test_diff_single
44
+ commit1 = '2d3acf90f35989df8f262dc50beadc4ee3ae1560'
45
+ out = @git.diff({}, commit1, nil)
46
+ assert_match 'index ad42ff5..aa50f09 100644', out
47
+ end
48
+
49
+ def test_diff_full
50
+ commit1 = '2d3acf90f35989df8f262dc50beadc4ee3ae1560'
51
+ commit2 = '420eac97a826bfac8724b6b0eef35c20922124b7'
52
+ out = @git.diff({:full_index => true}, commit1, commit2)
53
+ assert_match 'index 6afcf64c80da8253fa47228eb09bc0eea217e5d1..9e78ddfaabf79f8314cc9a53a2f59775aee06bd7', out
54
+ end
55
+
56
+ def test_diff_add
57
+ commit1 = 'c9cf68fc61bd2634e90a4f6a12d88744e6297c4e'
58
+ commit2 = '7a8d32cb18a0ba2ff8bf86cadacc3fd2816da219'
59
+ out = @git.diff({}, commit1, commit2)
60
+ assert_match 'index 0000000..2e3b0cb', out
61
+ end
62
+
63
+ def test_diff_remove
64
+ commit1 = 'c9cf68fc61bd2634e90a4f6a12d88744e6297c4e'
65
+ commit2 = '7a8d32cb18a0ba2ff8bf86cadacc3fd2816da219'
66
+ out = @git.diff({}, commit1, commit2)
67
+ assert_match 'index 0000000..2e3b0cb', out
68
+ end
69
+
70
+
71
+ def test_cat_file_contents_commit
72
+ out = @git.cat_file({:p => true}, @commit_sha)
73
+ assert_equal out, fixture('cat_file_commit_ruby')
74
+ end
75
+
76
+ def test_cat_file_contents_tree
77
+ out = @git.cat_file({:p => true}, @tree_sha)
78
+ assert_equal out, fixture('cat_file_tree_ruby').chomp
79
+ end
80
+
81
+ def test_cat_file_contents_blob
82
+ out = @git.cat_file({:p => true}, @blob_sha)
83
+ assert_equal out, fixture('cat_file_blob_ruby')
84
+ end
85
+
86
+ def test_cat_file_size
87
+ out = @git.cat_file({:s => true}, @tree_sha)
88
+ assert_equal '252', out
89
+ end
90
+
91
+ def test_ls_tree
92
+ out = @git.ls_tree({}, @tree_sha)
93
+ assert_equal out, fixture('cat_file_tree_ruby').chomp
94
+ end
95
+
96
+ def test_ls_tree_with_blobs
97
+ out = @git.ls_tree({}, @blob_sha)
98
+ assert_equal out, nil
99
+ end
100
+
101
+ def test_ls_tree_treeish
102
+ out = @git.ls_tree({}, 'testing')
103
+ assert_equal out, fixture('cat_file_tree_ruby').chomp
104
+ end
105
+
106
+ def test_ls_tree_paths
107
+ paths = ['History.txt', 'lib']
108
+ out = @git.ls_tree({}, @tree_sha, paths)
109
+ assert_equal out, fixture('ls_tree_paths_ruby').chomp
110
+ end
111
+
112
+ def test_ls_tree_paths_multi_single
113
+ paths = ['lib/grit.rb']
114
+ out = @git.ls_tree({}, @tree_sha, paths)
115
+ assert_equal out, '100644 blob 6afcf64c80da8253fa47228eb09bc0eea217e5d1 lib/grit.rb'
116
+ end
117
+
118
+ def test_rev_list_pretty
119
+ out = @git.rev_list({:pretty => 'raw'}, 'master')
120
+ assert_equal out, fixture('rev_list_all')
121
+ end
122
+
123
+ def test_rev_list_raw_since
124
+ out = @git.rev_list({:since => Time.at(1204644738)}, 'master')
125
+ assert_match fixture('rev_list_since'), out # I return slightly more for now
126
+ end
127
+
128
+ def test_rev_list_pretty_raw
129
+ out = @git.rev_list({:pretty => 'raw'}, 'f1964ad1919180dd1d9eae9d21a1a1f68ac60e77')
130
+ assert_match 'f1964ad1919180dd1d9eae9d21a1a1f68ac60e77', out
131
+ assert_equal out.split("\n").size, 654
132
+ end
133
+
134
+ def test_rev_list
135
+ out = @git.rev_list({}, 'master')
136
+ assert_equal out, fixture('rev_list_lines')
137
+ end
138
+
139
+ def test_rev_list_range
140
+ range = '30e367cef2203eba2b341dc9050993b06fd1e108..3fa4e130fa18c92e3030d4accb5d3e0cadd40157'
141
+ out = @git.rev_list({}, range)
142
+ assert_equal fixture('rev_list_range'), out
143
+ end
144
+
145
+ def test_ls_tree_paths_multi
146
+ paths = ['History.txt', 'lib/grit.rb']
147
+ out = @git.ls_tree({}, @tree_sha, paths)
148
+ assert_equal out, fixture('ls_tree_paths_ruby_deep').chomp
149
+ end
150
+
151
+ def test_ls_tree_path
152
+ paths = ['lib/']
153
+ out = @git.ls_tree({}, @tree_sha, paths)
154
+ assert_equal out, "100644 blob 6afcf64c80da8253fa47228eb09bc0eea217e5d1\tlib/grit.rb\n040000 tree 6244414d0229fb2bd58bc426a2afb5ba66773498\tlib/grit"
155
+ end
156
+
157
+ def test_ls_tree_path_deep
158
+ paths = ['lib/grit/']
159
+ out = @git.ls_tree({}, @tree_sha, paths)
160
+ assert_equal out, fixture('ls_tree_subdir').chomp
161
+ end
162
+
163
+ def test_file_type
164
+ out = @git.file_type(@tree_sha).to_s
165
+ assert_equal 'tree', out
166
+ out = @git.file_type(@blob_sha).to_s
167
+ assert_equal 'blob', out
168
+ out = @git.file_type(@commit_sha).to_s
169
+ assert_equal 'commit', out
170
+ end
171
+
172
+ #def test_ls_tree_noexist
173
+ # puts out = @git.ls_tree({}, '6afcf64c80da8253fa47228eb09bc0eea217e5d0')
174
+ #end
175
+
176
+
177
+ =begin
178
+ def test_ls_tree_grit_tree
179
+ paths = ['lib/grit.rb']
180
+ @repo = Grit::Repo.new('~/projects/github')
181
+ paths = ['app/models/event.rb']
182
+ puts out = @repo.git.ls_tree({}, 'master', ['app/models/event.rb'])
183
+ puts out = @repo.tree('master', paths).contents
184
+ assert_equal out, '100644 blob 6afcf64c80da8253fa47228eb09bc0eea217e5d1 lib/grit.rb'
185
+ end
186
+ =end
187
+
188
+ end