libdolt 0.15.0 → 0.16.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +3 -16
- data/Readme.md +2 -3
- data/lib/libdolt/git/archiver.rb +15 -40
- data/lib/libdolt/git/blame.rb +4 -0
- data/lib/libdolt/git/process.rb +44 -0
- data/lib/libdolt/git/repository.rb +56 -101
- data/lib/libdolt/git.rb +42 -0
- data/lib/libdolt/repo_actions.rb +28 -36
- data/lib/libdolt/version.rb +1 -1
- data/lib/libdolt.rb +1 -3
- data/libdolt.gemspec +1 -5
- data/test/libdolt/git/archiver_test.rb +28 -91
- data/test/libdolt/git/blame_test.rb +40 -4
- data/test/libdolt/git/commit_test.rb +1 -3
- data/test/libdolt/git/repository_test.rb +92 -171
- data/test/libdolt/repo_actions_test.rb +102 -144
- data/test/test_helper.rb +22 -2
- metadata +9 -71
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
#--
|
3
|
-
# Copyright (C) 2012 Gitorious AS
|
3
|
+
# Copyright (C) 2012-2013 Gitorious AS
|
4
4
|
#
|
5
5
|
# This program is free software: you can redistribute it and/or modify
|
6
6
|
# it under the terms of the GNU Affero General Public License as published by
|
@@ -17,7 +17,6 @@
|
|
17
17
|
#++
|
18
18
|
require "test_helper"
|
19
19
|
require "libdolt/repo_actions"
|
20
|
-
require "when"
|
21
20
|
require "ostruct"
|
22
21
|
require "mocha/setup"
|
23
22
|
|
@@ -25,30 +24,23 @@ class Repository
|
|
25
24
|
attr_reader :name
|
26
25
|
def initialize(name)
|
27
26
|
@name = name
|
28
|
-
@refs = {}
|
29
27
|
end
|
30
28
|
|
31
|
-
def tree(ref, path);
|
32
|
-
def tree_entry(ref, path);
|
33
|
-
def rev_parse(rev);
|
34
|
-
def
|
35
|
-
def blame(ref, path);
|
36
|
-
def log(ref, path, limit);
|
37
|
-
def refs;
|
38
|
-
def tree_history(ref, path, count);
|
39
|
-
|
40
|
-
def
|
41
|
-
|
29
|
+
def tree(ref, path); end
|
30
|
+
def tree_entry(ref, path); end
|
31
|
+
def rev_parse(rev); end
|
32
|
+
def rev_parse_oid(ref); self.class.refs[ref] || nil; end
|
33
|
+
def blame(ref, path); end
|
34
|
+
def log(ref, path, limit); end
|
35
|
+
def refs; end
|
36
|
+
def tree_history(ref, path, count); end
|
37
|
+
|
38
|
+
def self.stub_ref(name, ref)
|
39
|
+
self.refs[name] = ref
|
42
40
|
end
|
43
41
|
|
44
|
-
def
|
45
|
-
@refs
|
46
|
-
end
|
47
|
-
|
48
|
-
private
|
49
|
-
def stub
|
50
|
-
@deferred = When.defer
|
51
|
-
@deferred.promise
|
42
|
+
def self.refs
|
43
|
+
@refs ||= {}
|
52
44
|
end
|
53
45
|
end
|
54
46
|
|
@@ -79,6 +71,9 @@ describe Dolt::RepoActions do
|
|
79
71
|
before do
|
80
72
|
@resolver = Resolver.new
|
81
73
|
@actions = Dolt::RepoActions.new(@resolver)
|
74
|
+
@blob = FakeBlob.new
|
75
|
+
@tree = { :type => :tree }
|
76
|
+
@blame = { :type => :blame }
|
82
77
|
end
|
83
78
|
|
84
79
|
describe "#blob" do
|
@@ -88,20 +83,16 @@ describe Dolt::RepoActions do
|
|
88
83
|
assert_equal ["gitorious"], @resolver.resolved.map(&:name)
|
89
84
|
end
|
90
85
|
|
91
|
-
it "
|
92
|
-
|
93
|
-
@actions.blob("gitorious", "babd120", "app")
|
94
|
-
data = d
|
95
|
-
end
|
96
|
-
|
97
|
-
@resolver.resolved.last.resolve_promise("Blob")
|
86
|
+
it "returns path, blob, repo, ref and base_tree_url" do
|
87
|
+
Repository.any_instance.stubs(:rev_parse).returns(@blob)
|
88
|
+
data = @actions.blob("gitorious", "babd120", "app")
|
98
89
|
|
99
90
|
assert_equal({
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
91
|
+
:blob => @blob,
|
92
|
+
:repository_slug => "gitorious",
|
93
|
+
:ref => "babd120",
|
94
|
+
:path => "app"
|
95
|
+
}, data)
|
105
96
|
end
|
106
97
|
end
|
107
98
|
|
@@ -112,57 +103,46 @@ describe Dolt::RepoActions do
|
|
112
103
|
assert_equal ["gitorious"], @resolver.resolved.map(&:name)
|
113
104
|
end
|
114
105
|
|
115
|
-
it "
|
116
|
-
|
117
|
-
@actions.tree("gitorious", "babd120", "app")
|
118
|
-
data = d
|
119
|
-
end
|
120
|
-
|
106
|
+
it "returns tree, repo and ref" do
|
107
|
+
Repository.any_instance.stubs(:tree).returns(@tree)
|
108
|
+
data = @actions.tree("gitorious", "babd120", "app")
|
121
109
|
repo = @resolver.resolved.last
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
}
|
130
|
-
assert_equal expected, data
|
110
|
+
|
111
|
+
assert_equal({
|
112
|
+
:tree => @tree,
|
113
|
+
:repository_slug => "gitorious",
|
114
|
+
:ref => "babd120",
|
115
|
+
:path => "app"
|
116
|
+
}, data)
|
131
117
|
end
|
132
118
|
end
|
133
119
|
|
134
120
|
describe "#tree_entry" do
|
135
|
-
it "
|
136
|
-
|
137
|
-
@actions.tree_entry("gitorious", "babd120", "")
|
121
|
+
it "returns tree, repo and ref" do
|
122
|
+
Repository.any_instance.stubs(:tree_entry).returns(@tree)
|
123
|
+
data = @actions.tree_entry("gitorious", "babd120", "")
|
138
124
|
repo = @resolver.resolved.last
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
}
|
148
|
-
assert_equal expected, data
|
125
|
+
|
126
|
+
assert_equal({
|
127
|
+
:tree => @tree,
|
128
|
+
:repository_slug => "gitorious",
|
129
|
+
:ref => "babd120",
|
130
|
+
:path => "",
|
131
|
+
:type => :tree
|
132
|
+
}, data)
|
149
133
|
end
|
150
134
|
|
151
|
-
it "
|
152
|
-
|
153
|
-
@actions.tree_entry("gitorious", "babd120", "Gemfile")
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
:path => "Gemfile",
|
163
|
-
:type => :blob
|
164
|
-
}
|
165
|
-
assert_equal expected, data
|
135
|
+
it "returns blob, repo and ref" do
|
136
|
+
Repository.any_instance.stubs(:tree_entry).returns(@blob)
|
137
|
+
data = @actions.tree_entry("gitorious", "babd120", "Gemfile")
|
138
|
+
|
139
|
+
assert_equal({
|
140
|
+
:blob => @blob,
|
141
|
+
:repository_slug => "gitorious",
|
142
|
+
:ref => "babd120",
|
143
|
+
:path => "Gemfile",
|
144
|
+
:type => :blob
|
145
|
+
}, data)
|
166
146
|
end
|
167
147
|
end
|
168
148
|
|
@@ -173,22 +153,16 @@ describe Dolt::RepoActions do
|
|
173
153
|
assert_equal ["gitorious"], @resolver.resolved.map(&:name)
|
174
154
|
end
|
175
155
|
|
176
|
-
it "
|
177
|
-
|
178
|
-
@actions.blame("gitorious", "babd120", "app")
|
179
|
-
data = d
|
180
|
-
end
|
156
|
+
it "returns blame, repo and ref" do
|
157
|
+
Repository.any_instance.stubs(:blame).returns(@blame)
|
158
|
+
data = @actions.blame("gitorious", "babd120", "app")
|
181
159
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
:ref => "babd120",
|
189
|
-
:path => "app"
|
190
|
-
}
|
191
|
-
assert_equal expected, data
|
160
|
+
assert_equal({
|
161
|
+
:blame => @blame,
|
162
|
+
:repository_slug => "gitorious",
|
163
|
+
:ref => "babd120",
|
164
|
+
:path => "app"
|
165
|
+
}, data)
|
192
166
|
end
|
193
167
|
end
|
194
168
|
|
@@ -199,22 +173,16 @@ describe Dolt::RepoActions do
|
|
199
173
|
assert_equal ["gitorious"], @resolver.resolved.map(&:name)
|
200
174
|
end
|
201
175
|
|
202
|
-
it "
|
203
|
-
|
204
|
-
@actions.history("gitorious", "babd120", "app", 2)
|
205
|
-
data = d
|
206
|
-
end
|
176
|
+
it "returns commits, repo and ref" do
|
177
|
+
Repository.any_instance.stubs(:log).returns([])
|
178
|
+
data = @actions.history("gitorious", "babd120", "app", 2)
|
207
179
|
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
:ref => "babd120",
|
215
|
-
:path => "app"
|
216
|
-
}
|
217
|
-
assert_equal expected, data
|
180
|
+
assert_equal({
|
181
|
+
:commits => [],
|
182
|
+
:repository_slug => "gitorious",
|
183
|
+
:ref => "babd120",
|
184
|
+
:path => "app"
|
185
|
+
}, data)
|
218
186
|
end
|
219
187
|
end
|
220
188
|
|
@@ -228,23 +196,20 @@ describe Dolt::RepoActions do
|
|
228
196
|
"refs/heads/master"].map { |n| OpenStruct.new(:name => n) }
|
229
197
|
end
|
230
198
|
|
231
|
-
it "
|
232
|
-
|
233
|
-
|
199
|
+
it "returns repositories, tags and heads" do
|
200
|
+
Repository.any_instance.stubs(:refs).returns(@refs)
|
201
|
+
Repository.stub_ref("refs/tags/v0.2.0", "a" * 40)
|
202
|
+
Repository.stub_ref("refs/tags/v0.2.1", "b" * 40)
|
203
|
+
Repository.stub_ref("refs/heads/libgit2", "c" * 40)
|
204
|
+
Repository.stub_ref("refs/heads/master", "d" * 40)
|
234
205
|
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
expected = {
|
243
|
-
:repository_slug => "gitorious",
|
244
|
-
:heads => [["libgit2", "c" * 40], ["master", "d" * 40]],
|
245
|
-
:tags => [["v0.2.1", "b" * 40], ["v0.2.0", "a" * 40]]
|
246
|
-
}
|
247
|
-
assert_equal expected, data
|
206
|
+
data = @actions.refs("gitorious")
|
207
|
+
|
208
|
+
assert_equal({
|
209
|
+
:repository_slug => "gitorious",
|
210
|
+
:heads => [["libgit2", "c" * 40], ["master", "d" * 40]],
|
211
|
+
:tags => [["v0.2.1", "b" * 40], ["v0.2.0", "a" * 40]]
|
212
|
+
}, data)
|
248
213
|
end
|
249
214
|
end
|
250
215
|
|
@@ -259,7 +224,7 @@ describe Dolt::RepoActions do
|
|
259
224
|
:oid => "906d67b4f3e5de7364ba9b57d174d8998d53ced6",
|
260
225
|
:author => { :name => "Christian Johansen",
|
261
226
|
:email => "christian@cjohansen.no" },
|
262
|
-
:summary => "Working
|
227
|
+
:summary => "Working Dolt server for viewing blobs",
|
263
228
|
:date => Time.parse("Mon Sep 10 15:07:39 +0200 2012"),
|
264
229
|
:message => ""
|
265
230
|
}]
|
@@ -279,31 +244,24 @@ describe Dolt::RepoActions do
|
|
279
244
|
}]
|
280
245
|
end
|
281
246
|
|
282
|
-
it "
|
283
|
-
|
284
|
-
@actions.tree_history("gitorious", "master", "", 1)
|
247
|
+
it "returns repository, path, ref and history" do
|
248
|
+
Repository.any_instance.stubs(:tree_history).returns(@tree)
|
249
|
+
data = @actions.tree_history("gitorious", "master", "", 1)
|
285
250
|
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
:path => "",
|
293
|
-
:tree => @tree
|
294
|
-
}
|
295
|
-
assert_equal expected, data
|
251
|
+
assert_equal({
|
252
|
+
:repository_slug => "gitorious",
|
253
|
+
:ref => "master",
|
254
|
+
:path => "",
|
255
|
+
:tree => @tree
|
256
|
+
}, data)
|
296
257
|
end
|
297
258
|
end
|
298
259
|
|
299
260
|
describe "repository meta data" do
|
300
|
-
it "is
|
261
|
+
it "is returned with other data" do
|
301
262
|
resolver = MetaResolver.new
|
302
263
|
actions = Dolt::RepoActions.new(resolver)
|
303
|
-
data =
|
304
|
-
actions.blob("gitorious", "babd120", "app") { |err, d| data = d }
|
305
|
-
|
306
|
-
resolver.resolved.last.resolve_promise("Blob")
|
264
|
+
data = actions.blob("gitorious", "babd120", "app")
|
307
265
|
|
308
266
|
assert_equal "Meta data is cool", data[:repository_meta]
|
309
267
|
end
|
@@ -312,8 +270,8 @@ describe Dolt::RepoActions do
|
|
312
270
|
describe "#rev_parse_oid" do
|
313
271
|
it "resolves ref oid" do
|
314
272
|
oid = "a" * 40
|
315
|
-
Repository.any_instance.stubs(:
|
273
|
+
Repository.any_instance.stubs(:rev_parse_oid).returns(oid)
|
316
274
|
assert_equal oid, @actions.rev_parse_oid("gitorious", "master")
|
317
275
|
end
|
318
|
-
|
276
|
+
end
|
319
277
|
end
|
data/test/test_helper.rb
CHANGED
@@ -17,10 +17,9 @@
|
|
17
17
|
#++
|
18
18
|
require "bundler/setup"
|
19
19
|
require "minitest/autorun"
|
20
|
-
require "em/minitest/spec"
|
21
|
-
require "eventmachine"
|
22
20
|
require "libdolt/view"
|
23
21
|
require "tiltout"
|
22
|
+
require "stringio"
|
24
23
|
|
25
24
|
Bundler.require(:default, :test)
|
26
25
|
|
@@ -48,4 +47,25 @@ module Dolt
|
|
48
47
|
renderer
|
49
48
|
end
|
50
49
|
end
|
50
|
+
|
51
|
+
class FakeProcess
|
52
|
+
attr_reader :stdin, :stdout, :stderr
|
53
|
+
|
54
|
+
def initialize(status, stdin = nil, stdout = nil, stderr = nil)
|
55
|
+
@status = status
|
56
|
+
@stdin = stream(stdin)
|
57
|
+
@stdout = stream(stdout)
|
58
|
+
@stderr = stream(stderr)
|
59
|
+
end
|
60
|
+
|
61
|
+
def success?; @status == 0; end
|
62
|
+
def exit_code; @status; end
|
63
|
+
def exception; Exception.new; end
|
64
|
+
|
65
|
+
private
|
66
|
+
def stream(ios)
|
67
|
+
return ios if !ios.nil? && !ios.is_a?(String)
|
68
|
+
StringIO.new(ios || "")
|
69
|
+
end
|
70
|
+
end
|
51
71
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libdolt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.16.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,72 +9,24 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-05-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: rugged
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '1.0'
|
22
|
-
type: :runtime
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '1.0'
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: when
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ~>
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
38
|
-
type: :runtime
|
39
|
-
prerelease: false
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: em_pessimistic
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ~>
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0.1'
|
54
|
-
type: :runtime
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0.1'
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: em_rugged
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ~>
|
19
|
+
- - '='
|
68
20
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
21
|
+
version: 0.17.0.b6
|
70
22
|
type: :runtime
|
71
23
|
prerelease: false
|
72
24
|
version_requirements: !ruby/object:Gem::Requirement
|
73
25
|
none: false
|
74
26
|
requirements:
|
75
|
-
- -
|
27
|
+
- - '='
|
76
28
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
29
|
+
version: 0.17.0.b6
|
78
30
|
- !ruby/object:Gem::Dependency
|
79
31
|
name: tzinfo
|
80
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -171,22 +123,6 @@ dependencies:
|
|
171
123
|
- - ~>
|
172
124
|
- !ruby/object:Gem::Version
|
173
125
|
version: '2.0'
|
174
|
-
- !ruby/object:Gem::Dependency
|
175
|
-
name: em-minitest-spec
|
176
|
-
requirement: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
|
-
requirements:
|
179
|
-
- - ~>
|
180
|
-
- !ruby/object:Gem::Version
|
181
|
-
version: '1.1'
|
182
|
-
type: :development
|
183
|
-
prerelease: false
|
184
|
-
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
none: false
|
186
|
-
requirements:
|
187
|
-
- - ~>
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
version: '1.1'
|
190
126
|
- !ruby/object:Gem::Dependency
|
191
127
|
name: rake
|
192
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -265,9 +201,11 @@ files:
|
|
265
201
|
- Readme.md
|
266
202
|
- lib/libdolt.rb
|
267
203
|
- lib/libdolt/disk_repo_resolver.rb
|
204
|
+
- lib/libdolt/git.rb
|
268
205
|
- lib/libdolt/git/archiver.rb
|
269
206
|
- lib/libdolt/git/blame.rb
|
270
207
|
- lib/libdolt/git/commit.rb
|
208
|
+
- lib/libdolt/git/process.rb
|
271
209
|
- lib/libdolt/git/repository.rb
|
272
210
|
- lib/libdolt/git/submodule.rb
|
273
211
|
- lib/libdolt/git/tree.rb
|