git-trip 0.0.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.
Files changed (92) hide show
  1. data.tar.gz.sig +0 -0
  2. data/History.txt +21 -0
  3. data/Manifest.txt +89 -0
  4. data/README.txt +60 -0
  5. data/Rakefile +31 -0
  6. data/bin/git-trip +0 -0
  7. data/doc/USAGE.txt +54 -0
  8. data/lib/core_ext/hash.rb +15 -0
  9. data/lib/git-trip.rb +23 -0
  10. data/lib/git-trip/errors.rb +22 -0
  11. data/lib/git-trip/gitter.rb +10 -0
  12. data/lib/git-trip/gitter/base.rb +18 -0
  13. data/lib/git-trip/gitter/dir.rb +32 -0
  14. data/lib/git-trip/gitter/uri.rb +40 -0
  15. data/lib/git-trip/paint_mode.rb +52 -0
  16. data/lib/git-trip/painter.rb +167 -0
  17. data/spec/core_ext/hash_spec.rb +25 -0
  18. data/spec/git-trip/errors_spec.rb +43 -0
  19. data/spec/git-trip/gitter/base_spec.rb +15 -0
  20. data/spec/git-trip/gitter/dir_spec.rb +37 -0
  21. data/spec/git-trip/gitter/uri_spec.rb +25 -0
  22. data/spec/git-trip/gitter_spec.rb +11 -0
  23. data/spec/git-trip/paint_mode_spec.rb +56 -0
  24. data/spec/git-trip/painter_spec.rb +173 -0
  25. data/spec/git_trip_spec.rb +23 -0
  26. data/spec/rcov.opts +1 -0
  27. data/spec/spec.opts +4 -0
  28. data/spec/spec_helper.rb +15 -0
  29. data/tasks/ditz.rake +42 -0
  30. data/tasks/docs.rake +68 -0
  31. data/tasks/gittrip.rake +63 -0
  32. data/tasks/rspec.rake +22 -0
  33. data/tasks/site.rake +48 -0
  34. data/tasks/util.rake +44 -0
  35. data/vendor/grit/History.txt +6 -0
  36. data/vendor/grit/Manifest.txt +53 -0
  37. data/vendor/grit/README.txt +213 -0
  38. data/vendor/grit/Rakefile +29 -0
  39. data/vendor/grit/grit.gemspec +16 -0
  40. data/vendor/grit/lib/grit.rb +37 -0
  41. data/vendor/grit/lib/grit/actor.rb +36 -0
  42. data/vendor/grit/lib/grit/blob.rb +117 -0
  43. data/vendor/grit/lib/grit/commit.rb +208 -0
  44. data/vendor/grit/lib/grit/config.rb +44 -0
  45. data/vendor/grit/lib/grit/diff.rb +70 -0
  46. data/vendor/grit/lib/grit/errors.rb +7 -0
  47. data/vendor/grit/lib/grit/git.rb +116 -0
  48. data/vendor/grit/lib/grit/index.rb +77 -0
  49. data/vendor/grit/lib/grit/lazy.rb +31 -0
  50. data/vendor/grit/lib/grit/ref.rb +110 -0
  51. data/vendor/grit/lib/grit/repo.rb +318 -0
  52. data/vendor/grit/lib/grit/tree.rb +99 -0
  53. data/vendor/grit/test/fixtures/blame +131 -0
  54. data/vendor/grit/test/fixtures/cat_file_blob +1 -0
  55. data/vendor/grit/test/fixtures/cat_file_blob_size +1 -0
  56. data/vendor/grit/test/fixtures/diff_2 +54 -0
  57. data/vendor/grit/test/fixtures/diff_2f +19 -0
  58. data/vendor/grit/test/fixtures/diff_f +15 -0
  59. data/vendor/grit/test/fixtures/diff_i +201 -0
  60. data/vendor/grit/test/fixtures/diff_mode_only +1152 -0
  61. data/vendor/grit/test/fixtures/diff_new_mode +17 -0
  62. data/vendor/grit/test/fixtures/diff_p +610 -0
  63. data/vendor/grit/test/fixtures/for_each_ref +0 -0
  64. data/vendor/grit/test/fixtures/for_each_ref_remotes +0 -0
  65. data/vendor/grit/test/fixtures/for_each_ref_tags +0 -0
  66. data/vendor/grit/test/fixtures/ls_tree_a +7 -0
  67. data/vendor/grit/test/fixtures/ls_tree_b +2 -0
  68. data/vendor/grit/test/fixtures/ls_tree_commit +3 -0
  69. data/vendor/grit/test/fixtures/rev_list +26 -0
  70. data/vendor/grit/test/fixtures/rev_list_count +655 -0
  71. data/vendor/grit/test/fixtures/rev_list_single +7 -0
  72. data/vendor/grit/test/fixtures/rev_parse +1 -0
  73. data/vendor/grit/test/fixtures/show_empty_commit +6 -0
  74. data/vendor/grit/test/fixtures/simple_config +2 -0
  75. data/vendor/grit/test/helper.rb +17 -0
  76. data/vendor/grit/test/profile.rb +21 -0
  77. data/vendor/grit/test/suite.rb +6 -0
  78. data/vendor/grit/test/test_actor.rb +35 -0
  79. data/vendor/grit/test/test_blob.rb +74 -0
  80. data/vendor/grit/test/test_commit.rb +182 -0
  81. data/vendor/grit/test/test_config.rb +58 -0
  82. data/vendor/grit/test/test_diff.rb +18 -0
  83. data/vendor/grit/test/test_git.rb +52 -0
  84. data/vendor/grit/test/test_head.rb +22 -0
  85. data/vendor/grit/test/test_real.rb +19 -0
  86. data/vendor/grit/test/test_reality.rb +17 -0
  87. data/vendor/grit/test/test_remote.rb +15 -0
  88. data/vendor/grit/test/test_repo.rb +278 -0
  89. data/vendor/grit/test/test_tag.rb +29 -0
  90. data/vendor/grit/test/test_tree.rb +91 -0
  91. metadata +179 -0
  92. metadata.gz.sig +0 -0
@@ -0,0 +1,7 @@
1
+ commit 4c8124ffcf4039d292442eeccabdeca5af5c5017
2
+ tree 672eca9b7f9e09c22dcb128c283e8c3c8d7697a4
3
+ parent 634396b2f541a9f2d58b00be1a07f0c358b999b3
4
+ author Tom Preston-Werner <tom@mojombo.com> 1191999972 -0700
5
+ committer Tom Preston-Werner <tom@mojombo.com> 1191999972 -0700
6
+
7
+ implement Grit#heads
@@ -0,0 +1 @@
1
+ 80f136f
@@ -0,0 +1,6 @@
1
+ commit 1e3824339762bd48316fe87bfafc853732d43264
2
+ tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
3
+ author Tom Preston-Werner <tom@mojombo.com> 1157392833 +0000
4
+ committer Tom Preston-Werner <tom@mojombo.com> 1157392833 +0000
5
+
6
+ initial directory structure
@@ -0,0 +1,2 @@
1
+ core.bare=false
2
+ remote.origin.url=git://github.com/mojombo/grit.git
@@ -0,0 +1,17 @@
1
+ require File.join(File.dirname(__FILE__), *%w[.. lib grit])
2
+
3
+ require 'rubygems'
4
+ require 'test/unit'
5
+ require 'mocha'
6
+
7
+ GRIT_REPO = File.join(File.dirname(__FILE__), *%w[..])
8
+
9
+ include Grit
10
+
11
+ def fixture(name)
12
+ File.read(File.join(File.dirname(__FILE__), 'fixtures', name))
13
+ end
14
+
15
+ def absolute_project_path
16
+ File.expand_path(File.join(File.dirname(__FILE__), '..'))
17
+ end
@@ -0,0 +1,21 @@
1
+ # require File.join(File.dirname(__FILE__), *%w[.. lib grit])
2
+ # include Grit
3
+ #
4
+ # def recurse(tree, indent = "")
5
+ # tree.contents.each do |c|
6
+ # case c
7
+ # when Tree
8
+ # # puts "#{indent}#{c.name} (#{c.id})"
9
+ # recurse(c, indent + " ")
10
+ # end
11
+ # end
12
+ # end
13
+ #
14
+ # 10.times do
15
+ # r = Repo.new("/Users/tom/dev/god")
16
+ # t = r.tree
17
+ #
18
+ # recurse(t)
19
+ # end
20
+
21
+ 500.times { puts `git --git-dir /Users/tom/dev/god/.git ls-tree master` }
@@ -0,0 +1,6 @@
1
+ require 'test/unit'
2
+
3
+ tests = Dir["#{File.dirname(__FILE__)}/test_*.rb"]
4
+ tests.each do |file|
5
+ require file
6
+ end
@@ -0,0 +1,35 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestActor < Test::Unit::TestCase
4
+ def setup
5
+
6
+ end
7
+
8
+ # from_string
9
+
10
+ def test_from_string_should_separate_name_and_email
11
+ a = Actor.from_string("Tom Werner <tom@example.com>")
12
+ assert_equal "Tom Werner", a.name
13
+ assert_equal "tom@example.com", a.email
14
+ end
15
+
16
+ def test_from_string_should_handle_just_name
17
+ a = Actor.from_string("Tom Werner")
18
+ assert_equal "Tom Werner", a.name
19
+ assert_equal nil, a.email
20
+ end
21
+
22
+ # inspect
23
+
24
+ def test_inspect
25
+ a = Actor.from_string("Tom Werner <tom@example.com>")
26
+ assert_equal %Q{#<Grit::Actor "Tom Werner <tom@example.com>">}, a.inspect
27
+ end
28
+
29
+ # to_s
30
+
31
+ def test_to_s_should_alias_name
32
+ a = Actor.from_string("Tom Werner <tom@example.com>")
33
+ assert_equal a.name, a.to_s
34
+ end
35
+ end
@@ -0,0 +1,74 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestBlob < Test::Unit::TestCase
4
+ def setup
5
+ @r = Repo.new(GRIT_REPO)
6
+ @b = Blob.allocate
7
+ end
8
+
9
+ # blob
10
+
11
+ def test_data_should_return_blob_contents
12
+ Git.any_instance.expects(:cat_file).returns(fixture('cat_file_blob'))
13
+ blob = Blob.create(@r, :id => 'abc')
14
+ assert_equal "Hello world", blob.data
15
+ end
16
+
17
+ def test_data_should_cache
18
+ Git.any_instance.expects(:cat_file).returns(fixture('cat_file_blob')).times(1)
19
+ blob = Blob.create(@r, :id => 'abc')
20
+ blob.data
21
+ blob.data
22
+ end
23
+
24
+ # size
25
+
26
+ def test_size_should_return_file_size
27
+ Git.any_instance.expects(:cat_file).returns(fixture('cat_file_blob_size'))
28
+ blob = Blob.create(@r, :id => 'abc')
29
+ assert_equal 11, blob.size
30
+ end
31
+
32
+ # data
33
+
34
+ # mime_type
35
+
36
+ def test_mime_type_should_return_mime_type_for_known_types
37
+ blob = Blob.create(@r, :id => 'abc', :name => 'foo.png')
38
+ assert_equal "image/png", blob.mime_type
39
+ end
40
+
41
+ def test_mime_type_should_return_text_plain_for_unknown_types
42
+ blob = Blob.create(@r, :id => 'abc')
43
+ assert_equal "text/plain", blob.mime_type
44
+ end
45
+
46
+ # blame
47
+
48
+ def test_blame
49
+ Git.any_instance.expects(:blame).returns(fixture('blame'))
50
+ b = Blob.blame(@r, 'master', 'lib/grit.rb')
51
+ assert_equal 13, b.size
52
+ assert_equal 25, b.inject(0) { |acc, x| acc + x.last.size }
53
+ assert_equal b[0].first.object_id, b[9].first.object_id
54
+ c = b.first.first
55
+ c.expects(:__bake__).times(0)
56
+ assert_equal '634396b2f541a9f2d58b00be1a07f0c358b999b3', c.id
57
+ assert_equal 'Tom Preston-Werner', c.author.name
58
+ assert_equal 'tom@mojombo.com', c.author.email
59
+ assert_equal Time.at(1191997100), c.authored_date
60
+ assert_equal 'Tom Preston-Werner', c.committer.name
61
+ assert_equal 'tom@mojombo.com', c.committer.email
62
+ assert_equal Time.at(1191997100), c.committed_date
63
+ assert_equal 'initial grit setup', c.message
64
+ # c.expects(:__bake__).times(1)
65
+ # assert_equal Tree, c.tree.class
66
+ end
67
+
68
+ # inspect
69
+
70
+ def test_inspect
71
+ @b = Blob.create(@r, :id => 'abc')
72
+ assert_equal %Q{#<Grit::Blob "abc">}, @b.inspect
73
+ end
74
+ end
@@ -0,0 +1,182 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestCommit < Test::Unit::TestCase
4
+ def setup
5
+ @r = Repo.new(GRIT_REPO)
6
+ end
7
+
8
+ # __bake__
9
+
10
+ def test_bake
11
+ Git.any_instance.expects(:rev_list).returns(fixture('rev_list_single'))
12
+ @c = Commit.create(@r, :id => '4c8124ffcf4039d292442eeccabdeca5af5c5017')
13
+ @c.author # bake
14
+
15
+ assert_equal "Tom Preston-Werner", @c.author.name
16
+ assert_equal "tom@mojombo.com", @c.author.email
17
+ end
18
+
19
+ # short_name
20
+
21
+ def test_id_abbrev
22
+ Git.any_instance.expects(:rev_parse).returns(fixture('rev_parse'))
23
+ assert_equal '80f136f', @r.commit('80f136f500dfdb8c3e8abf4ae716f875f0a1b57f').id_abbrev
24
+ end
25
+
26
+ # diff
27
+
28
+ def test_diff
29
+ # git diff --full-index 91169e1f5fa4de2eaea3f176461f5dc784796769 > test/fixtures/diff_p
30
+
31
+ Git.any_instance.expects(:diff).with({:full_index => true}, 'master').returns(fixture('diff_p'))
32
+ diffs = Commit.diff(@r, 'master')
33
+
34
+ assert_equal 15, diffs.size
35
+
36
+ assert_equal '.gitignore', diffs.first.a_path
37
+ assert_equal '.gitignore', diffs.first.b_path
38
+ assert_equal '4ebc8aea50e0a67e000ba29a30809d0a7b9b2666', diffs.first.a_commit.id
39
+ assert_equal '2dd02534615434d88c51307beb0f0092f21fd103', diffs.first.b_commit.id
40
+ assert_equal '100644', diffs.first.b_mode
41
+ assert_equal false, diffs.first.new_file
42
+ assert_equal false, diffs.first.deleted_file
43
+ assert_equal "--- a/.gitignore\n+++ b/.gitignore\n@@ -1 +1,2 @@\n coverage\n+pkg", diffs.first.diff
44
+
45
+ assert_equal 'lib/grit/actor.rb', diffs[5].a_path
46
+ assert_equal nil, diffs[5].a_commit
47
+ assert_equal 'f733bce6b57c0e5e353206e692b0e3105c2527f4', diffs[5].b_commit.id
48
+ assert_equal true, diffs[5].new_file
49
+ end
50
+
51
+ def test_diff_with_two_commits
52
+ # git diff --full-index 59ddc32 13d27d5 > test/fixtures/diff_2
53
+ Git.any_instance.expects(:diff).with({:full_index => true}, '59ddc32', '13d27d5').returns(fixture('diff_2'))
54
+ diffs = Commit.diff(@r, '59ddc32', '13d27d5')
55
+
56
+ assert_equal 3, diffs.size
57
+ assert_equal %w(lib/grit/commit.rb test/fixtures/show_empty_commit test/test_commit.rb), diffs.collect { |d| d.a_path }
58
+ end
59
+
60
+ def test_diff_with_files
61
+ # git diff --full-index 59ddc32 -- lib > test/fixtures/diff_f
62
+ Git.any_instance.expects(:diff).with({:full_index => true}, '59ddc32', '--', 'lib').returns(fixture('diff_f'))
63
+ diffs = Commit.diff(@r, '59ddc32', %w(lib))
64
+
65
+ assert_equal 1, diffs.size
66
+ assert_equal 'lib/grit/diff.rb', diffs.first.a_path
67
+ end
68
+
69
+ def test_diff_with_two_commits_and_files
70
+ # git diff --full-index 59ddc32 13d27d5 -- lib > test/fixtures/diff_2f
71
+ Git.any_instance.expects(:diff).with({:full_index => true}, '59ddc32', '13d27d5', '--', 'lib').returns(fixture('diff_2f'))
72
+ diffs = Commit.diff(@r, '59ddc32', '13d27d5', %w(lib))
73
+
74
+ assert_equal 1, diffs.size
75
+ assert_equal 'lib/grit/commit.rb', diffs.first.a_path
76
+ end
77
+
78
+ # diffs
79
+ def test_diffs
80
+ # git diff --full-index 91169e1f5fa4de2eaea3f176461f5dc784796769 > test/fixtures/diff_p
81
+
82
+ Git.any_instance.expects(:diff).returns(fixture('diff_p'))
83
+ @c = Commit.create(@r, :id => '91169e1f5fa4de2eaea3f176461f5dc784796769')
84
+ diffs = @c.diffs
85
+
86
+ assert_equal 15, diffs.size
87
+
88
+ assert_equal '.gitignore', diffs.first.a_path
89
+ assert_equal '.gitignore', diffs.first.b_path
90
+ assert_equal '4ebc8aea50e0a67e000ba29a30809d0a7b9b2666', diffs.first.a_commit.id
91
+ assert_equal '2dd02534615434d88c51307beb0f0092f21fd103', diffs.first.b_commit.id
92
+ assert_equal '100644', diffs.first.b_mode
93
+ assert_equal false, diffs.first.new_file
94
+ assert_equal false, diffs.first.deleted_file
95
+ assert_equal "--- a/.gitignore\n+++ b/.gitignore\n@@ -1 +1,2 @@\n coverage\n+pkg", diffs.first.diff
96
+
97
+ assert_equal 'lib/grit/actor.rb', diffs[5].a_path
98
+ assert_equal nil, diffs[5].a_commit
99
+ assert_equal 'f733bce6b57c0e5e353206e692b0e3105c2527f4', diffs[5].b_commit.id
100
+ assert_equal true, diffs[5].new_file
101
+ end
102
+
103
+ def test_diffs_on_initial_import
104
+ # git show --full-index 634396b2f541a9f2d58b00be1a07f0c358b999b3 > test/fixtures/diff_i
105
+
106
+ Git.any_instance.expects(:show).with({:full_index => true, :pretty => 'raw'}, '634396b2f541a9f2d58b00be1a07f0c358b999b3').returns(fixture('diff_i'))
107
+ @c = Commit.create(@r, :id => '634396b2f541a9f2d58b00be1a07f0c358b999b3')
108
+ diffs = @c.diffs
109
+
110
+ assert_equal 10, diffs.size
111
+
112
+ assert_equal 'History.txt', diffs.first.a_path
113
+ assert_equal 'History.txt', diffs.first.b_path
114
+ assert_equal nil, diffs.first.a_commit
115
+ assert_equal nil, diffs.first.b_mode
116
+ assert_equal '81d2c27608b352814cbe979a6acd678d30219678', diffs.first.b_commit.id
117
+ assert_equal true, diffs.first.new_file
118
+ assert_equal false, diffs.first.deleted_file
119
+ assert_equal "--- /dev/null\n+++ b/History.txt\n@@ -0,0 +1,5 @@\n+== 1.0.0 / 2007-10-09\n+\n+* 1 major enhancement\n+ * Birthday!\n+", diffs.first.diff
120
+
121
+
122
+ assert_equal 'lib/grit.rb', diffs[5].a_path
123
+ assert_equal nil, diffs[5].a_commit
124
+ assert_equal '32cec87d1e78946a827ddf6a8776be4d81dcf1d1', diffs[5].b_commit.id
125
+ assert_equal true, diffs[5].new_file
126
+ end
127
+
128
+ def test_diffs_on_initial_import_with_empty_commit
129
+ Git.any_instance.expects(:show).with(
130
+ {:full_index => true, :pretty => 'raw'},
131
+ '634396b2f541a9f2d58b00be1a07f0c358b999b3'
132
+ ).returns(fixture('show_empty_commit'))
133
+
134
+ @c = Commit.create(@r, :id => '634396b2f541a9f2d58b00be1a07f0c358b999b3')
135
+ diffs = @c.diffs
136
+
137
+ assert_equal [], diffs
138
+ end
139
+
140
+ def test_diffs_with_mode_only_change
141
+ Git.any_instance.expects(:diff).returns(fixture('diff_mode_only'))
142
+ @c = Commit.create(@r, :id => '91169e1f5fa4de2eaea3f176461f5dc784796769')
143
+ diffs = @c.diffs
144
+
145
+ assert_equal 23, diffs.size
146
+ assert_equal '100644', diffs[0].a_mode
147
+ assert_equal '100755', diffs[0].b_mode
148
+ end
149
+
150
+ # to_s
151
+
152
+ def test_to_s
153
+ @c = Commit.create(@r, :id => 'abc')
154
+ assert_equal "abc", @c.to_s
155
+ end
156
+
157
+ # inspect
158
+
159
+ def test_inspect
160
+ @c = Commit.create(@r, :id => 'abc')
161
+ assert_equal %Q{#<Grit::Commit "abc">}, @c.inspect
162
+ end
163
+
164
+ # to_hash
165
+
166
+ def test_to_hash
167
+ @c = Commit.create(@r, :id => '4c8124ffcf4039d292442eeccabdeca5af5c5017')
168
+
169
+ expected = {
170
+ 'parents' => ['id' => "634396b2f541a9f2d58b00be1a07f0c358b999b3"],
171
+ 'committed_date' => "2007-10-10T00:06:12-07:00",
172
+ 'tree' => "672eca9b7f9e09c22dcb128c283e8c3c8d7697a4",
173
+ 'authored_date' => "2007-10-10T00:06:12-07:00",
174
+ 'committer' => {'email' => "tom@mojombo.com", 'name' => "Tom Preston-Werner"},
175
+ 'message' => "implement Grit#heads",
176
+ 'author' => {'email' => "tom@mojombo.com", 'name' => "Tom Preston-Werner"},
177
+ 'id' => "4c8124ffcf4039d292442eeccabdeca5af5c5017"
178
+ }
179
+
180
+ assert_equal expected, @c.to_hash
181
+ end
182
+ end
@@ -0,0 +1,58 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestConfig < Test::Unit::TestCase
4
+ def setup
5
+ @r = Repo.new(GRIT_REPO)
6
+ end
7
+
8
+ # data
9
+
10
+ def test_bracketed_fetch
11
+ Git.any_instance.expects(:config).returns(fixture('simple_config'))
12
+
13
+ config = @r.config
14
+
15
+ assert_equal "git://github.com/mojombo/grit.git", config["remote.origin.url"]
16
+ end
17
+
18
+ def test_bracketed_fetch_returns_nil
19
+ Git.any_instance.expects(:config).returns(fixture('simple_config'))
20
+
21
+ config = @r.config
22
+
23
+ assert_equal nil, config["unknown"]
24
+ end
25
+
26
+ def test_fetch
27
+ Git.any_instance.expects(:config).returns(fixture('simple_config'))
28
+
29
+ config = @r.config
30
+
31
+ assert_equal "false", config.fetch("core.bare")
32
+ end
33
+
34
+ def test_fetch_with_default
35
+ Git.any_instance.expects(:config).returns(fixture('simple_config'))
36
+
37
+ config = @r.config
38
+
39
+ assert_equal "default", config.fetch("unknown", "default")
40
+ end
41
+
42
+ def test_fetch_without_default_raises
43
+ Git.any_instance.expects(:config).returns(fixture('simple_config'))
44
+
45
+ config = @r.config
46
+
47
+ assert_raise(IndexError) do
48
+ config.fetch("unknown")
49
+ end
50
+ end
51
+
52
+ def test_set_value
53
+ Git.any_instance.expects(:config).with({}, 'unknown', 'default')
54
+
55
+ config = @r.config
56
+ config["unknown"] = "default"
57
+ end
58
+ end
@@ -0,0 +1,18 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestDiff < Test::Unit::TestCase
4
+ def setup
5
+ @r = Repo.new(GRIT_REPO)
6
+ end
7
+
8
+ # list_from_string
9
+
10
+ def test_list_from_string_new_mode
11
+ output = fixture('diff_new_mode')
12
+
13
+ diffs = Diff.list_from_string(@r, output)
14
+ assert_equal 2, diffs.size
15
+ assert_equal 10, diffs.first.diff.split("\n").size
16
+ assert_equal nil, diffs.last.diff
17
+ end
18
+ end
@@ -0,0 +1,52 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestGit < Test::Unit::TestCase
4
+ def setup
5
+ @git = Git.new(File.join(File.dirname(__FILE__), *%w[..]))
6
+ end
7
+
8
+ def test_method_missing
9
+ assert_match(/^git version [\w\.]*$/, @git.version)
10
+ end
11
+
12
+ def test_transform_options
13
+ assert_equal ["-s"], @git.transform_options({:s => true})
14
+ assert_equal ["-s '5'"], @git.transform_options({:s => 5})
15
+
16
+ assert_equal ["--max-count"], @git.transform_options({:max_count => true})
17
+ assert_equal ["--max-count='5'"], @git.transform_options({:max_count => 5})
18
+
19
+ assert_equal ["-s", "-t"], @git.transform_options({:s => true, :t => true}).sort
20
+ end
21
+
22
+ def test_uses_custom_sh_method
23
+ @git.expects(:sh)
24
+ @git.something
25
+ end
26
+
27
+ def test_can_skip_timeout
28
+ @git.expects(:wild_sh)
29
+ @git.something(:timeout => false)
30
+ end
31
+
32
+ def test_raises_if_too_many_bytes
33
+ @git.instance_variable_set(:@bytes_read, 6000000)
34
+ assert_raises Grit::Git::GitTimeout do
35
+ @git.something
36
+ end
37
+ end
38
+
39
+ def test_raises_on_slow_shell
40
+ Grit::Git.git_timeout = 0.5
41
+ Open4.expects(:popen4).returns([ nil, nil, mock(:read => proc { sleep 1 }), nil ])
42
+ assert_raises Grit::Git::GitTimeout do
43
+ @git.something
44
+ end
45
+ end
46
+
47
+ def test_works_fine_if_quick
48
+ output = 'output'
49
+ Open4.expects(:popen4).returns([ nil, nil, mock(:read => output), nil ])
50
+ assert_equal output, @git.something
51
+ end
52
+ end