grit 1.1.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grit might be problematic. Click here for more details.
- data/History.txt +9 -0
- data/README.md +37 -11
- data/VERSION.yml +3 -3
- data/examples/ex_add_commit.rb +13 -0
- data/examples/ex_index.rb +14 -0
- data/lib/grit.rb +10 -3
- data/lib/grit/actor.rb +5 -5
- data/lib/grit/blob.rb +12 -12
- data/lib/grit/commit.rb +3 -3
- data/lib/grit/commit_stats.rb +26 -26
- data/lib/grit/config.rb +9 -9
- data/lib/grit/diff.rb +16 -16
- data/lib/grit/errors.rb +1 -1
- data/lib/grit/git-ruby.rb +108 -27
- data/lib/grit/git-ruby/commit_db.rb +11 -11
- data/lib/grit/git-ruby/file_index.rb +28 -28
- data/lib/grit/git-ruby/git_object.rb +14 -14
- data/lib/grit/git-ruby/internal/file_window.rb +4 -4
- data/lib/grit/git-ruby/internal/loose.rb +10 -10
- data/lib/grit/git-ruby/internal/pack.rb +29 -29
- data/lib/grit/git-ruby/internal/raw_object.rb +4 -4
- data/lib/grit/git-ruby/object.rb +9 -9
- data/lib/grit/git-ruby/repository.rb +111 -107
- data/lib/grit/git.rb +191 -14
- data/lib/grit/index.rb +21 -21
- data/lib/grit/lazy.rb +1 -1
- data/lib/grit/merge.rb +9 -9
- data/lib/grit/ref.rb +6 -31
- data/lib/grit/repo.rb +110 -65
- data/lib/grit/ruby1.9.rb +1 -1
- data/lib/grit/status.rb +24 -24
- data/lib/grit/submodule.rb +15 -15
- data/lib/grit/tag.rb +7 -57
- data/lib/grit/tree.rb +12 -12
- data/test/bench/benchmarks.rb +126 -0
- data/test/helper.rb +18 -0
- data/test/profile.rb +21 -0
- data/test/suite.rb +6 -0
- data/test/test_actor.rb +35 -0
- data/test/test_blame.rb +32 -0
- data/test/test_blame_tree.rb +33 -0
- data/test/test_blob.rb +83 -0
- data/test/test_commit.rb +207 -0
- data/test/test_commit_stats.rb +33 -0
- data/test/test_commit_write.rb +20 -0
- data/test/test_config.rb +58 -0
- data/test/test_diff.rb +18 -0
- data/test/test_file_index.rb +56 -0
- data/test/test_git.rb +105 -0
- data/test/test_grit.rb +32 -0
- data/test/test_head.rb +47 -0
- data/test/test_index_status.rb +40 -0
- data/test/test_merge.rb +17 -0
- data/test/test_raw.rb +16 -0
- data/test/test_real.rb +19 -0
- data/test/test_reality.rb +17 -0
- data/test/test_remote.rb +14 -0
- data/test/test_repo.rb +349 -0
- data/test/test_rubygit.rb +192 -0
- data/test/test_rubygit_alt.rb +40 -0
- data/test/test_rubygit_index.rb +76 -0
- data/test/test_rubygit_iv2.rb +28 -0
- data/test/test_submodule.rb +69 -0
- data/test/test_tag.rb +67 -0
- data/test/test_tree.rb +101 -0
- metadata +43 -13
data/test/test_blame.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
require 'pp'
|
3
|
+
|
4
|
+
class TestBlame < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@r = Repo.new(File.join(File.dirname(__FILE__), *%w[dot_git]), :is_bare => true)
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_simple_blame
|
11
|
+
commit = '2d3acf90f35989df8f262dc50beadc4ee3ae1560'
|
12
|
+
blame = @r.blame('History.txt', commit)
|
13
|
+
assert_equal 5, blame.lines.size
|
14
|
+
line = blame.lines[2]
|
15
|
+
assert_equal '* 1 major enhancement', line.line
|
16
|
+
assert_equal 3, line.lineno
|
17
|
+
assert_equal 3, line.oldlineno
|
18
|
+
assert_equal '634396b2f541a9f2d58b00be1a07f0c358b999b3', line.commit.id
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_depth_blame
|
22
|
+
commit = '2d3acf90f35989df8f262dc50beadc4ee3ae1560'
|
23
|
+
blame = @r.blame('lib/grit.rb', commit)
|
24
|
+
assert_equal 37, blame.lines.size
|
25
|
+
line = blame.lines[24]
|
26
|
+
assert_equal "require 'grit/diff'", line.line
|
27
|
+
assert_equal 25, line.lineno
|
28
|
+
assert_equal 16, line.oldlineno
|
29
|
+
assert_equal '46291865ba0f6e0c9818b11be799fe2db6964d56', line.commit.id
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
require 'pp'
|
3
|
+
|
4
|
+
class TestBlameTree < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@git = Git.new(File.join(File.dirname(__FILE__), *%w[dot_git]))
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_blame_tree
|
11
|
+
commit = '2d3acf90f35989df8f262dc50beadc4ee3ae1560'
|
12
|
+
tree = @git.blame_tree(commit)
|
13
|
+
last_commit_sha = tree['History.txt']
|
14
|
+
assert_equal last_commit_sha, '7bcc0ee821cdd133d8a53e8e7173a334fef448aa'
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_blame_tree_path
|
18
|
+
commit = '2d3acf90f35989df8f262dc50beadc4ee3ae1560'
|
19
|
+
tree = @git.blame_tree(commit, 'lib')
|
20
|
+
last_commit_sha = tree['lib/grit.rb']
|
21
|
+
assert_equal last_commit_sha, '5a0943123f6872e75a9b1dd0b6519dd42a186fda'
|
22
|
+
last_commit_sha = tree['lib/grit']
|
23
|
+
assert_equal last_commit_sha, '2d3acf90f35989df8f262dc50beadc4ee3ae1560'
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_blame_tree_multi_path
|
27
|
+
commit = '2d3acf90f35989df8f262dc50beadc4ee3ae1560'
|
28
|
+
tree = @git.blame_tree(commit, 'lib/grit')
|
29
|
+
last_commit_sha = tree['lib/grit/diff.rb']
|
30
|
+
assert_equal last_commit_sha, '22825175e37f22c9418d756ca69b574d75602994'
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
data/test/test_blob.rb
ADDED
@@ -0,0 +1,83 @@
|
|
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
|
+
def test_nosuch_blob
|
11
|
+
t = @r.blob('blahblah')
|
12
|
+
assert t.is_a?(Blob)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_data_should_return_blob_contents
|
16
|
+
Git.any_instance.expects(:cat_file).returns(fixture('cat_file_blob'))
|
17
|
+
blob = Blob.create(@r, :id => 'abc')
|
18
|
+
assert_equal "Hello world", blob.data
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_data_should_cache
|
22
|
+
Git.any_instance.expects(:cat_file).returns(fixture('cat_file_blob')).times(1)
|
23
|
+
blob = Blob.create(@r, :id => 'abc')
|
24
|
+
blob.data
|
25
|
+
blob.data
|
26
|
+
end
|
27
|
+
|
28
|
+
# size
|
29
|
+
|
30
|
+
def test_size_should_return_file_size
|
31
|
+
Git.any_instance.expects(:cat_file).returns(fixture('cat_file_blob_size'))
|
32
|
+
blob = Blob.create(@r, :id => 'abc')
|
33
|
+
assert_equal 11, blob.size
|
34
|
+
end
|
35
|
+
|
36
|
+
# data
|
37
|
+
|
38
|
+
# mime_type
|
39
|
+
|
40
|
+
def test_mime_type_should_return_mime_type_for_known_types
|
41
|
+
blob = Blob.create(@r, :id => 'abc', :name => 'foo.png')
|
42
|
+
assert_equal "image/png", blob.mime_type
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_mime_type_should_return_text_plain_for_unknown_types
|
46
|
+
blob = Blob.create(@r, :id => 'abc')
|
47
|
+
assert_equal "text/plain", blob.mime_type
|
48
|
+
end
|
49
|
+
|
50
|
+
# blame
|
51
|
+
|
52
|
+
def test_blame
|
53
|
+
Git.any_instance.expects(:blame).returns(fixture('blame'))
|
54
|
+
b = Blob.blame(@r, 'master', 'lib/grit.rb')
|
55
|
+
assert_equal 13, b.size
|
56
|
+
assert_equal 25, b.inject(0) { |acc, x| acc + x.last.size }
|
57
|
+
assert_equal b[0].first.object_id, b[9].first.object_id
|
58
|
+
c = b.first.first
|
59
|
+
c.expects(:__bake__).times(0)
|
60
|
+
assert_equal '634396b2f541a9f2d58b00be1a07f0c358b999b3', c.id
|
61
|
+
assert_equal 'Tom Preston-Werner', c.author.name
|
62
|
+
assert_equal 'tom@mojombo.com', c.author.email
|
63
|
+
assert_equal Time.at(1191997100), c.authored_date
|
64
|
+
assert_equal 'Tom Preston-Werner', c.committer.name
|
65
|
+
assert_equal 'tom@mojombo.com', c.committer.email
|
66
|
+
assert_equal Time.at(1191997100), c.committed_date
|
67
|
+
assert_equal 'initial grit setup', c.message
|
68
|
+
# c.expects(:__bake__).times(1)
|
69
|
+
# assert_equal Tree, c.tree.class
|
70
|
+
end
|
71
|
+
|
72
|
+
# inspect
|
73
|
+
|
74
|
+
def test_inspect
|
75
|
+
@b = Blob.create(@r, :id => 'abc')
|
76
|
+
assert_equal %Q{#<Grit::Blob "abc">}, @b.inspect
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_basename
|
80
|
+
@b = Blob.create(@r, :name => 'foo/bar.rb')
|
81
|
+
assert_equal "bar.rb", @b.basename
|
82
|
+
end
|
83
|
+
end
|
data/test/test_commit.rb
ADDED
@@ -0,0 +1,207 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
class TestCommit < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@r = Repo.new(File.join(File.dirname(__FILE__), *%w[dot_git]), :is_bare => true)
|
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
|
+
assert_equal '80f136f', @r.commit('80f136f500dfdb8c3e8abf4ae716f875f0a1b57f').id_abbrev
|
23
|
+
end
|
24
|
+
|
25
|
+
# count
|
26
|
+
|
27
|
+
def test_count
|
28
|
+
assert_equal 107, Commit.count(@r, 'master')
|
29
|
+
end
|
30
|
+
|
31
|
+
# diff
|
32
|
+
|
33
|
+
def test_diff
|
34
|
+
# git diff --full-index 91169e1f5fa4de2eaea3f176461f5dc784796769 > test/fixtures/diff_p
|
35
|
+
|
36
|
+
Git.any_instance.expects(:diff).with({:full_index => true}, 'master').returns(fixture('diff_p'))
|
37
|
+
diffs = Commit.diff(@r, 'master')
|
38
|
+
|
39
|
+
assert_equal 15, diffs.size
|
40
|
+
|
41
|
+
assert_equal '.gitignore', diffs.first.a_path
|
42
|
+
assert_equal '.gitignore', diffs.first.b_path
|
43
|
+
assert_equal '4ebc8aea50e0a67e000ba29a30809d0a7b9b2666', diffs.first.a_blob.id
|
44
|
+
assert_equal '2dd02534615434d88c51307beb0f0092f21fd103', diffs.first.b_blob.id
|
45
|
+
assert_equal '100644', diffs.first.b_mode
|
46
|
+
assert_equal false, diffs.first.new_file
|
47
|
+
assert_equal false, diffs.first.deleted_file
|
48
|
+
assert_equal "--- a/.gitignore\n+++ b/.gitignore\n@@ -1 +1,2 @@\n coverage\n+pkg", diffs.first.diff
|
49
|
+
|
50
|
+
assert_equal 'lib/grit/actor.rb', diffs[5].a_path
|
51
|
+
assert_equal nil, diffs[5].a_blob
|
52
|
+
assert_equal 'f733bce6b57c0e5e353206e692b0e3105c2527f4', diffs[5].b_blob.id
|
53
|
+
assert_equal true, diffs[5].new_file
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_diff_with_two_commits
|
57
|
+
# git diff --full-index 59ddc32 13d27d5 > test/fixtures/diff_2
|
58
|
+
Git.any_instance.expects(:diff).with({:full_index => true}, '59ddc32', '13d27d5').returns(fixture('diff_2'))
|
59
|
+
diffs = Commit.diff(@r, '59ddc32', '13d27d5')
|
60
|
+
|
61
|
+
assert_equal 3, diffs.size
|
62
|
+
assert_equal %w(lib/grit/commit.rb test/fixtures/show_empty_commit test/test_commit.rb), diffs.collect { |d| d.a_path }
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_diff_with_files
|
66
|
+
# git diff --full-index 59ddc32 -- lib > test/fixtures/diff_f
|
67
|
+
Git.any_instance.expects(:diff).with({:full_index => true}, '59ddc32', '--', 'lib').returns(fixture('diff_f'))
|
68
|
+
diffs = Commit.diff(@r, '59ddc32', %w(lib))
|
69
|
+
|
70
|
+
assert_equal 1, diffs.size
|
71
|
+
assert_equal 'lib/grit/diff.rb', diffs.first.a_path
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_diff_with_two_commits_and_files
|
75
|
+
# git diff --full-index 59ddc32 13d27d5 -- lib > test/fixtures/diff_2f
|
76
|
+
Git.any_instance.expects(:diff).with({:full_index => true}, '59ddc32', '13d27d5', '--', 'lib').returns(fixture('diff_2f'))
|
77
|
+
diffs = Commit.diff(@r, '59ddc32', '13d27d5', %w(lib))
|
78
|
+
|
79
|
+
assert_equal 1, diffs.size
|
80
|
+
assert_equal 'lib/grit/commit.rb', diffs.first.a_path
|
81
|
+
end
|
82
|
+
|
83
|
+
# diffs
|
84
|
+
def test_diffs
|
85
|
+
# git diff --full-index 91169e1f5fa4de2eaea3f176461f5dc784796769 > test/fixtures/diff_p
|
86
|
+
|
87
|
+
Git.any_instance.expects(:diff).returns(fixture('diff_p'))
|
88
|
+
@c = Commit.create(@r, :id => '91169e1f5fa4de2eaea3f176461f5dc784796769')
|
89
|
+
diffs = @c.diffs
|
90
|
+
|
91
|
+
assert_equal 15, diffs.size
|
92
|
+
|
93
|
+
assert_equal '.gitignore', diffs.first.a_path
|
94
|
+
assert_equal '.gitignore', diffs.first.b_path
|
95
|
+
assert_equal '4ebc8aea50e0a67e000ba29a30809d0a7b9b2666', diffs.first.a_blob.id
|
96
|
+
assert_equal '2dd02534615434d88c51307beb0f0092f21fd103', diffs.first.b_blob.id
|
97
|
+
assert_equal '100644', diffs.first.b_mode
|
98
|
+
assert_equal false, diffs.first.new_file
|
99
|
+
assert_equal false, diffs.first.deleted_file
|
100
|
+
assert_equal "--- a/.gitignore\n+++ b/.gitignore\n@@ -1 +1,2 @@\n coverage\n+pkg", diffs.first.diff
|
101
|
+
|
102
|
+
assert_equal 'lib/grit/actor.rb', diffs[5].a_path
|
103
|
+
assert_equal nil, diffs[5].a_blob
|
104
|
+
assert_equal 'f733bce6b57c0e5e353206e692b0e3105c2527f4', diffs[5].b_blob.id
|
105
|
+
assert_equal true, diffs[5].new_file
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_diffs_on_initial_import
|
109
|
+
# git show --full-index 634396b2f541a9f2d58b00be1a07f0c358b999b3 > test/fixtures/diff_i
|
110
|
+
|
111
|
+
Git.any_instance.expects(:show).with({:full_index => true, :pretty => 'raw'}, '634396b2f541a9f2d58b00be1a07f0c358b999b3').returns(fixture('diff_i'))
|
112
|
+
@c = Commit.create(@r, :id => '634396b2f541a9f2d58b00be1a07f0c358b999b3')
|
113
|
+
diffs = @c.diffs
|
114
|
+
|
115
|
+
assert_equal 10, diffs.size
|
116
|
+
|
117
|
+
assert_equal 'History.txt', diffs.first.a_path
|
118
|
+
assert_equal 'History.txt', diffs.first.b_path
|
119
|
+
assert_equal nil, diffs.first.a_blob
|
120
|
+
assert_equal nil, diffs.first.b_mode
|
121
|
+
assert_equal '81d2c27608b352814cbe979a6acd678d30219678', diffs.first.b_blob.id
|
122
|
+
assert_equal true, diffs.first.new_file
|
123
|
+
assert_equal false, diffs.first.deleted_file
|
124
|
+
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
|
125
|
+
|
126
|
+
|
127
|
+
assert_equal 'lib/grit.rb', diffs[5].a_path
|
128
|
+
assert_equal nil, diffs[5].a_blob
|
129
|
+
assert_equal '32cec87d1e78946a827ddf6a8776be4d81dcf1d1', diffs[5].b_blob.id
|
130
|
+
assert_equal true, diffs[5].new_file
|
131
|
+
end
|
132
|
+
|
133
|
+
def test_diffs_on_initial_import_with_empty_commit
|
134
|
+
Git.any_instance.expects(:show).with(
|
135
|
+
{:full_index => true, :pretty => 'raw'},
|
136
|
+
'634396b2f541a9f2d58b00be1a07f0c358b999b3'
|
137
|
+
).returns(fixture('show_empty_commit'))
|
138
|
+
|
139
|
+
@c = Commit.create(@r, :id => '634396b2f541a9f2d58b00be1a07f0c358b999b3')
|
140
|
+
diffs = @c.diffs
|
141
|
+
|
142
|
+
assert_equal [], diffs
|
143
|
+
end
|
144
|
+
|
145
|
+
def test_diffs_with_mode_only_change
|
146
|
+
Git.any_instance.expects(:diff).returns(fixture('diff_mode_only'))
|
147
|
+
@c = Commit.create(@r, :id => '91169e1f5fa4de2eaea3f176461f5dc784796769')
|
148
|
+
diffs = @c.diffs
|
149
|
+
|
150
|
+
assert_equal 23, diffs.size
|
151
|
+
assert_equal '100644', diffs[0].a_mode
|
152
|
+
assert_equal '100755', diffs[0].b_mode
|
153
|
+
end
|
154
|
+
|
155
|
+
# to_s
|
156
|
+
|
157
|
+
def test_to_s
|
158
|
+
@c = Commit.create(@r, :id => 'abc')
|
159
|
+
assert_equal "abc", @c.to_s
|
160
|
+
end
|
161
|
+
|
162
|
+
# to_patch
|
163
|
+
|
164
|
+
def test_to_patch
|
165
|
+
@c = Commit.create(@r, :id => '80f136f500dfdb8c3e8abf4ae716f875f0a1b57f')
|
166
|
+
|
167
|
+
patch = @c.to_patch
|
168
|
+
|
169
|
+
assert patch.include?('From 80f136f500dfdb8c3e8abf4ae716f875f0a1b57f Mon Sep 17 00:00:00 2001')
|
170
|
+
assert patch.include?('From: tom <tom@taco.(none)>')
|
171
|
+
assert patch.include?('Date: Tue, 20 Nov 2007 17:27:42 -0800')
|
172
|
+
assert patch.include?('Subject: [PATCH] fix tests on other machines')
|
173
|
+
assert patch.include?('test/test_reality.rb | 30 +++++++++++++++---------------')
|
174
|
+
assert patch.include?('@@ -1,17 +1,17 @@')
|
175
|
+
assert patch.include?('+# recurse(t)')
|
176
|
+
assert patch.include?("1.6.")
|
177
|
+
end
|
178
|
+
|
179
|
+
# inspect
|
180
|
+
|
181
|
+
def test_inspect
|
182
|
+
@c = Commit.create(@r, :id => 'abc')
|
183
|
+
assert_equal %Q{#<Grit::Commit "abc">}, @c.inspect
|
184
|
+
end
|
185
|
+
|
186
|
+
# to_hash
|
187
|
+
|
188
|
+
def test_to_hash
|
189
|
+
old_tz, ENV["TZ"] = ENV["TZ"], "US/Pacific"
|
190
|
+
@c = Commit.create(@r, :id => '4c8124ffcf4039d292442eeccabdeca5af5c5017')
|
191
|
+
date = Time.parse('Wed Oct 10 03:06:12 -0400 2007')
|
192
|
+
expected = {
|
193
|
+
'parents' => ['id' => "634396b2f541a9f2d58b00be1a07f0c358b999b3"],
|
194
|
+
'committed_date' => date.xmlschema,
|
195
|
+
'tree' => "672eca9b7f9e09c22dcb128c283e8c3c8d7697a4",
|
196
|
+
'authored_date' => date.xmlschema,
|
197
|
+
'committer' => {'email' => "tom@mojombo.com", 'name' => "Tom Preston-Werner"},
|
198
|
+
'message' => "implement Grit#heads",
|
199
|
+
'author' => {'email' => "tom@mojombo.com", 'name' => "Tom Preston-Werner"},
|
200
|
+
'id' => "4c8124ffcf4039d292442eeccabdeca5af5c5017"
|
201
|
+
}
|
202
|
+
|
203
|
+
assert_equal expected, @c.to_hash
|
204
|
+
ensure
|
205
|
+
ENV["TZ"] = old_tz
|
206
|
+
end
|
207
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
class TestCommitStats < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
File.expects(:exist?).returns(true)
|
7
|
+
@r = Repo.new(GRIT_REPO)
|
8
|
+
|
9
|
+
Git.any_instance.expects(:log).returns(fixture('log'))
|
10
|
+
@stats = @r.commit_stats
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_commit_stats
|
14
|
+
assert_equal 3, @stats.size
|
15
|
+
end
|
16
|
+
|
17
|
+
# to_hash
|
18
|
+
|
19
|
+
def test_to_hash
|
20
|
+
expected = {
|
21
|
+
"files"=>
|
22
|
+
[["examples/ex_add_commit.rb", 13, 0, 13],
|
23
|
+
["examples/ex_index.rb", 1, 1, 2]],
|
24
|
+
"total"=>15,
|
25
|
+
"additions"=>14,
|
26
|
+
"id"=>"a49b96b339c525d7fd455e0ad4f6fe7b550c9543",
|
27
|
+
"deletions"=>1
|
28
|
+
}
|
29
|
+
|
30
|
+
assert_equal expected, @stats.assoc('a49b96b339c525d7fd455e0ad4f6fe7b550c9543')[1].to_hash
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
class TestCommitWrite < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@r = Repo.new(GRIT_REPO)
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_commit
|
9
|
+
Git.any_instance.expects(:commit).returns(fixture('commit'))
|
10
|
+
results = @r.commit_index('my message')
|
11
|
+
assert_match /Created commit/, results
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_commit_all
|
15
|
+
Git.any_instance.expects(:commit).returns(fixture('commit'))
|
16
|
+
results = @r.commit_all('my message')
|
17
|
+
assert_match /Created commit/, results
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
data/test/test_config.rb
ADDED
@@ -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
|