libdolt 0.15.0 → 0.16.0
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/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
|